보이지 않는 코드, GitHub를 노린 공급망 공격

by DD
2개월 전
조회수 6

유니코드 문자(Unicode characters)를 활용하여 코드 내에 숨겨진 악성 코드를 삽입하는 공급망 공격이 발생함

공격은 Private Use Area에 정의된 문자를 사용하여 코드 검토 및 정적 분석을 회피함

JavaScript 인터프리터(JavaScript interpreter)는 해당 문자를 실행 가능한 코드로 변환하여 악성 행위를 수행함

GitHub, npm, VS Code 마켓플레이스 등 다양한 플랫폼에서 악성 패키지(Malicious Packages)가 발견됨

유니코드 문자 인코딩 기법의 기술적 분석

공격자들은 Private Use Area(PUA)에 정의된 유니코드 문자를 사용하여 악성 코드를 숨겼다. 기술적으로 보면, 이 문자들은 사람이 보기에는 공백으로 보이지만, JavaScript 인터프리터(JavaScript interpreter)는 이를 실행 가능한 코드로 해석한다. 특히, `eval()` 함수를 사용하여 디코딩된 페이로드를 실행하는 방식은 코드 난독화(Obfuscation)의 전형적인 예시이다. 이러한 기법은 정적 분석 도구(Static Analysis Tools)를 우회하여 탐지를 어렵게 만든다. ⚠️

공격 벡터(Attack Vector) 및 페이로드(Payload) 분석

공격에 사용된 악성 코드는 솔라나(Solana)를 통해 토큰, 자격 증명, 비밀 정보를 탈취하는 것으로 나타났다. 실제 사례로는, `s()` 함수를 통해 디코딩된 페이로드가 `eval()` 함수에 전달되어 실행되는 구조를 가진다. 이 페이로드는 2단계 스크립트(Second-stage script)를 실행하여 추가적인 악성 행위를 수행한다. 이러한 공격은 공급망 공격(Supply-chain attack)의 전형적인 특징을 보여준다.

패키지 검증 및 보안 강화 방안

가장 효과적인 방어 전략은 패키지 및 종속성을 프로젝트에 통합하기 전에 철저히 검사(Careful Inspection)하는 것이다. 특히, 패키지 이름의 오타(Typos)를 확인하고, 의심스러운 LLM 사용 여부를 파악해야 한다. AI 환각(Hallucination)을 악용한 공격이 증가할 가능성이 있으므로, 개발자는 정적 분석(Static Analysis)동적 분석(Dynamic Analysis)을 병행하여야 한다. ⚠️

공격의 확산 및 영향

GitHub, npm, VS Code 마켓플레이스 등 다양한 플랫폼에서 악성 패키지가 발견되었으며, 이는 공격의 광범위한 확산을 시사한다. 특히, 삭제된 패키지를 포함하면 실제 피해 규모는 더욱 클 것으로 예상된다. 이러한 공격은 개발자 생산성(Developer Productivity)에 심각한 영향을 미치며, 데이터 격리 아키텍처(Data Isolation Architecture)데이터 미저장 정책(Zero-Retention Policy)과 같은 보안 전략의 중요성을 강조한다.

Supply-chain attack using invisible code hits GitHub and other repositories

댓글 0

첫 번째 댓글을 남겨보세요!