위협 데이터베이스 멀웨어 글래스웜 멀웨어

글래스웜 멀웨어

새로운 글래스웜(GlassWorm) 악성코드 공격이 소프트웨어 공급망을 적극적으로 노리고 있습니다. 탈취한 GitHub 토큰을 악용하여 수백 개의 저장소에 악성 코드를 삽입하는 방식입니다. 이 공격은 주로 파이썬 기반 프로젝트, 특히 Django 애플리케이션, 머신러닝 연구 코드, Streamlit 대시보드, PyPI 패키지 등을 대상으로 합니다.

이 공격 방식은 겉보기에는 단순하지만 매우 효과적입니다. 난독화된 악성코드가 setup.py, main.py, app.py와 같이 자주 실행되는 파일에 추가됩니다. pip install을 통해 종속성을 설치하거나 손상된 저장소에서 복제한 코드를 실행하는 개발자는 자신도 모르게 악성 페이로드를 활성화하게 됩니다.

조용한 저장소 탈취: ForceMemo 기법

ForceMemo로 불리는 이 캠페인의 진화된 형태는 저장소를 침해하는 은밀한 방법을 도입했습니다. 공격자는 개발자 계정에 접근하여 기존의 흔적을 남기지 않고 저장소를 조작합니다.

공격자는 정상적인 커밋에 악성 코드를 삽입하고 이를 기본 브랜치로 강제 푸시함으로써 원래 커밋의 메타데이터(메시지, 작성자, 타임스탬프 등)를 유지하여 침입 사실을 효과적으로 숨깁니다. 이러한 접근 방식은 풀 리퀘스트나 의심스러운 커밋 기록과 같은 가시적인 단서를 없애 탐지를 훨씬 어렵게 만듭니다.

공격 실행 과정: 자격 증명 탈취부터 페이로드 전달까지

ForceMemo 캠페인은 구조화된 다단계 침입 과정을 따릅니다.

  • 개발자 환경은 처음에 GitHub 토큰을 포함한 민감한 자격 증명을 수집하도록 설계된 GlassWorm 구성 요소를 포함하는 악성 Visual Studio Code 및 Cursor 확장 프로그램을 통해 손상됩니다.
  • 탈취된 자격 증명은 손상된 계정과 관련된 모든 저장소의 Python 파일에 난독화된 Base64로 인코딩된 페이로드를 삽입하는 데 사용됩니다.
  • 내장된 악성코드는 환경 검사를 수행하며, 특히 러시아어 로케일로 구성된 시스템에서는 실행되지 않도록 합니다. 그런 다음 솔라나 블록체인 지갑에 쿼리를 보내 페이로드 전달 URL을 동적으로 가져옵니다.
  • 암호화폐 탈취 및 데이터 유출을 위해 설계된 암호화된 자바스크립트를 포함한 추가 페이로드가 다운로드됩니다.

블록체인 기반 명령 및 제어: 탄력적인 인프라

이 캠페인의 핵심적인 특징은 명령 및 제어(C2) 메커니즘으로 솔라나 블록체인을 활용한다는 점입니다. 공격자들은 기존 서버 대신 특정 지갑 주소와 연결된 거래 메모 필드에 페이로드 URL을 저장합니다.

분석 결과, 주요 지갑과 관련된 활동은 저장소 침해가 관찰되기 몇 달 전인 2025년 11월 27일부터 시작된 것으로 나타났습니다. 해당 지갑은 수십 건의 거래를 처리했으며, 페이로드 위치는 빈번하게, 때로는 하루에 여러 번 업데이트되었습니다. 이러한 분산형 접근 방식은 복원력을 강화하고 차단 노력을 어렵게 만듭니다.

공격 표면 확장: npm과 생태계 간 감염

이번 공격은 파이썬 생태계를 넘어 자바스크립트 공급망까지 확산되었습니다. React Native용 npm 패키지인 react-native-international-phone-number(버전 0.11.8)와 react-native-country-select(버전 0.3.91) 두 개가 일시적으로 감염되어 악성코드가 포함된 채로 배포되었습니다.

이 악성 버전들은 난독화된 자바스크립트를 실행하는 사전 설치 후크를 도입하여 유사한 감염 경로를 시작합니다. 이 멀웨어는 다시 한번 러시아 시스템을 회피하고, 솔라나 지갑을 통해 페이로드 지침을 가져온 다음, 플랫폼별 위협을 배포합니다.

실행은 eval() 또는 Node.js 샌드박싱과 같은 런타임 기술을 사용하여 전적으로 메모리에서 이루어지므로 포렌식 흔적이 최소화됩니다. 또한, 타임스탬프를 로컬에 저장하여 48시간 동안 재감염을 방지하는 지속성 메커니즘이 있습니다.

고급 회피 및 분산 전술

최근 GlassWorm 변종들은 배포 및 은닉 방식이 더욱 정교해졌습니다. 공격자들은 extensionPack 및 extensionDependencies 메커니즘을 이용하여 신뢰할 수 있는 확장 프로그램 생태계를 통해 악성 페이로드를 전이적으로 배포합니다.

이전에도 동일한 위협 행위자가 151개 이상의 GitHub 저장소를 공격하는 캠페인을 벌였는데, 이 캠페인들은 보이지 않는 유니코드 문자를 사용하여 악성 코드를 숨겼습니다. 다양한 난독화 및 전달 전략에도 불구하고, 모든 캠페인은 일관되게 동일한 Solana 기반 인프라를 사용했으며, 이는 통일된 운영 체계를 사용하고 있음을 보여줍니다.

악성 IDE 확장 프로그램: 개발 환경을 표적으로 삼다

이 캠페인은 reditorsupporter.r-vscode-2.8.8-universal이라는 악성 확장 프로그램을 통해 개발 도구에도 침투했으며, 특히 Windsurf IDE를 표적으로 삼고 있습니다. R 언어 지원 플러그인으로 위장한 이 확장 프로그램은 Node.js 기반의 정보 탈취 프로그램을 배포합니다.

설치가 완료되면, 이 확장 프로그램은 블록체인 거래에서 암호화된 페이로드를 가져와 메모리에서 실행하고, 컴파일된 구성 요소를 배포하여 크로미움 기반 브라우저에서 민감한 데이터를 추출합니다. 시스템 시작 시 실행되도록 예약된 작업과 Windows 레지스트리 수정을 통해 지속성을 확보합니다.

이 악성 소프트웨어는 러시아 시스템을 제외하고 개발자 환경을 특별히 표적으로 삼으며, 이는 다른 GlassWorm 변종에서 관찰된 동작과 유사합니다.

규모 및 영향 지표

보안 분석 결과, 이번 공격으로 오픈 소스 생태계의 상당 부분이 손상되었으며, 여러 플랫폼에 걸쳐 433개 이상의 프로젝트가 영향을 받은 것으로 나타났습니다. 여기에는 GitHub 저장소(Python 및 JavaScript), VS Code 확장 프로그램, npm 라이브러리 등이 포함됩니다.

모든 감염 경로는 궁극적으로 자바스크립트 기반 정보 탈취 악성코드의 배포로 수렴하며, 이는 자격 증명 탈취 및 데이터 유출이라는 일관된 최종 목표를 보여줍니다.

  • 433개 이상의 프로젝트 및 패키지가 손상된 것으로 확인되었습니다.
  • GitHub, npm, IDE 확장 프로그램 등 다양한 배포 방식
  • 페이로드 전달을 위한 솔라나 블록체인 인프라의 일관된 사용
  • 모든 변형에서 러시아 시스템이 반복적으로 제외됨

전략적 평가: 새로운 공급망 공격 시대

ForceMemo 캠페인은 소프트웨어 공급망 위협이 크게 고조된 사례입니다. 은밀한 Git 히스토리 조작, 블록체인 기반 C2 인프라, 그리고 다양한 플랫폼에 걸친 감염 경로를 결합한 이 캠페인은 높은 수준의 운영 능력을 보여줍니다.

인프라 재사용과 진화하는 전달 메커니즘은 지속성과 회피 능력을 유지하면서 공격 규모를 확장할 수 있는 적응력 있는 공격자의 존재를 시사합니다. 이러한 고립된 침해에서 조직적이고 다중 생태계에 걸친 침입으로의 전환은 현대 개발 환경과 오픈 소스 커뮤니티가 직면한 위험이 점점 커지고 있음을 보여줍니다.

트렌드

가장 많이 본

로드 중...