Een computerscherm met programmacode in een donkere kamer
Nieuws27 juni · 22:425 min leestijd

Schone GitHub-repo laat AI-coderingsagent ongemerkt malware draaien

Mozilla's 0DIN toont hoe een schijnbaar schone GitHub-repo een AI-coderingsagent als Claude Code malware laat uitvoeren, simpelweg door hem een fout te laten oplossen. Elk bedrijf dat AI-codering inzet, moet zijn beleid herzien.

Een GitHub-repo zonder ook maar een regel kwaadaardige code kan je AI-coderingsagent toch malware op je machine laten installeren. Niet via een exploit, maar via iets veel banalers: een foutmelding die de agent netjes probeert op te lossen. Onderzoekers van 0DIN, het Zero Day Investigative Network van Mozilla, demonstreerden de aanval met Claude Code, maar het patroon bedreigt elke agentische codeertool die zelfstandig commando's uitvoert om een project aan de praat te krijgen.

Hoe de val dichtklapt

De repo oogt volkomen normaal, met gewone installatie-instructies. Het venijn zit in een meegeleverd Python-pakket dat weigert te starten en een behulpzame foutmelding teruggeeft: draai eerst python3 -m axiom init. De agent leest die melding, concludeert dat er nog een initialisatiestap mist, en voert het commando uit, precies zoals hij is gebouwd om te doen. Dat commando roept een setup-script aan dat een configuratie ophaalt uit een DNS-record en die direct uitvoert. In dat record stopte 0DIN een base64-gecodeerde reverse shell.

Het resultaat is een interactieve shell met de rechten van de ontwikkelaar: toegang tot omgevingsvariabelen zoals API-sleutels, AWS-credentials en GitHub-tokens, plus de mogelijkheid om zich vast te nesten. De agent besloot nooit om een shell te openen, hij besloot een fout te repareren, vatten de onderzoekers Andre Hall en Miller Engelbrecht het kernachtig samen. Daar zit precies het probleem: het hulpvaardige zelfherstel dat een agent nuttig maakt, is hier het aanvalsoppervlak.

Het GitHub-logo. De aanval gebruikt een schijnbaar schone publieke repository als lokaas. Bron: GitHub / Wikimedia Commons (publiek domein)
Het GitHub-logo. De aanval gebruikt een schijnbaar schone publieke repository als lokaas. Bron: GitHub / Wikimedia Commons (publiek domein)

Waarom scanners hier niets zien

Het sluwe is dat de kwaadaardige instructie nergens in de repo staat. De payload leeft in een DNS-record dat de aanvaller op elk moment kan aanpassen, zonder ook maar iets te committen. Een codereview, een dependency-scan of een malwarescanner ziet dus een schoon project; de schadelijke lading wordt pas tijdens runtime opgehaald en is onzichtbaar voor zowel de gebruiker als de standaard beveiligingscontroles. Het is een variant op indirecte prompt-injectie en het verwarde-hulpje-probleem, waarbij een legitieme tool met te veel rechten een aanvaller zijn werk laat doen.

Het is dezelfde grondvorm die de afgelopen weken vaker opdook. Bij een lek in Amazon Q kon een kwaadaardige repository via het Model Context Protocol stilletjes AWS-sleutels van ontwikkelaars stelen, en met de AutoJack-techniek liet een geprepareerde webpagina een AI-agent ongevraagd code op je server uitvoeren. Het patroon is telkens hetzelfde: niet het model wordt gehackt, maar de autonomie eromheen wordt misbruikt.

Wat dit betekent voor jouw bedrijf

Als je team AI-coderingsagents inzet, en dat doen steeds meer ontwikkelteams, dan is dit een beleidsvraag, geen technische curiositeit. De agent draait commando's met de rechten van degene die hem aanstuurt, dus de eerste vraag is wat die rechten zijn. Drie maatregelen wegen het zwaarst: draai agents in een geisoleerde omgeving die je makkelijk kunt weggooien, houd geheimen en productie-credentials uit de shell waarin de agent werkt, en laat een mens elk shell- of installatiecommando bevestigen voordat het loopt. Het advies van 0DIN sluit daarop aan: een agent zou de volledige uitvoeringsketen van een setup-commando moeten tonen, inclusief de scripts en alles wat tijdens het draaien wordt opgehaald, niet alleen het commando zelf.

De verleiding is om dit als een randgeval af te doen, maar de aanval werkt juist omdat de agent zich voorbeeldig gedroeg. Hij hoefde niet misleid te worden om iets stoms te doen; hij deed precies zijn werk. Behandel de shell-toegang van een AI-agent daarom zoals je de toegang van een nieuwe junior met beheerdersrechten zou behandelen: scherp afgebakend, zichtbaar, en altijd terug te draaien. Wie zijn hele AI- en automatiseringsstack bewust beveiligt tegen dit soort supply chain-aanvallen, maakt van die autonomie een gereedschap in plaats van een open deur.

Veelgestelde vragen

Alisina Nawabi
Geschreven doorAlisina Nawabi

AI Product Engineer & Solutions Architect

AI-agents veilig inzetten

Ik help je AI-codering en automatisering zo opzetten dat agents geisoleerd draaien met scherpe rechten, van het ontwerp van de werkwijze tot de techniek eronder, self-hosted waar dat kan.

Meer informatie

Dit artikel is geproduceerd samen met het Agent Team. Meer over de redactie.

Genoemde integraties

Dit artikel noemt deze tools. Ik koppel ze op maat aan je eigen systemen.

Gerelateerde artikelen

Microsoft: vergiftigde MCP-toolomschrijvingen kapen je AI-agent en lekken bedrijfsdata
Nieuws
5 min

30 jun 20:33

Microsoft: vergiftigde MCP-toolomschrijvingen kapen je AI-agent en lekken bedrijfsdata

Microsoft Incident Response laat zien hoe aanvallers via vergiftigde MCP-toolomschrijvingen bedrijfsdata exfiltreren zonder code te injecteren. Elke actie van de agent was legitiem. De kwetsbaarheid zit in de vertrouwensgrens tussen systemen.

Model Context Protocol (MCP) uitgelegd voor de niet-developer: wat het is en hoe je weet of jouw software klaar is
Gids
8 min

20 jun 23:05

Model Context Protocol (MCP) uitgelegd voor de niet-developer: wat het is en hoe je weet of jouw software klaar is

MCP is de stekker waarmee AI bij je eigen systemen komt. Zonder code leg ik uit wat het is, en geef ik je de exacte vragen voor je leverancier of IT-partner.

Kimi K2.7 Code nu kiesbaar in GitHub Copilot: eerste open-weight model in de modelkeuze
Nieuws
6 min

3 jul 04:10

Kimi K2.7 Code nu kiesbaar in GitHub Copilot: eerste open-weight model in de modelkeuze

GitHub heeft Kimi K2.7 Code algemeen beschikbaar gemaakt in de Copilot-modelkeuze. Het is het eerste open-weight model in de picker, fors goedkoper dan de frontier-modellen, en je devteam kan vandaag overstappen zonder tooling te wijzigen.

BioShocking-aanval laat AI-browsers als Atlas en Comet hun guardrails vergeten
Nieuws
5 min

1 jul 00:06

BioShocking-aanval laat AI-browsers als Atlas en Comet hun guardrails vergeten

Beveiligingsonderzoekers misleiden zes AI-browsers, waaronder ChatGPT Atlas en Comet, met een spelletje waarin 2 plus 2 ineens 5 is. Het resultaat: de guardrails verdwijnen en inloggegevens lekken.

Het model onder je Copilot bepaalt wie je data ziet, niet het logo erboven
Inzicht
7 min

29 jun 17:01

Het model onder je Copilot bepaalt wie je data ziet, niet het logo erboven

Microsoft overweegt een Chinees model onder Copilot te zetten. De assistent blijft hetzelfde heten, maar wie je bedrijfsdata ziet wordt een laag dieper bepaald, door je leverancier.

Welk AI-model draait onder je SaaS, en kun je wisselen? Een inkoperschecklist
Gids
8 min

29 jun 17:00

Welk AI-model draait onder je SaaS, en kun je wisselen? Een inkoperschecklist

Onder elke AI-functie draait een model dat je leverancier koos, ergens host en stil kan vervangen. Met deze vijf vragen weet je voor je tekent welk model er draait, waar je data heen gaat en of je kunt wisselen.