Notepad++ 공급망 공격: 업데이트 서버가 악성코드 배포지가 된 6개월
2025년 6개월간 Notepad++ 업데이트 인프라를 장악한 중국 국가지원 해커의 공급망 공격 분석. 3개 감염 체인, Chrysalis 백도어, IoC, MITRE ATT&CK 매핑 포함.
2025년 6개월간 Notepad++ 업데이트 인프라를 장악한 중국 국가지원 해커의 공급망 공격 분석. 3개 감염 체인, Chrysalis 백도어, IoC, MITRE ATT&CK 매핑 포함.
2026년 2월 2일, Notepad++ 개발자 Don Ho가 공식 성명을 발표했다. 2025년 6월부터 12월까지 약 6개월간 Notepad++의 업데이트 인프라가 중국 국가지원 해커 그룹에 의해 침해되었다는 내용이었다.
공격자는 호스팅 업체를 침해하여 업데이트 트래픽을 가로챈 뒤, 특정 타겟에게만 악성코드를 전달했다. Kaspersky GReAT은 최소 3개의 서로 다른 감염 체인을 식별했으며, Rapid7은 이 공격을 중국 연계 APT 그룹 Lotus Blossom의 소행으로 귀속했다.
| 항목 | 내용 |
|---|---|
| 공격 기간 | 2025년 6월 ~ 12월 2일 |
| 공개일 | 2026년 2월 2일 |
| 공격 벡터 | 호스팅 업체 침해 + WinGUP 업데이터 서명 검증 미흡 |
| 배후 | Lotus Blossom(Rapid7) / Violet Typhoon·APT31(Beaumont) |
| 피해 규모 | 약 12대 기기 (베트남, 필리핀, 엘살바도르, 호주) |
| 대상 분야 | 정부기관, 통신, 금융, IT 서비스 |
| 수정 버전 | v8.8.9 (2025년 12월 9일 배포) |
Notepad++ 공급망 공격
Notepad++는 전 세계적으로 가장 많이 사용되는 텍스트 에디터 중 하나다. 개발자, 시스템 관리자, 보안 분석가 모두 사용한다. 공격자 관점에서 Notepad++를 타겟으로 선택한 이유는 명확하다.
이는 2020년 SolarWinds SUNBURST 공격과 유사한 논리다. 신뢰받는 소프트웨어의 업데이트 채널을 장악하면 타겟 조직의 방어 체계를 우회할 수 있다.
공격자는 Notepad++ 웹사이트를 호스팅하는 공유 호스팅 서버를 침해했다. 코드 저장소나 빌드 시스템이 아닌 호스팅 인프라를 노린 것이 핵심이다.
침해된 호스팅 서버를 통해 notepad-plus-plus.org로 향하는 업데이트 트래픽을 선택적으로 악성 서버(45.76.155[.]202 등)로 리디렉션했다. 모든 사용자가 아닌, 타겟 IP 대역의 사용자에게만 악성 업데이트를 전달한 것이다.
2025년 9월 2일, 호스팅 업체가 공유 서버 침해를 차단했다. 그러나 공격자는 이미 내부 서비스 자격증명을 탈취한 상태였다. 이 자격증명으로 12월 2일까지 업데이트 트래픽 리디렉션을 지속했다.
| 시점 | 조치 |
|---|---|
| 2025년 12월 2일 | 공격자 자격증명 접근 차단 |
| 2025년 12월 9일 | v8.8.9 배포 — 다운로드 인스톨러 서명·인증서 검증 추가 |
| 2025년 12월 27일 | v8.9 배포 — 자체 서명 인증서 폐기, GlobalSign 인증서로 전환 |
| 2026년 1월 초 | 보안 연구자 Kevin Beaumont가 공격 사실 공개 |
| 2026년 2월 2일 | Don Ho 공식 성명 발표, 호스팅 업체 변경 완료 |
공격의 핵심은 Notepad++의 자동 업데이트 도구인 WinGUP(Windows Generic Updater Platform) 의 서명 검증 부재였다.
v8.8.9 이전 버전의 WinGUP은 다운로드된 바이너리의 디지털 서명과 인증서를 검증하지 않았다. 네트워크 트래픽을 가로챌 수 있는 공격자라면 누구든 업데이트 바이너리를 교체할 수 있는 구조적 결함이었다.
Kaspersky GReAT은 2025년 7월부터 10월까지 배포된 3개의 서로 다른 감염 체인을 식별했다. 공격자는 4개월에 걸쳐 C2 서버, 다운로더, 최종 페이로드를 지속적으로 교체했다.
실행 흐름:
45.76.155[.]202/update/update.exe에서 악성 NSIS 인스톨러(~1MB) 다운로드whoami && tasklist 실행 후 시스템 정보를 temp[.]sh로 업로드45.77.31[.]210/users/admin에서 Cobalt Strike Beacon 다운로드| 항목 | 값 |
|---|---|
| 배포 URL | 45.76.155[.]202/update/update.exe |
| C2 서버 | 45.77.31[.]210 |
| 최종 페이로드 | Cobalt Strike Beacon |
Chain 1보다 정찰 범위가 확대되었다. whoami, tasklist에 더해 systeminfo, netstat -ano까지 수집했다.
실행 흐름:
%APPDATA%\Adobe\Scripts에 설치alien.ini가 EnumWindowStationsW API를 통해 셸코드 실행cdncheck.it[.]com/users/admin에서 Cobalt Strike Beacon 다운로드| 항목 | 값 |
|---|---|
| 설치 경로 | %APPDATA%\Adobe\Scripts |
| 초기 C2 | cdncheck.it[.]com |
| 후기 C2 | safe-dns.it[.]com |
| 최종 페이로드 | Cobalt Strike Beacon |
가장 발전된 형태의 감염 체인이다. 오픈소스 도구 대신 커스텀 백도어를 사용했다.
실행 흐름:
45.32.144[.]255/update/update.exe에서 NSIS 인스톨러 다운로드BluetoothService.exe로 위장하여 %APPDATA%\Bluetooth\에 설치log.dll DLL 사이드로딩| 항목 | 값 |
|---|---|
| 배포 URL | 45.32.144[.]255/update/update.exe |
| 위장 실행파일 | BluetoothService.exe (Bitdefender) |
| 사이드로딩 DLL | log.dll |
| 최종 페이로드 | Chrysalis 백도어 |
Chrysalis 백도어 기능:
| 기법 ID | 적용 내용 |
|---|---|
| T1195.002 | 호스팅 업체 침해를 통한 업데이트 트래픽 하이재킹 |
| T1574.002 | ProShow, BluetoothService.exe를 이용한 악성 DLL 로딩 |
| T1059.006 | Lua 스크립트를 통한 셸코드 실행 |
| T1082 | systeminfo, whoami로 시스템 정보 수집 |
| T1057 | tasklist로 프로세스 목록 수집 |
| T1049 | netstat -ano로 네트워크 연결 수집 |
| T1105 | curl을 통한 페이로드 다운로드 |
| T1547.001 | 레지스트리 자동실행 등록을 통한 지속성 확보 |
Rapid7은 이 공격을 Lotus Blossom(Billbug, Bronze Elgin, Lotus Panda)의 소행으로 중간 확신(medium confidence) 수준에서 귀속했다. 보안 연구자 Kevin Beaumont는 Violet Typhoon(APT31, Zirconium)으로 귀속했다.
| 항목 | 내용 |
|---|---|
| 그룹명 | Lotus Blossom / Violet Typhoon |
| 국가 | 중국 |
| 주요 타겟 | 정부, 통신, 항공, 핵심 인프라, 미디어 |
| 활동 기간 | 2012년~현재 (장기 활동 APT) |
| 특징 | 공급망 공격, DLL 사이드로딩, 커스텀 백도어 |
Chrysalis 백도어의 코드 패턴이 중국어권 위협 행위자의 특징과 일치한다는 점도 귀속의 근거 중 하나다.
이 공격은 무차별 배포가 아닌 선별적 타겟팅이었다. Kaspersky는 약 12대의 감염 기기를 식별했으며, 다음 조직이 피해를 입었다.
| 대상 | 국가 |
|---|---|
| 정부기관 | 필리핀 |
| 금융기관 | 엘살바도르 |
| IT 서비스 업체 | 베트남 |
| 개인 사용자 | 호주, 베트남 |
대다수의 일반 사용자는 영향을 받지 않았다. 공격자는 타겟 IP 대역을 확인한 후에만 악성 업데이트를 전달했다.
45.76.155[.]202/update/update.exe45.32.144[.]255/update/update.exe95.179.213[.]0/update/update.exe45.77.31[.]210 (Chain 1)cdncheck.it[.]com / safe-dns.it[.]com (Chain 2)api.wiresguard[.]com (Chain 3)api.skycloudcenter[.]com (Chrysalis C2)8e6e505438c21f3d281e1cc257abdbf7223b7f5a (update.exe — Chain 1)ca4b6fe0c69472cd3d63b212eb805b7f65710d33 (alien.ini — Chain 2)f7910d943a013eede24ac89d6388c1b98f8b3717 (log.dll — Chain 3)| 비교 항목 | SolarWinds (2020) | Notepad++ (2025) |
|---|---|---|
| 공격 벡터 | 빌드 시스템 침해 | 호스팅 인프라 침해 |
| 배포 방식 | 악성 업데이트 DLL | 악성 업데이트 EXE |
| 타겟 선별 | IP/도메인 기반 필터링 | IP 기반 선택적 리디렉션 |
| 피해 규모 | 약 18,000개 조직 | 약 12대 기기 |
| 배후 | Russia (SVR) | China (Lotus Blossom) |
규모는 다르지만 공격 구조는 유사하다. 신뢰받는 소프트웨어의 업데이트 채널을 장악하여 타겟에게 악성코드를 전달하는 공급망 공격의 전형적 패턴이다.
Notepad++ 사용자:
조직 보안팀:
공급망 공격 관련
APT 그룹 분석
관련 MITRE ATT&CK 기법
AI 활용 안내 이 글은 AI(Claude)의 도움을 받아 작성되었습니다. 인용된 통계와 사례는 참고 자료에 명시된 출처에 근거하며, 설명을 위한 일부 표현은 각색되었습니다.
면책 조항 본 글은 보안 인식 제고를 위한 교육 목적으로 작성되었습니다. 언급된 공격 기법을 실제로 시도하는 행위는 「정보통신망법」, 「형법」 등에 따라 처벌받을 수 있으며, 본 블로그는 이에 대한 법적 책임을 지지 않습니다.