Aller au contenu
Beveiligingsnieuws

NullReceiver : des paquets npm trafiqués cachent un IP C2

NullReceiver trojanized npm

Des chercheurs en cybersécurité ont mis au jour une évolution de techniques de commande et contrôle (C2) basées sur la blockchain. Leur constat : des paquets npm malveillants, identifiés comme bianira-ui et fluid-type-ui, utilisent une méthode surnommée NullReceiver paquets npm pour dissimuler l’adresse IP du serveur C2 dans une adresse Ethereum « fictive ».

Ce mécanisme, observé dans deux librairies publiées en juillet 2026, illustre comment des acteurs malveillants affinent leurs méthodes pour réduire la visibilité et compliquer l’analyse côté défense. À ce stade, les packages ne sont plus disponibles au téléchargement sur npm, mais les statistiques indiquent des téléchargements avant retrait.

Une technique C2 dissimulée dans une adresse Ethereum

Le cœur de l’approche repose sur une variante de EtherHiding, une technique rendue publique en 2023. L’idée générale consiste à intégrer du code ou des informations utiles dans le contexte d’une transaction blockchain.

Avec NullReceiver, l’objectif est plus précis : l’IP du serveur C2 n’est plus simplement « cachée » dans des données de transaction ou un contrat intelligent, mais encodée directement dans les octets d’une adresse de destination utilisée lors d’un transfert Ethereum à valeur nulle.

Concrètement, la transaction est conçue pour être minimaliste : elle ne porte pas de champ de payload exploitable, et la destination n’a pas vocation à contenir une logique de contrat. L’adresse n’est là que comme support d’encodage.

NullReceiver : comment fonctionne la récupération de l’IP C2

Selon l’analyse rapportée par les chercheurs, les bibliothèques malveillantes s’appuient sur une séquence d’actions relativement courte, exécutée sur la machine victime.

  • Le code récupère d’abord un wallet d’attaquant codé en dur.
  • Il recherche ensuite la transaction de sortie la plus récente associée à ce wallet.
  • À partir de cette transaction, il lit l’adresse de destination (« To »).
  • Il décode l’IP C2 à partir des octets de cette adresse, en convertissant les premiers octets (en hexadécimal) vers leur valeur numérique.
  • Enfin, il établit une connexion vers l’IP décodée.

Pour donner un exemple issu des observations : le wallet recherché est indiqué avec une valeur hexadécimale dédiée, et l’IP récupérée apparaît sous la forme 166.88.134[.]62. Les chercheurs indiquent aussi que la destination « To » des transactions observées partage un préfixe constant, tout en portant des octets supplémentaires qui correspondent à une chaîne ASCII.

Pourquoi cette variante est perçue comme plus difficile à détecter

Une différence clé entre EtherHiding et NullReceiver tient à la manière dont la défense peut repérer des « traces » récurrentes.

Dans EtherHiding, l’approche nécessite une adresse de destination fixe et publiquement identifiable. Dès lors, les systèmes de détection peuvent suivre des transactions successives révélant progressivement l’élément codé (adresse C2, script, ou autre contenu) à chaque exécution, moyennant l’apparition de nouvelles transactions accompagnées de frais de gas.

Avec NullReceiver paquets npm, la destination est non réutilisée. En pratique, chaque recherche s’appuie sur une adresse de destination « jetable » : elle sert d’enveloppe pour encoder quelques octets, puis disparaît. Les défenseurs n’ont donc plus un point d’observation stable à surveiller.

Autre facteur mis en avant : le caractère très minimal de la transaction. Les chercheurs expliquent que la partie « calldata » peut coûter du gas proportionnellement au nombre d’octets. Ici, la forme retenue est décrite comme plus « vide », car le transfert est conçu pour ne contenir rien de supplémentaire à classifier.

Des paquets npm trafiqués retirés, mais déjà téléchargés

Les deux librairies identifiées — bianira-ui et fluid-type-ui — ont été publiées à la fin du mois de juillet 2026. L’article indique que ces packages ont ensuite été retirés et ne sont plus disponibles pour téléchargement sur npm.

Malgré cela, des statistiques montrent qu’ils ont été téléchargés « quelques centaines de fois » depuis leur publication :

  • bianira-ui : 109 téléchargements
  • fluid-type-ui : 587 téléchargements

Ces chiffres suggèrent que des installations ont pu avoir lieu avant la désactivation. Les chercheurs précisent également les identités d’utilisateurs npm qui ont publié ces paquets.

Pas de contrat, pas de données de payload : extraction côté JavaScript

Un point important concerne le rôle de la blockchain et la manière dont les bibliothèques malveillantes exploitent la transaction.

D’après l’analyse, les paquets identifiés ne font appel à aucun contrat intelligent dans le processus. Ils ne déposent pas non plus de contenu dans le champ calldata des transactions utilisées.

À la place, la logique malveillante est portée par des librairies JavaScript qui :

  • consultent le wallet d’attaquant,
  • récupèrent la destination de la transaction la plus récente,
  • effectuent un décodage des premiers octets de l’adresse pour reconstituer l’IP,
  • puis initient une connexion vers ce nouvel hôte.

Les défenseurs et les équipes de sécurité applicative peuvent y voir un signal : l’emplacement « blockchain » n’est pas un exécuteur de contrat, mais un réservoir de données pour former une information nécessaire au C2.

Lien possible avec des campagnes de désinformation et de déploiement

Le rapport relie cette nouvelle évolution à des acteurs attribués à des groupes nord-coréens. Il mentionne aussi le contexte d’une campagne de longue durée visant des cibles via un faux parcours d’entretien, avec l’objectif d’amener les victimes à exécuter un code menant au déploiement de logiciels malveillants.

Cette mise en perspective sert surtout à rappeler que la chaîne d’attaque ne se limite pas au « moment npm ». Les auteurs cherchent à combiner des mécanismes d’accès initial avec des méthodes de contrôle durable et plus difficiles à neutraliser.

Ce que cela change pour la défense

Pour les équipes de sécurité, NullReceiver paquets npm renforce l’idée que la détection des C2 ne peut pas reposer uniquement sur des marqueurs simples et stables (par exemple une adresse de destination fixe ou un schéma de transaction constant).

Les éléments à surveiller peuvent inclure :

  • la présence de librairies npm suspectes ou déjà retirées,
  • des comportements où une application JavaScript interroge des informations liées à des wallets et des transactions récentes,
  • des chaînes de traitement qui transforment des octets d’adresses en valeurs réseau (comme une IP),
  • des indicateurs de communication vers des IP construites à partir de données blockchain.

Autrement dit, l’analyse doit se déplacer vers le flux d’exécution (ce que le code fait) et vers la chaîne de décodage (comment l’information est reconstituée), plutôt que vers un seul type de transaction repérable à l’identique.

Conclusion

Le cas NullReceiver paquets npm montre une nouvelle étape dans l’utilisation de la blockchain pour masquer l’infrastructure de commande et contrôle. En encodant l’IP C2 dans les octets d’une adresse Ethereum de destination, et en évitant la réutilisation d’une cible fixe, les auteurs compliquent le travail des analystes qui comptaient sur des « signatures » transactionnelles récurrentes.

Même si les paquets identifiés ne sont plus disponibles sur npm, leur diffusion passée rappelle l’importance de surveiller les dépendances, d’analyser le comportement des scripts et de traiter rapidement toute librairie suspecte.

Source: https://thehackernews.com/2026/08/trojanized-npm-packages-decode-c2-ip.html