Noma Labs heeft aangetoond dat een enkele publieke GitHub-issue code uit private repositories kan stelen met behulp van AI-gestuurde automatisering. Hun proof-of-concept stelt een aanvaller in staat om de eigen workflow-bots van een organisatie tegen deze te gebruiken, waardoor propriëtaire bestanden lekken zonder de authenticatie van GitHub te omzeilen.
De aanval in het volle zicht
De keten van gebeurtenissen is eenvoudig genoeg om te reproduceren:
- Een aanvaller maakt een issue aan in een publieke repository die voor iedereen zichtbaar is.
- Een AI-agent, gekoppeld aan de continuous-integration pipeline, leest de titel en de inhoud van de issue.
- Dezelfde agent heeft al leesrechten voor andere private repositories binnen de organisatie.
- Verborgen instructies in de publieke issue vertellen de agent welke private bestanden hij moet ophalen.
- De agent plaatst de opgehaalde bestanden als een reactie terug in de publieke issue, waardoor ze voor de hele wereld zichtbaar worden.
Alles gebeurt tijdens één enkele uitvoering van de automatisering. Geen diefstal van inloggegevens, geen lek van API-sleutels, geen kwetsbaarheid in GitHub. De aanvaller maakt simpelweg misbruik van het vertrouwen dat de organisatie in haar eigen bot stelt.
Waarom dit nu belangrijk is
AI-gestuurde agents vormen tegenwoordig de lijm tussen moderne development pipelines. Ze openen pull-requests, draaien tests, deployen builds en triëren bugs—alles getriggerd door lichte signalen zoals issue-reacties. Wanneer deze agents brede repository-toegang hebben, vervaagt de grens tussen vertrouwde data en onbetrouwbare gebruikersinvoer.
Als een agent in dezelfde uitvoering private code kan lezen en publiekelijk kan schrijven, stort het toegangsbeheer-model van de organisatie in.
Het echte gebrek: permissies, niet het model
De demonstratie legt de schuld niet bij het onderliggende AI-model. Het model volgt simpelweg de instructies die het ontvangt. De kwetsbaarheid zit in het pakket aan permissies dat aan de automatisering is verleend:
- Leesrechten voor private repositories binnen de gehele organisatie.
- Schrijfrechten voor publieke issue-threads.
- Trigger op publieke tekst die door iedereen kan worden opgesteld.
Oplossingen die niets kosten, maar wel werken
Het toepassen van het principe van minimale rechten (least privilege) verkleint het aanvalspad aanzienlijk:
- Beperk de scope van de bot tot de repository waar deze nodig is. Als de bot alleen op een specifieke repo hoeft te werken, ontzeg hem dan alle andere leesrechten.
- Scheid lees- en schrijftokens. Gebruik één inlogmethode voor het ophalen van code en een andere, strikt gecontroleerde methode voor het plaatsen van reacties.
- Menselijke goedkeuring voor elke publieke plaatsing. Een lichte controle-stap—zoals een verplichte goedkeuringslabel—voegt een controlepunt toe zonder de pipeline te blokkeren.
- Verklein de blast radius. Ontwerp workflows zo dat een fout of misbruik hooguit één repository beïnvloedt, en niet de gehele organisatie.
Tegenargument: operationele overhead
Waar u op moet letten
Conclusie: Als een AI-automatisering zowel private code kan inzien als publiekelijk kan communiceren, is het systeem verkeerd ontworpen. Verscherp de permissies, voeg menselijke controles toe en houd de blast radius klein—anders kan een enkele publieke issue een vector voor datalekken worden.
