StoatWaffle Malware
북한발 위협 집단인 '전염성 인터뷰(Contagious Interview)' 또는 '워터플럼(WaterPlum)'으로 추적되는 이 공격은 '스토트와플(StoatWaffle)'이라는 정교한 악성코드 계열과 연관되어 있습니다. 이 공격은 특히 마이크로소프트 비주얼 스튜디오 코드(VS Code) 프로젝트를 악용하여 개발자를 표적으로 삼고 있으며, 이는 소프트웨어 개발 생태계 내 공급망 공격이 위험하게 진화하고 있음을 보여줍니다.
목차
VS Code를 무기화하기: tasks.json의 악용
이번 공격 캠페인의 주목할 만한 특징은 VS Code의 tasks.json 설정 파일을 악용한 것입니다. 2025년 12월부터 공격자들은 'runOn: folderOpen' 설정을 이용하여 프로젝트 폴더가 열릴 때마다 악성 작업을 자동으로 실행해 왔습니다.
이 기법은 명시적인 사용자 상호 작용 없이도 일관된 실행을 보장합니다. 악성 작업은 Vercel에서 호스팅되는 원격 웹 애플리케이션에서 페이로드를 가져오며, 기본 운영 체제와는 독립적으로 작동합니다. 분석 환경은 주로 Windows에 초점을 맞추지만, 공격 논리는 플랫폼에 관계없이 동일하게 유지됩니다.
Node.js를 이용한 다단계 페이로드 전달
실행되면 악성 프로그램은 구조화된 다단계 감염 과정을 시작합니다.
- 페이로드는 호스트 시스템에 Node.js가 설치되어 있는지 여부를 확인합니다.
- Node.js가 설치되어 있지 않으면 공식 소스에서 다운로드되어 자동으로 설치됩니다.
- 다운로더 구성 요소가 실행되어 주기적으로 원격 서버에 접속합니다.
- 이 다운로더는 추가 페이로드를 다운로드하는데, 이 페이로드는 Node.js 코드로 실행되어 감염 사슬을 여러 단계에 걸쳐 이어갑니다.
이러한 계층적 접근 방식은 지속성을 강화하고 보안 도구에 의한 탐지를 어렵게 만듭니다.
StoatWaffle 내부: 모듈형 악성코드 기능
StoatWaffle은 Node.js 기반의 모듈형 프레임워크로 설계되어 여러 악성 구성 요소를 유연하게 배포할 수 있습니다. 주요 모듈은 다음과 같습니다.
Credential Stealer : Chromium 기반 브라우저와 Mozilla Firefox에서 저장된 자격 증명 및 확장 프로그램 데이터와 같은 민감한 데이터를 추출합니다. macOS 시스템에서는 iCloud Keychain 데이터베이스도 공격 대상으로 삼습니다. 수집된 모든 데이터는 명령 및 제어(C2) 서버로 유출됩니다.
원격 접속 트로이목마(RAT) : C2 서버와 지속적인 통신을 설정하여 공격자가 원격으로 명령을 실행할 수 있도록 합니다. 파일 시스템 탐색, 명령 실행, 파일 업로드, 키워드 기반 파일 검색 및 자체 종료 등의 기능을 제공합니다.
공격 표면 확장 : 오픈소스 생태계 악용
이번 캠페인은 오픈 소스 플랫폼과 개발자 워크플로우를 표적으로 삼는 광범위한 공격 패턴과 맥락을 같이합니다. 주요 공격 사례는 다음과 같습니다.
- 파이썬 기반 백도어인 PylangGhost가 악성 npm 패키지를 통해 배포되었으며, 이는 해당 경로를 통한 첫 번째 확산 사례입니다.
- 폴린라이더(PolinRider) 캠페인은 수백 개의 GitHub 저장소에 난독화된 자바스크립트를 삽입하여 업데이트된 비버테일(BeaverTail) 악성코드 변종을 배포했습니다.
- Neutralinojs GitHub 조직 내 저장소가 관리자 권한을 가진 기여자 계정을 탈취하여 공격받았습니다. 악성 코드가 강제로 푸시되어 Tron, Aptos 및 Binance Smart Chain 네트워크의 블록체인 거래에 포함된 암호화된 페이로드를 추출했습니다.
이러한 시나리오의 피해자들은 대개 손상된 VS Code 확장 프로그램이나 악성 npm 패키지를 통해 감염되었습니다.
사회공학적 전술: 가짜 면접 및 개발자 타겟팅
초기 접근은 대개 매우 그럴듯한 채용 사기를 통해 이루어집니다. 공격자들은 합법적인 기술 면접 과정을 가장하여 대상자들이 GitHub, GitLab 또는 Bitbucket과 같은 플랫폼에 호스팅된 악성 코드를 실행하도록 유도합니다.
이러한 공격 전략은 암호화폐 및 웹3 분야의 창업자, CTO, 수석 엔지니어 등 핵심 인물을 집중적으로 노립니다. 이들은 중요한 인프라와 디지털 자산에 접근할 수 있는 권한을 갖고 있는 경우가 많습니다. 실제로, AllSecure.io의 창업자를 대상으로 조작된 면접 시나리오를 이용한 공격 시도 사례도 보고된 바 있습니다.
공격자들은 신뢰도를 높이기 위해 링크드인에 가짜 회사 프로필을 만들고 합법적인 것처럼 보이는 깃허브 계정을 운영합니다. 또한, 악성코드를 기술 평가 과제로 위장하여 배포하는 소셜 엔지니어링 기법인 클릭픽스(ClickFix)를 사용하는 경우도 있습니다.
전략적 목표: 암호화폐 절도를 넘어
암호화폐 절도가 주된 동기로 보이지만, 더 광범위한 의도는 공급망 침해 및 기업 스파이 행위에까지 미칩니다. 공격자들은 개발자 환경에 침투하여 악성 코드를 하위 소프트웨어 프로젝트에 확산시키거나 조직의 민감한 데이터에 접근할 기회를 얻습니다.
VS 코드 보안 강화
VS Code 작업의 악용 사례에 대응하여 Microsoft는 중요한 보안 강화 조치를 도입했습니다.
- 2026년 1월 업데이트(버전 1.109)에서는 task.allowAutomaticTasks 설정이 도입되었으며, 이 설정은 tasks.json에 정의된 작업의 자동 실행을 방지하기 위해 기본적으로 비활성화되어 있습니다.
- 이 설정은 작업 공간 수준에서 재정의할 수 없으므로 악성 저장소가 사용자가 정의한 보안 설정을 우회하는 것을 방지합니다.
- 2026년 2월에 출시된 버전 1.110을 포함한 후속 업데이트에서는 새로 열린 작업 공간에서 자동 실행 작업이 감지될 때 2차 경고 메시지가 추가되어 작업 공간 신뢰가 부여된 후에도 사용자의 주의를 강화했습니다.
결론: 개발자 보안에 대한 위협이 증가하고 있습니다
StoatWaffle 캠페인은 공격자의 전략이 크게 변화하여 개발 환경과 신뢰할 수 있는 워크플로에 집중하고 있음을 보여줍니다. 기술적 취약점을 악용하는 것과 정교한 사회공학적 기법을 결합하여, 공격자들은 합법적인 활동과 악의적인 활동 사이의 경계를 모호하게 만들고 있으며, 이는 소프트웨어 개발 수명주기 전반에 걸쳐 경계를 강화해야 할 필요성을 강조합니다.