해커들은 악성 코드를 숨긴 프로젝트로 GitHub을 채웁니다
사이버 범죄자들은 “보이지 않는” 유니코드 문자를 사용해 악성 코드를 은폐합니다
Aikido Security의 새로운 연구에 따르면 3월 초 GitHub에 스파이 코드가 숨겨진 151개의 프로젝트가 등장했습니다. 악성 패키지는 인간에게는 공백이나 빈 줄처럼 보이는 유니코드 문자를 사용하지만, 일반적인 JavaScript 실행 시 바이트코드로 변환되어 `eval()` 함수에 전달됩니다.
공격 방식
1. 라이브러리 이름
패키지는 “React”나 “Node.js” 같은 유명 상용 솔루션과 동일한 이름을 사용합니다. 이는 개발자들이 실수로 안전하다고 판단하도록 유도합니다.
2. “읽기 쉬운” 코드 + 숨겨진 조각
대부분의 코드는 일반적인 읽기 쉬운 프로그램처럼 보입니다. 내부에는 보이지 않는 문자가 채워진 블록이 존재하며, 수동으로 보면 사라지고 실행 시 활성화됩니다.
3. 테스트 리포지토리
이러한 악성 패키지는 GitHub뿐 아니라 NPM, Open VSX 및 Visual Studio Code 마켓플레이스에서도 발견되었습니다.
왜 눈에 잘 띄지 않는가
- 프로젝트의 변경 사항은 버전 업데이트, 버그 수정, 리팩터링처럼 보입니다.
- 전문가들은 공격자들이 대형 언어 모델을 활용해 코드를 자동으로 변조한다고 보고 있습니다. 이를 통해 수작업 없이 150개 이상의 프로젝트를 빠르게 준비할 수 있습니다.
문자 역사
라틴 알파벳에 대응하는 유니코드 문자는 수십 년 전 시스템에 추가되었습니다. 2024년부터 해커들은 챗봇과 리포지토리에서 악성 요청을 은폐하기 위해 이를 사용해 왔습니다. 기존 정적 분석 도구는 이를 감지하지 못하며, JavaScript 실행 시 작은 디코더만이 실제 바이트코드를 드러냅니다.
개발자에게 권장 사항
1. 종속성 검사 – 외부 라이브러리를 연결하기 전에 소스 코드와 변경 이력을 면밀히 검토합니다.
2. 자동화된 검사 – 리너, “보이지 않는” 문자 스캐너 및 동적 행동 분석 도구를 사용합니다.
3. 업데이트 – 패키지가 다운로드 후 삭제되는 경우를 주시합니다; 이는 숨겨진 위협을 시사할 수 있습니다.
전망
AI가 이 과정에 활용된다면 이러한 공격을 탐지하고 제거하는 것이 점점 더 어려워질 것입니다. 그럼에도 불구하고 소스 코드와 종속성 검증에 대한 의식적인 접근은 여전히 가장 효과적인 방어책입니다.
댓글 (0)
의견을 남겨 주세요. 예의를 지키고 주제에서 벗어나지 말아 주세요.
댓글을 남기려면 로그인