Versleutelde webpagina laat GitHub Copilot CLI zijn eigen .env-geheimen weglekken
Securitybedrijf Adversa AI heeft een aanval gedemonstreerd waarbij GitHub Copilot CLI zelf geheimen van de ontwikkelaarsmachine naar een aanvaller stuurt. De truc: de kwaadaardige instructies staan versleuteld op een webpagina, samen met de sleutel om ze te ontcijferen. Of de aanval lukt, hangt af van welk model de CLI die sessie gebruikt.
Versleuteld, dus onleesbaar voor filters
De techniek heet Cryptographic Context Injection (CCI) en is een variant op indirecte prompt-injectie. Bij klassieke prompt-injectie staat de kwaadaardige instructie als leesbare tekst in iets dat het model inleest. Contentfilters kunnen daar op zoeken. Encodings als base64 of eenvoudige substitutiecijfers helpen een aanvaller nauwelijks, omdat modellen die tijdens de training hebben leren decoderen en filters dat kunnen volgen.
Bij CCI staat de payload als echte ciphertext op de pagina, met daarnaast het sleutelmateriaal en de opdracht om te ontsleutelen. "Static guardrails read text; they do not run it", legt onderzoeker Rony Utevsky uit in de blogpost die The Register inzag. De agent voert de ontsleuteling uit in zijn eigen code-executieomgeving — en pas daarna bestaat de instructie als leesbare tekst, in een context waar niemand meer meekijkt.
De sleutel is het lokpaas
De aanvalsketen zit slim in elkaar. De gebruiker draait Copilot CLI in autopilot-modus en vraagt de agent een specifieke URL op te halen. Die pagina bevat versleutelde inhoud, een instructie om met Python te ontsleutelen, en twéé mogelijke sleutels.
De eerste sleutel is nep. Het is een template die de agent moet opbouwen door bestanden van schijf te lezen, bijvoorbeeld het .env-bestand van het project. De gevonden secrets worden zo in de sleutelstring geplakt. Ontsleutelen met die sleutel mislukt vervolgens — maar de geheimen zitten nu wel in de context van de agent.
Dan probeert de agent de tweede sleutel. Die werkt, en de ontcijferde instructie zegt dat er nog een URL opgehaald moet worden "voor meer context". In die URL zitten de buitgemaakte secrets verwerkt, en het netwerkverzoek levert ze af bij de aanvaller. Adversa zegt dat de hele keten in 28 seconden kan verlopen.
Modelloterij
De aanval werkt niet altijd, en dat ligt aan het onderliggende model. Copilot CLI gebruikt volgens The Register of Microsofts eigen mai-code-1.1-flash, of een van twee GPT-5.6-modellen van OpenAI. De OpenAI-modellen weigerden de payload beide. Het Microsoft-model voerde de volledige keten in 50 procent van de pogingen uit.
Daar zit het probleem voor beheerders, want de gebruiker ziet niet welk model aan het werk is. "On the paid account we tested, the vulnerable model was not the default and had to be selected by hand", aldus Utevsky. "But on an account with model selection left on Auto, the router assigned the vulnerable model on some sessions and a safe one on others, with no action by the user away from defaults."
GitHub ziet het niet als kwetsbaarheid
Adversa meldde de bevinding op 17 september 2026 via het bugbountyprogramma van GitHub. Het triageteam bevestigde de bevinding, maar wilde het niet als kwetsbaarheid behandelen.
Autopilot-modus is in Copilot CLI nog optioneel. Wie de agent zonder tussentijdse goedkeuring webpagina's laat ophalen in een directory met productiesleutels, neemt dus een risico dat per sessie kan verschillen.