Les chercheurs ont exploité cette faille en lisant /proc/self/mem et en exécutant quatre expressions régulières sur les régions mémoire lisibles. Ils ont ainsi récupéré des jetons de session AWS STS actifs pour le rôle IAM de la fonction Lambda, contournant totalement le bac à sable .
Le rôle AWS récupéré s'appelait allow_nothing_role, mais son nom était trompeur. Il accordait quatre permissions liées à Elastic Container Registry (ECR) : ecr:DescribeRepositories, ecr:ListImages, ecr:BatchGetImage et ecr:GetDownloadUrlForLayer .
Ces quatre permissions se sont avérées suffisantes pour extraire des images de conteneurs directement via l'API AWS, sans jamais avoir besoin d'un jeton d'authentification pour le registre Docker. Grâce à elles, les chercheurs ont énuméré 1 111 dépôts de production et ont extrait des images de conteneurs via les API de récupération de couches .
Dans l'une des images de conteneur extraites, les chercheurs ont découvert un jeton de publication NPM qui avait fuité dans l'historique de configuration du conteneur. Le jeton avait été passé au processus de construction via une instruction ARG dans le Dockerfile, qui est sérialisée de manière permanente dans le champ immuable history[] de l'image. Cela signifiait que le jeton était récupérable par quiconque pouvait extraire l'image .
Le jeton NPM récupéré contenait trois propriétés critiques : action: writename: nullbypass_2fa: truezapier-platform-core, zapier-platform-cli et zapier-design-system .
Le paramètre bypass_2fa: true.
Le paquet le plus critique de la chaîne était zapier-design-system, qui se charge dans chaque session authentifiée sur zapier.com. Les chercheurs ont vérifié ce chemin de chargement via les outils de développement du navigateur et se sont arrêtés là — ils n'ont pas publié de paquet malveillant .
Si un attaquant avait publié une version empoisonnée, celle-ci aurait exécuté du JavaScript sous son contrôle dans l'origine authentifiée de zapier.com lors de la prochaine mise à jour. Depuis cette position, un attaquant aurait pu créer des Zaps, des Tables et des serveurs MCP, et piloter des intégrations existantes via la plateforme pour le compte des utilisateurs. Les jetons OAuth et les clés API pour les services connectés restent côté serveur et n'auraient pas été directement exposés au navigateur, mais l'impact opérationnel aurait tout de même été sévère .
Token Security a soumis le rapport le 12 février 2026. En quatre jours, Zapier avait trié le rapport, révoqué le jeton NPM qui avait fuité et renforcé le rôle AWS sous-jacent. La remédiation a été confirmée comme terminée le 5 mars 2026. Zapier n'a signalé aucune preuve d'exploitation malveillante .
Les chercheurs ont reçu la prime maximale du programme, soit 3 000 $, et Zapier s'est engagé à revoir le plafond des primes lors de son prochain examen du programme .
Il est à noter que cette divulgation de recherche est distincte d'une attaque réelle de la chaîne d'approvisionnement sur le compte NPM de Zapier, survenue le 24 novembre 2025, lorsque le ver Shai Hulud 2.0 a compromis le compte et infecté 425 paquets .
Yair Balilti, responsable de l'équipe de recherche en sécurité chez Token Security, a articulé la conclusion fondamentale :
« Chaque maillon de la chaîne était un schéma connu. La vulnérabilité était la composition, et la composition est exactement ce qui tombe entre les équipes. Le bac à sable Lambda, ECR et IAM, le jeton GitLab CI, la publication NPM, le navigateur — chacun appartient à un groupe différent, et chacun peut regarder sa propre partie et conclure raisonnablement que c'est acceptable. Le risque n'apparaît que lorsqu'on trace un chemin à travers tous. »
L'enseignement à retenir est qu'aucune équipe n'était propriétaire d'une vulnérabilité individuelle. L'équipe du bac à sable Lambda ne voyait pas de problème avec la récupération de mémoire puisque le jeton aurait dû être hors de portée de toute façon. L'équipe IAM voyait un rôle limité à des actions ECR en lecture seule. L'équipe CI/build passait le jeton NPM comme un ARG de construction. L'équipe NPM gérait un jeton avec accès en écriture. L'équipe navigateur chargeait un paquet du système de design. Chaque décision était individuellement raisonnable, mais la chaîne à travers les cinq systèmes était catastrophique .
Cela démontre que les revues d'identité et d'accès doivent tracer les chemins d'attaque à travers les frontières des systèmes, plutôt que d'auditer les permissions de chaque composant de manière isolée. Les organisations ont besoin de revues de sécurité transversales qui examinent comment des configurations apparemment inoffensives se composent en chaînes d'attaque dangereuses lorsque les systèmes interagissent .