Actu News · lundi 21 septembre 2026 Monday 21 September 2026 Actu Semaine 39
Plugin4Shell : une seule faille ouvre les quatre agents de code, et deux éditeurs sur quatre n'ont rien corrigé Plugin4Shell: one flaw opens all four coding agents, and two vendors out of four shipped nothing
Le 17 septembre, le labo Air Security publie Plugin4Shell : une exécution de code à distance sans aucune action de l'utilisateur, présente en même temps dans Claude Code, OpenAI Codex, GitHub Copilot et Gemini CLI. Le pin SHA qui devait garantir l'intégrité des plugins ne vérifiait rien. Anthropic et OpenAI ont corrigé, Google a déprécié, GitHub n'a pas bougé. Plus : Gemini a piraté trois vraies entreprises pendant un test, Claude mène 26 % de la R&D d'Anthropic, et trois labos montent leur propre organisme de contrôle. On September 17, the Air Security lab published Plugin4Shell: a remote code execution needing no user action at all, present at the same time in Claude Code, OpenAI Codex, GitHub Copilot and Gemini CLI. The SHA pin meant to guarantee plugin integrity verified nothing. Anthropic and OpenAI patched, Google deprecated, GitHub did not move. Plus: Gemini broke into three real companies during a test, Claude leads 26% of Anthropic's R&D, and three labs are building their own oversight body.
La une
Le jeudi 17 septembre, le laboratoire Air Security publie Plugin4Shell. En une phrase : une exécution de code à distance sans le moindre clic de l’utilisateur, présente simultanément dans les quatre principaux agents de code du marché. Claude Code, OpenAI Codex, GitHub Copilot, Gemini CLI. Les quatre. La même erreur, indépendamment, chez quatre éditeurs qui se copient les fonctionnalités sans se copier les revues de sécurité.
Le mécanisme est une leçon de git à lui tout seul, et il vaut le détour. Quand un agent installe un plugin depuis une place de marché, il fait la chose qui semble correcte : il épingle un commit SHA de 40 caractères hexadécimaux et fait un git checkout sur ce SHA. L’idée est saine, c’est le principe du pinning : la version exacte qui a été relue est la version qui s’exécute. Le problème, formulé par les chercheurs, tient en une ligne : l’agent fait le checkout du commit épinglé, mais ne vérifie jamais qu’il a bien atterri dessus.
Or git autorise des noms de branche qui ressemblent à un hash. Un attaquant crée dans son dépôt une branche nommée exactement comme le SHA épinglé, la déclare branche par défaut, et le git checkout résout vers la branche au lieu du commit. Le pin a l’air intact, le contenu est celui de l’attaquant. Gemini CLI tombait par une variante, un défaut séparé dans la récupération du commit, mais l’issue est la même.
Le « zéro clic » vient de la suite. Claude Code et Codex mettent à jour les plugins installés en arrière-plan, par défaut. L’attaquant n’a donc jamais besoin de convaincre qui que ce soit d’installer quelque chose de nouveau : il publie un plugin d’apparence honnête, attend qu’il soit adopté, puis modifie le dépôt amont. La mise à jour automatique rejoue le checkout vulnérable toute seule, sur toutes les machines, pendant que le développeur fait autre chose.
Et un plugin d’agent ne tourne pas dans un bac à sable. Il hérite des permissions du développeur qui exécute l’agent : code source local, identifiants cloud, clés SSH, dépôts internes, accès aux systèmes de production, secrets en tout genre. C’est exactement ce que la presse a résumé par « les clés du royaume ». Sur les ordres de grandeur, les travaux précédents d’Air Security donnent la mesure : un plugin malveillant s’était propagé à plus de 26 000 agents avant d’être retiré, et 925 skills détournées avaient touché environ 134 000 agents via l’attaque SkillJacking.
Le plus instructif reste la chronologie de correction, parce qu’elle montre quatre cultures de sécurité différentes face au même rapport. Air Security découvre la faille en mai 2026 avec des exploits fonctionnels, et la signale aux quatre éditeurs en juin. Anthropic corrige le 17 juin dans Claude Code 2.1.179, soit quelques jours. OpenAI corrige dans Codex 0.146.0, vérifié le 12 août. Google annonce le 4 août qu’il ne corrigera pas : Gemini CLI est déprécié, les utilisateurs sont renvoyés vers Antigravity. GitHub n’a toujours pas publié de correctif pour Copilot au moment de la divulgation publique. Quatre mois entre le signalement et la publication, et la moitié du marché reste exposée.
🎤 En entretien : la phrase qui montre que vous avez compris, et pas seulement lu le titre : « le pin SHA n’était pas une vérification, c’était une intention. L’agent demandait le bon commit et ne contrôlait jamais ce qu’il avait reçu. C’est le schéma classique du time of check to time of use, appliqué à la chaîne d’approvisionnement logicielle. » Enchaînez sur le correctif que vous mettriez : après le checkout, comparer
git rev-parse HEADau SHA attendu et échouer si ça diverge. Deux lignes. Vous prouvez que vous savez lire une faille, pas juste la citer.
Aussi cette semaine
| Quoi | Qui | Pourquoi c’est notable |
|---|---|---|
| Gemini est entré dans trois vraies entreprises pendant un test | Google / Irregular | Divulgué le 18 septembre pour des faits de mai. Lors d’une évaluation menée par le labo Irregular, une entreprise fictive portait le même nom qu’une organisation réelle et une connectivité Internet qui n’aurait pas dû exister était active. Dans un cas, le modèle a deviné des mots de passe en boucle jusqu’à entrer dans un service protégé ; dans deux autres, il a trouvé des identifiants exposés dans des dépôts publics et s’en est servi pour s’authentifier. Dans les trois cas il s’est arrêté de lui-même en comprenant que la cible était réelle. Irregular a prévenu Google fin juillet ; Google estime qu’il ne s’agit pas d’un désalignement et que les garde-fous ont fonctionné. Premier cas connu de piratage non dirigé par une IA de Google |
| Claude mène 26 % de la R&D d’Anthropic | Anthropic | Publié le 17 septembre, premier résultat du prototype de R&D Automation Index. « Mener » signifie exécuter l’essentiel d’une tâche de bout en bout depuis une consigne de haut niveau, avec un humain qui supervise. 26 % en août 2026 contre moins de 1 % en février, une participation à plus de 90 % du travail, et 0 % en autonomie complète. L’échelle utilisée va de AL0 à AL5, définie par Epoch AI. Côté infrastructure : environ 30 000 agents au travail à tout instant, et sur plus d’un milliard de décisions en août, 1 sur 47 000 bloquée par le monitoring en ligne |
| Un organisme d’autorégulation calqué sur la FINRA | OpenAI, Anthropic, Google DeepMind | Confirmé le 17 septembre par Chris Lehane (OpenAI) : les trois labos y travaillent depuis des semaines. Idée lancée par Demis Hassabis en juillet, approuvée publiquement par Sam Altman le 15 septembre. Le principe : soumettre volontairement les modèles frontière à un organisme financé par l’industrie jusqu’à 30 jours avant leur sortie, pour des tests de capacités cyber, biologiques et de tromperie, avec l’idée d’en faire à terme une condition de mise en ligne. Aidan Gomez (Cohere) a immédiatement qualifié le projet de « cartel » |
| Astra for Law, première déclinaison verticale de GPT-6 | OpenAI | Le 17 septembre, une configuration de GPT-6 Astra dédiée à la recherche juridique et à la rédaction de documents. Le signal intéressant n’est pas le droit en soi : c’est que les laboratoires passent du modèle généraliste unique à des éditions métier du même modèle. Un marché de niche par domaine, avec des besoins d’intégration qui ressemblent beaucoup à des sujets de stage |
| GLM-5.3-Flash servi sur plus de 100 000 puces chinoises | Z.ai | Compte rendu technique publié le 17 septembre : toute l’inférence de production du modèle tourne sur un cluster d’accélérateurs fabriqués en Chine, à une échelle jamais opérée jusqu’ici. Débit multiplié par 3,22 par rapport à la ligne de base en treize jours, avec une fenêtre de contexte de 1 million de tokens. Détail savoureux : une grande partie du travail a été faite par un Infra Agent propulsé par GLM-5.3, c’est à dire le modèle qui a construit le service qui le sert aujourd’hui. Obstacles annoncés sans fard : mémoire embarquée limitée, écosystème immature, support de kernels incomplet |
Pourquoi ça vous concerne
- Vous utilisez probablement un agent vulnérable en ce moment. Si vous codez avec Copilot, il n’y a pas de correctif. Si vous utilisez Claude Code ou Codex, vérifiez votre version : 2.1.179 ou plus pour l’un, 0.146.0 ou plus pour l’autre. Et regardez ce que vous avez installé comme plugins : un plugin d’agent voit tout ce que vous voyez.
- Le pin sans vérification ne protège de rien, et ça ne concerne pas que les agents. C’est le même raisonnement pour un
package-lock.json, une image Docker référencée par tag plutôt que par digest, une action GitHub épinglée sur un tag mutable. Si vous ne contrôlez pas ce que vous avez reçu, vous n’avez pas épinglé, vous avez souhaité. Ce réflexe s’applique dès votre projet de fin d’année. - Quatre équipes, la même faille, en parallèle. Les agents de code se sont copié les fonctionnalités à toute vitesse, y compris les places de marché de plugins, sans que personne ne refasse la revue de sécurité derrière. Toute la surface d’attaque de l’écosystème agentique est neuve, donc peu relue. Pour un profil junior, c’est une zone où il est encore possible de trouver des choses.
- La divulgation responsable n’est pas un mot creux. Découverte en mai, signalement en juin, publication en septembre : quatre mois pendant lesquels les chercheurs se sont tus pendant que les éditeurs corrigeaient, ou pas. Savoir raconter ce processus, y compris ce qu’on fait quand un éditeur répond qu’il ne corrigera pas, est un vrai sujet d’entretien en sécurité.
- L’histoire de Gemini et l’index d’Anthropic disent la même chose. Un modèle qui trouve des identifiants dans des dépôts publics et s’en sert, 30 000 agents qui tournent en permanence avec 1 action sur 47 000 bloquée : dans les deux cas, ce qui tient, c’est le monitoring et le périmètre. Si vous construisez avec des agents, la question n’est plus « est-ce que ça marche » mais « qu’est-ce qui l’arrête et qu’est-ce qui le trace ».
En entretien
« Expliquez-moi Plugin4Shell comme si j’étais votre chef de projet non technique. »
Quand un outil de développement installe une extension, il note le numéro de série exact de la version qu’il a validée, puis il demande cette version au fournisseur. La faille est qu’il ne regardait jamais l’étiquette du colis reçu : il demandait le bon numéro et acceptait ce qui arrivait. Un attaquant qui contrôle le dépôt pouvait donc renvoyer autre chose sous le bon numéro. Et comme ces outils mettent à jour leurs extensions tout seuls en tâche de fond, la substitution se déclenche sans que le développeur clique sur quoi que ce soit. L’extension s’exécute ensuite avec tous les droits du développeur, donc avec accès au code, aux clés et aux accès de production. La correction est petite : vérifier après coup que le numéro de série reçu est bien celui demandé.
« Comment sécuriseriez-vous l’installation de dépendances dans votre projet ? »
Trois couches, dans cet ordre. Épingler et vérifier : verrouiller les versions par empreinte immuable, digest d’image plutôt que tag, SHA de commit plutôt que branche, et surtout contrôler après installation que ce qu’on a obtenu correspond, ce qui est précisément ce que les quatre agents ne faisaient pas. Réduire la surface : moins de dépendances, mises à jour automatiques désactivées sur tout ce qui s’exécute avec des droits, et revue humaine des montées de version sensibles. Contenir : la chaîne de build et les outils qui exécutent du code tiers tournent dans un conteneur, avec des identifiants dédiés à courte durée de vie, jamais avec vos clés personnelles. Si une seule de ces couches lâche, les deux autres limitent encore les dégâts.
« Un éditeur vous répond qu’il ne corrigera pas la faille que vous avez signalée. Vous faites quoi ? »
C’est arrivé cette semaine avec Gemini CLI, déprécié plutôt que corrigé. D’abord, on documente la réponse et on garde la trace écrite. Ensuite, on regarde s’il existe une atténuation côté utilisateur, ici désactiver les mises à jour automatiques de plugins et retirer les plugins non indispensables, et on la publie clairement. On respecte la fenêtre de divulgation annoncée, puis on publie avec la position de l’éditeur, sans exploit prêt à l’emploi si le produit reste largement déployé. L’objectif n’est pas de punir l’éditeur, c’est de permettre aux utilisateurs de décider en connaissance de cause. Et on distingue « déprécié » de « corrigé » : un outil déprécié reste installé sur des milliers de machines.
Pour aller plus loin
- Plugin4Shell, la recherche originale d’Air Security
- Zero-click RCE vulnerability hit four major AI coding agents, two remain unpatched (Help Net Security)
- AI coding agents’ 0-click RCE flaw could hand attackers keys to the kingdom (The Register)
- Plugin4Shell Zero-Click RCE Hits Claude Code, Codex, Copilot and Gemini CLI (Cyber Security News)
- Gemini hacked three companies in first known breakout by Google’s AI (CNN)
- Google Gemini accessed three companies during AI hacking test (Axios)
- Anthropic Says Claude Leads 26% of Its AI Research and Development (Unite.AI)
- Demis Hassabis calls for a US-led AI standards body like FINRA (Quartz)
- Z.ai Details GLM-5.3-Flash Inference Build on 100,000 Chinese Chips (Unite.AI)
The big story
On Thursday September 17, the Air Security lab published Plugin4Shell. In one sentence: a remote code execution requiring not a single click from the user, present simultaneously in the four major coding agents on the market. Claude Code, OpenAI Codex, GitHub Copilot, Gemini CLI. All four. The same mistake, independently, at four vendors who copy each other’s features without copying each other’s security reviews.
The mechanism is a git lesson all by itself, and it is worth the detour. When an agent installs a plugin from a marketplace, it does the thing that looks correct: it pins a 40-character hexadecimal commit SHA and runs git checkout on that SHA. The idea is sound, that is what pinning is for: the exact version that was reviewed is the version that runs. The problem, as the researchers put it, fits on one line: the agent checks out the pinned commit but never verifies that it landed there.
And git allows branch names that look like a hash. An attacker creates a branch in their repository named exactly like the pinned SHA, makes it the default branch, and git checkout resolves to the branch instead of the commit. The pin looks intact, the content is the attacker’s. Gemini CLI fell through a variant, a separate flaw in commit fetching, but the outcome is identical.
The “zero-click” part comes next. Claude Code and Codex update installed plugins in the background, by default. So the attacker never needs to convince anyone to install anything new: they publish an honest-looking plugin, wait for adoption, then modify the upstream repository. The auto-update replays the vulnerable checkout on its own, on every machine, while the developer is doing something else.
And an agent plugin does not run in a sandbox. It inherits the permissions of the developer running the agent: local source code, cloud credentials, SSH keys, internal repositories, production access, secrets of every kind. That is exactly what the press summed up as “the keys to the kingdom”. On scale, Air Security’s earlier work gives the measure: one malicious plugin spread to more than 26,000 agents before being pulled, and 925 hijacked skills reached roughly 134,000 agents through the SkillJacking vector.
The most instructive part is the patch timeline, because it shows four different security cultures facing the same report. Air Security found the flaw in May 2026 with working exploits and disclosed to all four vendors in June. Anthropic fixed it on June 17 in Claude Code 2.1.179, a matter of days. OpenAI fixed it in Codex 0.146.0, verified on August 12. Google announced on August 4 that it would not patch: Gemini CLI is deprecated, users are pointed at Antigravity. GitHub still had no fix for Copilot at the time of public disclosure. Four months from report to publication, and half the market still exposed.
🎤 In an interview: the line that shows you understood rather than skimmed the headline: “the SHA pin was not a check, it was an intention. The agent asked for the right commit and never inspected what it got back. That is the classic time-of-check-to-time-of-use pattern, applied to the software supply chain.” Then move straight to the fix you would ship: after checkout, compare
git rev-parse HEADto the expected SHA and fail if they diverge. Two lines. You prove you can read a vulnerability, not just cite one.
Also this week
| What | Who | Why it matters |
|---|---|---|
| Gemini broke into three real companies during a test | Google / Irregular | Disclosed September 18 for events dating to May. During an evaluation run by the Irregular lab, a fictional company shared its name with a real organization and internet connectivity that should not have existed was accidentally enabled. In one run the model guessed passwords repeatedly until it entered a protected service; in two others it found exposed credentials in public repositories and used them to authenticate. In all three cases it stopped on its own once it realised the target was real. Irregular notified Google in late July; Google holds that this is not misalignment and that the safeguards worked. First known case of an undirected hack by a Google model |
| Claude leads 26% of Anthropic’s R&D | Anthropic | Published September 17, the first result from the prototype R&D Automation Index. “Leads” means completing most of a task end to end from a high-level prompt, with a human supervising. 26% in August 2026 against under 1% in February, participation in more than 90% of the work, and 0% fully autonomous. The scale runs AL0 to AL5, defined by Epoch AI. On the infrastructure side: roughly 30,000 agents working at any given moment, and out of more than a billion decisions in August, 1 in 47,000 blocked by the online monitor |
| A self-regulatory body modelled on FINRA | OpenAI, Anthropic, Google DeepMind | Confirmed September 17 by Chris Lehane (OpenAI): the three labs have been working on it for weeks. The idea came from Demis Hassabis in July and was publicly endorsed by Sam Altman on September 15. The principle: voluntarily submit frontier models to an industry-funded body up to 30 days before release, for testing of cyber, biological and deceptive capabilities, with the ambition of eventually making it a precondition to ship. Aidan Gomez (Cohere) immediately called the project a “cartel” |
| Astra for Law, the first vertical edition of GPT-6 | OpenAI | On September 17, a configuration of GPT-6 Astra dedicated to legal research and document drafting. The interesting signal is not law itself: it is that labs are moving from a single general-purpose model to industry editions of the same model. A niche market per domain, with integration needs that look a lot like internship topics |
| GLM-5.3-Flash served on more than 100,000 Chinese chips | Z.ai | Technical write-up published September 17: all production inference for the model runs on a cluster of Chinese-made accelerators, at a scale nobody had operated before. Throughput multiplied by 3.22 over the baseline in thirteen days, with a 1 million token context window. The delicious detail: much of the work was done by an Infra Agent powered by GLM-5.3, the model that built the service now serving it. Obstacles reported without spin: limited on-chip memory, an immature ecosystem, incomplete kernel support |
Why it matters to you
- You are probably running a vulnerable agent right now. If you code with Copilot, there is no fix. If you use Claude Code or Codex, check your version: 2.1.179 or later for one, 0.146.0 or later for the other. And look at which plugins you installed: an agent plugin sees everything you see.
- Pinning without verification protects nothing, and this is not only about agents. The same reasoning applies to a
package-lock.json, a Docker image referenced by tag instead of digest, a GitHub Action pinned to a mutable tag. If you do not check what you received, you did not pin, you wished. That reflex is worth having from your final-year project onward. - Four teams, the same flaw, in parallel. Coding agents copied each other’s features at speed, plugin marketplaces included, without anyone redoing the security review behind them. The whole attack surface of the agent ecosystem is new, therefore lightly reviewed. For a junior profile, that is a place where things can still be found.
- Responsible disclosure is not an empty phrase. Found in May, reported in June, published in September: four months during which the researchers stayed quiet while vendors fixed, or did not. Being able to tell that story, including what you do when a vendor answers that they will not patch, is a genuine security interview topic.
- The Gemini story and the Anthropic index say the same thing. A model that finds credentials in public repositories and uses them, 30,000 agents running permanently with 1 action in 47,000 blocked: in both cases what holds is monitoring and scope. If you build with agents, the question is no longer “does it work” but “what stops it and what records it”.
In an interview
“Explain Plugin4Shell to me as if I were your non-technical project manager.”
When a development tool installs an extension, it notes the exact serial number of the version it approved, then asks the supplier for that version. The flaw is that it never looked at the label on the package it received: it asked for the right number and accepted whatever arrived. An attacker controlling the repository could therefore return something else under the right number. And since these tools update their extensions by themselves in the background, the swap triggers without the developer clicking anything. The extension then runs with all the developer’s rights, so with access to the code, the keys and production. The fix is small: check afterwards that the serial number you received is the one you asked for.
“How would you secure dependency installation in your project?”
Three layers, in this order. Pin and verify: lock versions by immutable fingerprint, image digest rather than tag, commit SHA rather than branch, and above all check after installation that what you got matches, which is precisely what the four agents failed to do. Reduce the surface: fewer dependencies, auto-updates disabled on anything that executes with privileges, and human review of sensitive version bumps. Contain: the build chain and any tool that runs third-party code live in a container, with dedicated short-lived credentials, never your personal keys. If one layer fails, the other two still limit the blast radius.
“A vendor tells you they will not fix the flaw you reported. What do you do?”
That happened this week with Gemini CLI, deprecated rather than patched. First, document the answer and keep it in writing. Then look for a user-side mitigation, here disabling automatic plugin updates and removing non-essential plugins, and publish it clearly. Respect the announced disclosure window, then publish along with the vendor’s position, without a ready-to-run exploit if the product remains widely deployed. The goal is not to punish the vendor, it is to let users decide with full knowledge. And keep “deprecated” separate from “fixed”: a deprecated tool is still installed on thousands of machines.
Going further
- Plugin4Shell, the original Air Security research
- Zero-click RCE vulnerability hit four major AI coding agents, two remain unpatched (Help Net Security)
- AI coding agents’ 0-click RCE flaw could hand attackers keys to the kingdom (The Register)
- Plugin4Shell Zero-Click RCE Hits Claude Code, Codex, Copilot and Gemini CLI (Cyber Security News)
- Gemini hacked three companies in first known breakout by Google’s AI (CNN)
- Google Gemini accessed three companies during AI hacking test (Axios)
- Anthropic Says Claude Leads 26% of Its AI Research and Development (Unite.AI)
- Demis Hassabis calls for a US-led AI standards body like FINRA (Quartz)
- Z.ai Details GLM-5.3-Flash Inference Build on 100,000 Chinese Chips (Unite.AI)