COMMENTS (0)
댓글은 익명으로 작성되며, 삭제 비밀번호를 설정하면 본인만 삭제할 수 있습니다. 비밀번호를 설정하지 않은 댓글은 누구나 삭제할 수 있습니다.
2026년 5월 26일 CrowdStrike·Google·Shadowserver가 GlassWorm 봇넷 C2 인프라를 동시 차단했다. 개발자 3만 5,800명 감염, Solana 블록체인·BitTorrent DHT 악용 공급망 공격 전말.
댓글은 익명으로 작성되며, 삭제 비밀번호를 설정하면 본인만 삭제할 수 있습니다. 비밀번호를 설정하지 않은 댓글은 누구나 삭제할 수 있습니다.
2026년 5월 26일 14:00 UTC. CrowdStrike, Google, Shadowserver Foundation이 동시에 신호를 보냈다. GlassWorm 봇넷의 C2 인프라를 구성하는 4개 채널이 일제히 차단됐다. 2025년 10월부터 7개월에 걸쳐 개발자 생태계를 파고든 이 봇넷은 Solana 블록체인과 BitTorrent DHT를 C2 통신에 활용하며 기존 네트워크 탐지 도구를 우회해 왔다. 1차 웨이브에서만 약 3만 5,800명의 개발자가 감염됐고, 300개 이상의 GitHub 리포지터리가 오염됐다.
GlassWorm이 일반 사용자 대신 소프트웨어 개발자를 표적으로 삼은 이유는 공급망 전략에 있다. 개발자 한 명을 감염시키면 그가 관리하는 패키지를 통해 수천 명의 최종 사용자에게 악성코드를 전파할 수 있다. 소스 코드 리포지터리, 클라우드 플랫폼, CI/CD 파이프라인, 패키지 레지스트리를 동시에 접근할 수 있는 개발자는 공급망 공격의 이상적인 진입점이다.
보안 기업 Koi가 VSCode와 OpenVSX 마켓플레이스에서 의심 확장 프로그램을 처음 식별한 것은 2025년 10월이었다. 이후 캠페인은 GitHub, npm, PyPI로 확장됐으며, 2026년 3월 단일 캠페인에서만 400개 이상의 소프트웨어 아티팩트가 오염됐다.
GlassWorm의 첫 공격 벡터는 OpenVSX와 VS Code 마켓플레이스의 악성 확장 프로그램이었다. 확인된 악성 확장 프로그램에는 quartz.quartz-markdown-editor, oorzc.ssh-tools, oorzc.i18n-tools-plus, oorzc.mind-map, oorzc.scss-to-css-compile이 포함됐다. 일부는 "슬리퍼" 형태로 동작하며 배포 초기에는 정상 기능을 수행하다 일정 시간이 지난 후 페이로드를 실행했다. 총 73개의 슬리퍼 확장이 확인됐다.
개발자 기기가 감염되면 악성코드는 VS Code 스토리지, git credentials 파일, 로컬 환경 변수에서 GitHub 토큰을 탈취한다. 탈취한 자격증명으로 피해자의 리포지터리에 강제 푸시(force-push)를 수행해 악성 코드를 심었다. npm 생태계에서는 주간 다운로드 약 2만 회의 react-native-country-select와 1만 회의 react-native-international-phone-number가 오염됐다.
페이로드는 세 겹의 난독화를 적용했다. 먼저 AES로 핵심 코드를 암호화하고, 그 위에 Unicode 변형 선택자를 조합해 코드 에디터에서 시각적으로 보이지 않도록 감쌌다. XOR 복호화 키 134와 고유 코드 마커 lzcdrtfxyqiplpd가 샘플 식별에 활용됐다.
GlassWorm C2 인프라의 핵심 설계 원칙은 탄력성이었다. 단일 C2 서버 대신 4개의 독립적인 채널을 병렬로 운용해, 하나가 차단돼도 나머지 채널로 즉시 전환할 수 있게 했다. 블록체인과 P2P 네트워크는 명령을 직접 전달하는 서버가 아니라, 실제 서버 주소를 숨기는 리졸버 레이어로 동작했다. 기존 네트워크 방어 도구가 Solana 트랜잭션이나 BitTorrent DHT 쿼리를 정상 트래픽으로 분류한다는 점을 역이용한 구조다.
| 채널 | 방식 | 역할 |
|---|---|---|
| Solana 블록체인 | 트랜잭션 메모 필드에 C2 주소 인코딩 | 검열 저항 |
| BitTorrent DHT | 하드코딩된 공개키로 설정 데이터 쿼리 | 분산형 내성 |
| Google Calendar | 이벤트 제목에 Base64 C2 경로 삽입 | 정상 서비스 위장 |
| 상용 VPS | 페이로드 전달용 직접 서버 연결 | 고속 전달 |
최종 페이로드 GlassWormRAT은 WebSocket 기반 JavaScript RAT으로, Node.js 환경에서 실행된다. 주요 기능은 정보 탈취(웹 브라우저 데이터, 개발자 자격증명, 암호화폐 지갑), SOCKS 프록시 배포, 숨겨진 VNC 서버 설치, 임의 명령 실행이었다. SOCKS 프록시와 VNC 서버는 감염된 개발자 기기를 내부망 피벗 거점으로 전환하는 기능으로, 이는 곧 그 기기가 접근할 수 있는 CI/CD 파이프라인과 클라우드 환경까지 공격 범위가 확장됨을 의미한다. 악성 Chrome 확장을 설치해 스크린샷, 키입력, 클립보드 데이터를 수집하는 기능도 포함됐다.
러시아 귀속 근거는 두 가지다. 악성코드가 실행 초기 시스템 로케일을 확인해 러시아어권 CIS 국가이면 자동 종료하며, 코드 내에 러시아어 주석이 존재한다. CrowdStrike는 이 지표들을 기반으로 러시아 기반 위협 행위자로 귀속했다.
작전의 핵심은 동시성이었다. 4개 채널 중 하나라도 먼저 차단되면 봇넷이 나머지로 즉시 전환할 수 있기 때문이다. CrowdStrike Counter Adversary Operations 팀은 Google, Shadowserver Foundation과 정확히 14:00 UTC에 모든 채널을 동시 차단했다.
차단과 동시에 CrowdStrike는 감염 기기들의 C2 비콘 트래픽을 자사 IP 164.92.88[.]210으로 리다이렉션해 피해 규모를 파악했다. 봇넷 운영자들은 C2 서버에 대한 접근과 새로운 페이로드 전달 능력을 동시에 잃었다.
2026년 5월 26일 작전은 GlassWorm의 탄력성 있는 C2 인프라를 무력화했지만, 동시에 그 설계가 얼마나 효과적이었는지를 역으로 증명했다. 블록체인과 P2P 프로토콜을 C2 인프라에 통합하는 설계는 기존 네트워크 방어 도구의 맹점을 정확히 파고들었으며, 단일 기관이 아닌 3개 조직의 공조 없이는 차단이 불가능한 구조였다. 이 사실이 입증된 이상, 다른 위협 행위자들이 동일한 전략을 채택할 유인이 생겼다.
국내 모바일 앱 개발 팀도 React Native와 npm을 일상적으로 사용하며, OpenVSX 생태계를 개발 환경에 통합한 곳이 적지 않다. GlassWorm이 무력화됐지만, 동일한 공급망 공격 원리는 국내 개발 환경에도 그대로 적용될 수 있다는 점에서 이 사건은 주목할 만하다.
AI 활용 안내 이 글은 AI(Claude)의 도움을 받아 작성되었습니다. 인용된 통계와 사례는 참고 자료에 명시된 출처에 근거하며, 설명을 위한 일부 표현은 각색되었습니다.
면책 조항 본 글은 보안 인식 제고를 위한 교육 목적으로 작성되었습니다. 언급된 공격 기법을 실제로 시도하는 행위는 「정보통신망법」, 「형법」 등에 따라 처벌받을 수 있으며, 본 블로그는 이에 대한 법적 책임을 지지 않습니다.