Retour au blog
CVEsupply chainnpmtechnique

Ver npm sur les packages de mailing : quand un client MCP « postmark » exfiltre discrètement vos emails transactionnels

Publié le 2026-07-266 min de lectureCleanIssue

> En bref : Un package npm de mailing transactionnel très utilisé (plusieurs millions de téléchargements hebdomadaires) a été compromis via le vol des identifiants npm d'un mainteneur. La version malveillante ajoute une ligne de code qui place en copie cachée (BCC) chaque email envoyé via le package vers une adresse contrôlée par l'attaquant, avant de se retirer d'elle-même du code après quelques jours pour brouiller les pistes. Les applications qui envoient des bulletins de salaire, des factures ou des liens de réinitialisation de mot de passe par email via ce package ont potentiellement exfiltré ces documents en clair pendant la fenêtre de compromission.

Pourquoi ça vous concerne directement

Si votre SaaS RH ou paie envoie des bulletins de salaire, des confirmations de virement ou des liens magiques de connexion par email, il y a de fortes chances que ce soit via une librairie tierce plutôt qu'un serveur SMTP fait maison. C'est exactement la surface visée ici : pas votre code, pas votre infrastructure, mais une dépendance que vous avez ajoutée un jour avec npm install et jamais revérifiée depuis.

Le scénario est particulièrement pervers pour les emails RH : un bulletin de salaire contient nom, IBAN, montant net, parfois numéro de sécurité sociale. Un email de réinitialisation de mot de passe donne un accès direct au compte. Les deux sont des cibles de choix, et les deux transitent typiquement par ce genre de package.

Comment l'attaque a fonctionné

  • Vol de compte mainteneur. L'attaquant a obtenu les identifiants npm du mainteneur principal via un email de phishing imitant une alerte de sécurité npm officielle (ironie du sort).
  • Publication d'une version piégée. Une nouvelle version mineure du package est publiée, avec un changelog anodin ("fix: minor typing issues").
  • La porte dérobée. Le code ajouté est minimal : avant l'envoi de chaque email, il ajoute une adresse en BCC codée en dur, encodée en base64 pour échapper aux scans automatiques basiques.
  • Auto-nettoyage. Après 96 heures, une nouvelle version « propre » est publiée automatiquement pour faire disparaître la backdoor du code source, tout en laissant les applications qui n'ont pas re-déployé depuis vulnérables tant qu'elles n'ont pas explicitement fixé leur version.
  • Détection. C'est un client qui a remarqué des bounces suspects vers un domaine inconnu dans ses logs SMTP qui a donné l'alerte, six jours après la publication initiale.
  • Ce qui rend cette attaque difficile à détecter

    Contrairement à un vol de clé d'API classique qui génère du trafic sortant anormal facilement repérable, cette attaque ne fait que modifier légèrement un flux déjà légitime : l'envoi d'emails. Le volume de trafic SMTP ne change presque pas. Aucun nouveau domaine n'apparaît dans vos logs applicatifs — seulement dans l'en-tête BCC de chaque email, invisible sans inspection manuelle du contenu envoyé.

    Ce qu'il faut vérifier maintenant

  • Auditez vos dépendances de mailing. Listez tous les packages utilisés pour l'envoi d'emails transactionnels (mailing, templating, SMTP wrappers) et vérifiez leur historique de publication récent sur npm.
  • Verrouillez vos versions. Utilisez des lock files stricts (package-lock.json avec npm ci, jamais npm install en production) pour éviter qu'une mise à jour automatique introduise une version compromise.
  • Inspectez vos logs SMTP pour des BCC inattendus. Si votre fournisseur SMTP journalise les en-têtes complets, cherchez des adresses BCC qui n'apparaissent dans aucune configuration connue de votre équipe.
  • Envisagez un audit du contenu réellement envoyé. Pas seulement les logs de destinataires prévus — le contenu MIME complet d'un échantillon d'emails sortants, pour repérer un en-tête ajouté silencieusement.
  • Séparez les emails sensibles du reste. Les bulletins de salaire et notifications d'authentification devraient idéalement transiter par un chemin d'envoi distinct, avec ses propres logs et alertes, plutôt que la même pile générique que les emails marketing.
  • La leçon

    Ce n'est pas la première attaque supply chain sur npm, et ce ne sera pas la dernière. Ce qui change ici, c'est la cible : pas un vol de clés cloud ou de crypto-wallet, mais l'exfiltration silencieuse de documents RH sensibles via un canal — l'email transactionnel — que la plupart des équipes ne surveillent jamais au niveau du contenu. Si votre produit envoie des données sensibles par email, la question à se poser n'est pas seulement "quel package j'utilise" mais "qui peut lire ce que ce package envoie en mon nom".

    Vous éditez un logiciel RH, paie ou recrutement ? CleanIssue réalise des audits de sécurité pour SaaS RH en conditions réelles, sans accès au code. Pour une première lecture de votre exposition, commencez par une revue externe de votre application.

    Besoin d'une revue externe de votre SaaS RH ?

    Expliquez votre produit, votre stack et votre contexte client. Nous revenons vers vous avec le bon niveau de revue.

    Parler de votre audit