<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Transformers.pyz on CyberVeille</title>
    <link>https://cyberveille.ch/tags/transformers.pyz/</link>
    <description>Recent content in Transformers.pyz on CyberVeille</description>
    <generator>Hugo -- 0.146.0</generator>
    <language>fr-fr</language>
    <copyright>Cyberveille CC BY-NC-SA 4.0</copyright>
    <lastBuildDate>Tue, 12 May 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://cyberveille.ch/tags/transformers.pyz/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Campagne Mini Shai-Hulud : TanStack, UiPath, Mistral AI et d&#39;autres packages npm/PyPI compromis</title>
      <link>https://cyberveille.ch/posts/2026-05-12-campagne-mini-shai-hulud-tanstack-uipath-mistral-ai-et-d-autres-packages-npm-pypi-compromis/</link>
      <pubDate>Tue, 12 May 2026 00:00:00 +0000</pubDate>
      <guid>https://cyberveille.ch/posts/2026-05-12-campagne-mini-shai-hulud-tanstack-uipath-mistral-ai-et-d-autres-packages-npm-pypi-compromis/</guid>
      <description>&lt;h2 id=&#34;-contexte&#34;&gt;🗓️ Contexte&lt;/h2&gt;
&lt;p&gt;Le 11 mai 2026, Wiz publie une analyse technique détaillant une &lt;strong&gt;attaque coordonnée de supply chain&lt;/strong&gt; menée par le groupe &lt;strong&gt;TeamPCP&lt;/strong&gt; contre les écosystèmes &lt;strong&gt;npm&lt;/strong&gt; et &lt;strong&gt;PyPI&lt;/strong&gt;. Cette campagne, désignée &lt;strong&gt;Mini Shai-Hulud&lt;/strong&gt;, représente une évolution des opérations précédentes du même acteur (SAP, Checkmarx, Bitwarden, Lightning, Intercom, Trivy).&lt;/p&gt;
&lt;h2 id=&#34;-packages-compromis&#34;&gt;🎯 Packages compromis&lt;/h2&gt;
&lt;p&gt;Les namespaces et packages impactés incluent :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;@tanstack&lt;/strong&gt; : dont &lt;code&gt;@tanstack/react-router&lt;/code&gt; (~12 millions de téléchargements hebdomadaires)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;@uipath&lt;/strong&gt; : outils d&amp;rsquo;automatisation enterprise (apollo-core, CLI, agent SDKs)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;@mistralai/mistralai&lt;/strong&gt; : client TypeScript officiel de Mistral AI&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;guardrails-ai&lt;/strong&gt; (PyPI) : package Python de guardrails LLM&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;mistralai&lt;/strong&gt; (PyPI)&lt;/li&gt;
&lt;li&gt;Plusieurs dizaines d&amp;rsquo;autres packages npm (voir liste complète)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;-vecteur-dinfection-tanstack-chaîne-de-3-vulnérabilités-github-actions&#34;&gt;🔓 Vecteur d&amp;rsquo;infection TanStack (chaîne de 3 vulnérabilités GitHub Actions)&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;L&amp;rsquo;attaquant crée un &lt;strong&gt;fork renommé&lt;/strong&gt; du dépôt &lt;code&gt;TanStack/router&lt;/code&gt; (&lt;code&gt;zblgg/configuration&lt;/code&gt;) pour échapper aux recherches de forks&lt;/li&gt;
&lt;li&gt;Ouverture d&amp;rsquo;une &lt;strong&gt;pull request&lt;/strong&gt; déclenchant un workflow &lt;code&gt;pull_request_target&lt;/code&gt; qui exécute le code du fork et &lt;strong&gt;empoisonne le cache GitHub Actions&lt;/strong&gt; (pnpm store)&lt;/li&gt;
&lt;li&gt;Lors de la fusion de PRs légitimes, le workflow de release &lt;strong&gt;restaure le cache empoisonné&lt;/strong&gt; ; des binaires contrôlés par l&amp;rsquo;attaquant extraient des &lt;strong&gt;tokens OIDC directement depuis la mémoire du runner&lt;/strong&gt; (&lt;code&gt;/proc/&amp;lt;pid&amp;gt;/mem&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Publication de versions malveillantes &lt;strong&gt;sans vol de credentials npm&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;-vecteurs-dinfection-dans-les-packages&#34;&gt;🐛 Vecteurs d&amp;rsquo;infection dans les packages&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;@tanstack&lt;/strong&gt; : entrée &lt;code&gt;optionalDependencies&lt;/code&gt; pointant vers un commit orphelin + fichier obfusqué &lt;code&gt;router_init.js&lt;/code&gt; (~2,3 Mo) dans le tarball&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;@uipath&lt;/strong&gt; : script &lt;code&gt;preinstall&lt;/code&gt; (&lt;code&gt;node setup.mjs&lt;/code&gt;) téléchargeant le runtime &lt;strong&gt;Bun&lt;/strong&gt; pour exécuter le payload — même mécanisme que le compromis SAP précédent&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;PyPI&lt;/strong&gt; : 13 lignes de code téléchargeant et exécutant &lt;code&gt;git-tanstack[.]com/tmp/transformers.pyz&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;-comportement-du-payload&#34;&gt;💀 Comportement du payload&lt;/h2&gt;
&lt;p&gt;Le payload est un &lt;strong&gt;credential stealer auto-propagant (worm)&lt;/strong&gt; ciblant :&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
