GitLab’s AI-assistent Duo kan een medeplichtige zijn in het stelen van code. De bug in de code om HTML te renderen is opgelost, maar er is nog altijd een risico aanwezig.
De gevaren reiken verder dan alleen codediefstal. Dark Reading merkt op dat de verspreiding van malware en zogeheten ‘dirty links’ naar malafide sites mogelijk waren. Legit Security ontdekte een indirecte prompt injection die deze gevaren mogelijk maakte.
De oorzaak ervan is duidelijk: Duo kijkt klaarblijkelijk niet kritisch genoeg naar de input die het ontvangt. Het lijkt een fundamentele securityfout die eigenlijk weinig te maken heeft met de AI-aard van Duo.
Duo als gevaar
Duo is een tool binnen GitLab die gebruikers van de open-source repository kunnen gebruiken om code te analyseren, wijzigingen voor te stellen en bepaalde aspecten van het schrijven, testen en samenvoegen van code te automatiseren. Met andere woorden: een alternatief voor GitHub Copilot, zoals Dark Reading tevens opmerkte.
Deze kwetsbaarheid is extra zorgwekkend omdat GitLab al eerder te maken heeft gehad met ernstige beveiligingsproblemen. Zo waren er begin vorig jaar nog duizenden GitLab-instances kwetsbaar voor account-overname door een eerdere kritieke kwetsbaarheid waarbij hackers wachtwoordreset-e-mails konden versturen naar door hen gecontroleerde e-mailadressen.
Breed aanvalsoppervlak
Omdat Duo elk aspect van GitLab raakt, is het manipuleren ervan uiterst effectief. De tool discrimineert niet tussen broncode, commits, omschrijvingen en opmerkingen. In elk onderdeel kunnen malafide verborgen prompts zitten.
Duo voerde hierdoor verborgen prompts uit die overal werden geïnjecteerd waar gebruikers met de site interacteerden. Een aanvaller hoefde dus niet eens zijn eigen code te infecteren, maar kon een ander belagen via opmerkingen. Aanvallers waren in staat de prompts te verbergen door bijvoorbeeld witte tekst met een witte achtergrond te combineren.
HTML-injectie via Duo
Het grootste gevaar kwam door de manier waarop Duo zijn antwoorden genereert. Duo formatteert zijn antwoorden in Markdown en geeft ze regel voor regel weer, waarbij HTML wordt gegenereerd voor een browser om te lezen als een stream. Het rendert de HTML echter terwijl het bezig is, zonder te wachten tot de volledige respons is uitgerold.
GitLab heeft inmiddels een fix uitgebracht voor deze HTML-renderingskwetsbaarheid. Eerder dit jaar lanceerde het bedrijf GitLab 18 waarin Duo Enterprise naar Premium-klanten werd gebracht, met verbeterde AI-functionaliteiten. Of deze update ook de beveiligingsproblemen aanpakt, is niet bekend gemaakt.
Prompt-injectie blijft risico
Het bedrijf heeft echter niet de andere prompt-injectierisico’s aangepakt die de onderzoekers in staat stelden om Duo’s antwoorden te vergiftigen. GitLab vertelde Legit Security dat het dit niet als een beveiligingsprobleem beschouwde omdat het niet direct resulteert in ongeautoriseerde toegang of code-uitvoering. Daar zijn securityonderzoekers het niet over eens. Eenieder die door de kwetsbaarheid getroffen wordt, zal gauw tot dezelfde mening komen.