Vulnerable Code Search: Transferable Attack for Code Language Models
Dit artikel introduceert een overdraagbare, programmeertaal-agnostische adversariële aanval die code-identificatoren perturbeert om irrelevante fragmenten kunstmatig af te stemmen op doelzoekopdrachten, wat de retrieval-prestaties van zowel open-source als closed-source codetaalmodellen aanzienlijk verslechtert.
Oorspronkelijk artikel gelicentieerd onder CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Dit is een AI-gegenereerde uitleg van het onderstaande artikel. Het is niet geschreven of goedgekeurd door de auteurs. Raadpleeg het oorspronkelijke artikel voor technische nauwkeurigheid. Lees de volledige disclaimer
In het uitgestrekte, uitdijende ecosysteem van moderne software vertrouwen ontwikkelaars op digitale bibliotheken om de bouwstenen te vinden die ze nodig hebben. Stel je een programmeur voor die zoekt naar een specifieke functie om gegevens snel te laden; hij typt een vraag in een zoekbalk, en een systeem moet razendsnel door miljoenen regels code zoeken om de perfecte match te vinden. Dit proces, bekend als code-retrieval, is de ruggengraat van productiviteit, omdat het ingenieurs in staat stelt bestaande oplossingen te hergebruiken in plaats van het wiel opnieuw uit te vinden. Om dit op schaal te laten werken, gebruiken computers gespecialiseerde modellen die zowel de menselijke vraag als de computercode vertalen naar een gedeelde wiskundige ruimte. In deze ruimte geldt: hoe dichter twee items bij elkaar liggen, hoe meer ze als vergelijkbaar worden beschouwd. Het systeem rangschikt vervolgens de resultaten, waarbij de meest relevante code bovenaan wordt geplaatst. Jarenlang heeft de industrie vertrouwd op de robuustheid van deze systemen, uitgaande van het feit dat omdat de code correct werkt, de computer het doel ervan zal begrijpen.
Echter, een nieuwe studie onthult een opmerkelijke kwetsbaarheid in deze systemen. Onderzoekers van de University of Southern California hebben ontdekt dat deze krachtige zoektools gemakkelijk kunnen worden misleid, niet door te veranderen wat de code daadwerkelijk doet, maar door de namen van de variabelen en functies binnen de code te wijzigen. Het team demonstreerde dat ze, door deze namen zorgvuldig te vervangen, volkomen ongerelateerde code eruit konden laten zien als het perfecte antwoord op een specifieke vraag. Het is alsof een bibliothecaris ertoe gebracht kan worden een kookboek uit de kast te pakken, simpelweg omdat de auteur de titel van een hoofdstuk heeft aangepast om overeen te komen met de woorden op een verzoekbriefje van een klant, ook al gaat de inhoud van het boek volledig over koken en niet over de werkelijke behoefte van de klant.
De onderzoekers ontwikkelden een methode om deze zwakte uit te buiten. Ze namen een stuk code dat niets te maken had met een specifieke zoekopdracht — bijvoorbeeld een fragment voor het sorteren van een lijst met getallen wanneer de gebruiker zocht naar een manier om gegevens te laden — en hernoemden systematisch de interne symbolen. Ze deden dit zonder een enkele regel van de code's logica te wijzigen, waardoor het programma exact hetzelfde zou blijven draaien als voorheen. Door een kleiner, toegankelijk computermodel te gebruiken om deze wijzigingen te begeleiden, vonden ze de specifieke namen die de ongerelateerde code in de ogen van de computer wiskundig identiek zouden maken aan de doelvraag. Het resultaat was een stuk code dat perfect functioneerde maar semantisch losstond van de intentie van de gebruiker, en toch rangschikte de zoekmachine het als het beste resultaat.
Het meest alarmerende aspect van deze ontdekking is hoe gemakkelijk de truc overdraagbaar is naar verschillende systemen. De onderzoekers genereerden deze misleidende codesnippets met behulp van een kleiner, open-source model, maar de truc werkte net zo effectief tegen veel grotere, closed-source systemen die door grote technologiebedrijven worden gebruikt. Wanneer ze dit testten tegen state-of-the-art modellen, stortte de prestatie van de zoekmachines in. In één experiment daalde het vermogen van het systeem om het juiste antwoord te vinden met wel 77 procent. De zoekmachines, die voorheen hoog scoorden op standaardtests, slaagden er niet in om de authentieke oplossing te onderscheiden van de gemanipuleerde bedrieger. Dit suggereert dat deze modellen niet werkelijk de betekenis van de code begrijpen; in plaats daarvan vertrouwen ze te veel op oppervlakkige patronen, zoals de specifieke woorden die in variabelenamen worden gebruikt, in plaats van op de diepere logica van het programma.
De studie onderzocht ook of deze systemen bestand gemaakt konden worden tegen dergelijke aanvallen. De onderzoekers probeerden de modellen te trainen om deze misleidende patronen te negeren, maar de oplossing ging gepaard met een zware prijs. Wanneer ze de modellen resistenter maakten tegen de truc, leed hun vermogen om normale zoekopdrachten uit te voeren aanzienlijk, waarbij de nauwkeurigheid met de helft daalde. Omgekeerd, wanneer ze probeerden een balans te vinden tussen veiligheid en prestaties, bleven de modellen kwetsbaar voor een meer geavanceerde versie van de aanval. De bevindingen wijzen erop dat de huidige generatie code-zoektools, ondanks hun indrukwekkende benchmarks, gebouwd zijn op een fundament dat veel brozer is dan voorheen gedacht. Ze geven prioriteit aan het matchen van oppervlakkige tekst boven het begrijpen van de werkelijke functie van de software, waardoor ze openstaan voor manipulatie die workflows kan verstoren of, in het ergste geval, kan leiden tot het gebruik van kwaadaardige code die legitiem lijkt.
Deze kwetsbaarheid strekt zich uit voorbij eenvoudige zoekmachines. De onderzoekers toonden aan dat dezelfde truc grote taalmodellen kon misleiden die worden gebruikt voor het genereren van code vanuit repositories. Wanneer deze geavanceerde systemen werden geconfronteerd met de gemanipuleerde code, kelderde hun nauwkeurigheid bij het selecteren van de juiste functie over meerdere programmeertalen heen, waaronder Python, C++ en Java. De aanval werkte omdat de modellen werden aangetrokken door de hernoemde identificatoren die overeenkwamen met de zoekopdracht, waarbij ze de factor negeerden dat het gedrag van de code irrelevant was. De studie concludeert dat de industrie moet bewegen naar meer robuuste methoden die de structuur en logica van code begrijpen, in plaats van alleen het tekstuele uiterlijk. Tot die tijd blijft het vertrouwen dat in deze geautomatiseerde tools wordt gesteld om kritieke softwarebeslissingen te sturen, precair en kwetsbaar voor een simpele verandering van een paar woorden.
Verdrinkt u in papers in uw vakgebied?
Ontvang dagelijkse digests van de nieuwste papers die bij uw onderzoekswoorden passen — met technische samenvattingen, in uw taal.