Source: Socket (blog de recherche). L’équipe Threat Research de Socket a identifié neuf paquets NuGet malveillants publiés sous l’alias « shanhai666 » (2023–2024), dont l’un cible les systèmes de contrôle industriels (ICS). Signalés à NuGet le 5 novembre 2025, ils totalisent 9 488 téléchargements et étaient toujours en ligne à la publication.
• Nature de l’attaque: compromission de la chaîne d’approvisionnement via des paquets NuGet fournissant 99% de code fonctionnel pour masquer ~20 lignes de charge malveillante. Techniques incluant typosquatting (notamment « Sharp7Extend » autour de la bibliothèque légitime Sharp7), bundling de bibliothèques légitimes, méthodes d’extension C# pour intercepter les opérations, déclenchement temporel (2027–2028) et exécution probabiliste (20% d’arrêts). Des certificats Microsoft contrefaits et des métadonnées incohérentes d’auteur sont signalés.
• Cibles et impact: paquets visant les principaux moteurs de BDD .NET (SQL Server, PostgreSQL, SQLite) et PLC Siemens S7 via Sharp7Extend. Effets clés: arrêt immédiat du processus (Process.GetCurrentProcess().Kill()) avec 20% de probabilité par opération après une date déclencheur (ou immédiatement pour Sharp7Extend) et, pour les PLC, sabotage silencieux des écritures (80% d’échecs après 30–90 minutes). Risques concrets: plantages fréquents, corruption de données stockées, commandes d’actionneurs non appliquées, paramètres de production non mis à jour, défaillances de sécurité en environnement industriel.
• Détails techniques notables:
- Injection par méthodes d’extension: .Exec() sur commandes SQL et .BeginTran() sur S7Client.
- Arrêt probabiliste: 20% à chaque requête/operation après la date de déclenchement.
- Dates de déclenchement: SQL Server (08/08/2027) ; PostgreSQL/SQLite/SQL Server variante (timestamp Unix 1859127528479 → 29/11/2028 11:18:48.479 UTC). Pour Sharp7Extend, logique inversée: actif immédiatement jusqu’au 06/06/2028.
- Sabotage d’écriture PLC (Sharp7Extend): délai initial aléatoire 30–90 min, puis 80% d’échecs silencieux (retour 0) via ResFliter.fliter(), pseudo-contrôle de configuration « st » en double-DES (clé « uiertysd », IV « 99008855 ») qui échoue et force le repli temporel.
- Couverture fonctionnelle: Repository/Unit of Work, LINQ, pagination, async, ORM par réflexion, logging AOP, batchs — rendant les paquets crédibles et retardant la détection.
• Observations sur l’acteur: alias shanhai666; 12 paquets publiés (9 malveillants, 3 légitimes). Métadonnées d’auteurs divergentes, signature .p7s malformée avec chaîne « shanhai666 ». Indicateurs d’origine chinoise (commentaires/chaînes en chinois, alias), sans confirmation. Les auteurs décrivent une campagne combinant délais étagés (2027–2028), activation immédiate inversée, probabilité d’exécution, double sabotage (arrêt de service et échecs silencieux), et typosquatting ICS.
• IOCs et TTPs 🧩
- IOCs:
- Alias NuGet: shanhai666
- Paquet ICS: Sharp7Extend (typosquat de Sharp7, embarque Sharp7 v1.1.79)
- Méthodes/fonctions: .Exec(), .BeginTran(), ResFliter.fliter(), Process.GetCurrentProcess().Kill()
- Clé de config: AppSettings[“st”] (inexistante) ; double-DES (clé « uiertysd », IV « 99008855 »)
- Dates/horodatages: 08/08/2027, 29/11/2028 11:18:48.479 UTC (1859127528479), 06/06/2028
- Fichiers/artefacts: .signature.p7s malformé; chaînes/commentaires en chinois
- Téléchargements: 9 488; signalement à NuGet le 05/11/2025 (packages encore en ligne à la publication)
- TTPs (MITRE ATT&CK):
- T1195.002 — Supply Chain Compromise: Compromise Software Supply Chain
- T1036.005 — Masquerading: Match Legitimate Name or Location
- T1489 — Service Stop
- T1565.001 — Data Manipulation: Stored Data Manipulation
Cet article est une analyse de menace détaillant une campagne de supply chain sur NuGet, décrivant techniques, cibles, effets, IOCs et TTPs afin d’informer et documenter les risques.
🧠 TTPs et IOCs détectés
TTP
[‘T1195.002 — Supply Chain Compromise: Compromise Software Supply Chain’, ‘T1036.005 — Masquerading: Match Legitimate Name or Location’, ‘T1489 — Service Stop’, ‘T1565.001 — Data Manipulation: Stored Data Manipulation’]
IOC
{‘alias_nuget’: ‘shanhai666’, ‘paquet_ics’: ‘Sharp7Extend’, ‘methodes_fonctions’: [’.Exec()’, ‘.BeginTran()’, ‘ResFliter.fliter()’, ‘Process.GetCurrentProcess().Kill()’], ‘cle_de_config’: {‘appsettings’: ‘st’, ‘double_des’: {‘key’: ‘uiertysd’, ‘iv’: ‘99008855’}}, ‘dates_horodatages’: [‘08/08/2027’, ‘29/11/2028 11:18:48.479 UTC (1859127528479)’, ‘06/06/2028’], ‘fichiers_artefacts’: [’.signature.p7s malformé’, ‘chaînes/commentaires en chinois’], ’telechargements’: ‘9\u202f488’, ‘signalement_nuget’: ‘05/11/2025’}
🔗 Source originale : https://socket.dev/blog/9-malicious-nuget-packages-deliver-time-delayed-destructive-payloads