← Ultimi articoli
💻 computer science

Vulnerable Code Search: Transferable Attack for Code Language Models

Questo articolo introduce un attacco avversario trasferibile e indipendente dal linguaggio di programmazione che perturba gli identificatori del codice per allineare artificialmente frammenti irrilevanti con le query target, degradando significativamente le prestazioni di recupero sia dei modelli linguistici di codice open-source che di quelli closed-source.

Autori originali: Kaicheng Wang, Liyan Huang, Jesse Thomason, Weihang Wang

Pubblicato 2026-08-27
📖 5 min di lettura🧠 Approfondimento

Autori originali: Kaicheng Wang, Liyan Huang, Jesse Thomason, Weihang Wang

Articolo originale sotto licenza CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/). Questa è una spiegazione generata dall'IA dell'articolo qui sotto. Non è stata scritta né approvata dagli autori. Per precisione tecnica, consulta l'articolo originale. Leggi il disclaimer completo

Nel vasto e sconfinato ecosistema del software moderno, gli sviluppatori si affidano alle librerie digitali per trovare i mattoni di cui hanno bisogno. Immaginate un programmatore che cerca una funzione specifica per caricare dati rapidamente; digita una domanda in una barra di ricerca e un sistema deve setacciare istantaneamente milioni di righe di codice per trovare il match perfetto. Questo processo, noto come recupero del codice (code retrieval), è la spina dorsale della produttività, permettendo agli ingegneri di riutilizzare soluzioni esistenti invece di reinventare la ruota. Per far sì che questo funzioni su larga scala, i computer utilizzano modelli specializzati che traducono sia la domanda umana che il codice informatico in uno spazio matematico condiviso. In questo spazio, più due elementi sono vicini tra loro, più sono considerati simili. Il sistema classifica poi i risultati, posizionando il codice più rilevante in cima. Per anni, l'industria ha confidato in questi sistemi affinché fossero robusti, assumendo che, poiché il codice funziona correttamente, il computer ne comprenda lo scopo.

Tuttanoavia, uno studio recente rivela una sorprendente fragilità in questi sistemi. I ricercatori dell'Università della California Meridionale hanno scoperto che questi potenti strumenti di ricerca possono essere facilmente ingannati, non cambiando ciò che il codice fa effettivamente, ma cambiando i nomi delle variabili e delle funzioni al suo interno. Il team ha dimostrato che, sostituendo con cura questi nomi, avrebbero potuto far apparire un codice completamente slegato dalla domanda come la risposta perfetta a una specifica richiesta. È come se un bibliotecario potesse essere ingannato nel prelevare un libro di cucina dallo scaffale solo perché l'autore ha cambiato il titolo di un capitolo per farlo corrispondere alle parole scritte sul modulo di richiesta di un utente, nonostante il contenuto del libro fosse interamente dedicato alla cucina e non al reale bisogno del cliente.

I ricercatori hanno sviluppato un metodo per sfruttare questa debolezza. Hanno preso un frammento di codice che non aveva nulla a che fare con una specifica query di ricerca — ad esempio, un pezzo di codice per ordinare una lista di numeri quando l'utente chiedeva un modo per caricare dati — e hanno rinominato sistematicamente i simboli interni. Lo hanno fatto senza alterare una singola riga della logica del codice, garantendo che il programma funzionasse esattamente come prima. Utilizzando un modello informatico più piccolo e accessibile per guidare queste modifiche, hanno trovato i nomi specifici che avrebbero reso il codice non correlato matematicamente identico alla domanda target agli occhi del computer. Il risultato è stato un pezzo di codice che funzionava perfettamente ma era semanticamente scollegato dall'intento dell'utente, eppure il motore di ricerca lo classificava come il primo risultato.

L'aspetto più allarmante di questa scoperta è quanto facilmente il trucco si trasferisca tra diversi sistemi. I ricercatori hanno generato questi frammenti di codice ingannevoli utilizzando un modello più piccolo e open-source, eppure il trucco ha funzionato con la stessa efficacia contro sistemi molto più grandi e a codice chiuso utilizzati dalle principali aziende tecnologiche. Quando hanno testato questo approccio contro i modelli allo stato dell'arte, le prestazioni dei motori di ricerca sono crollate. In un esperimento, la capacità del sistema di trovare la risposta corretta è diminuita fino al 77 percento. I motori di ricerca, che avevano precedentemente ottenuto punteggi elevati nei test standard, non sono riusciti a distinguere tra la soluzione genuina e l'impostore manipolato. Ciò suggerisce che questi modelli non comprendono davvero il significato del codice; invece, si affidano troppo a schemi superficiali, come le parole specifiche usate per i nomi delle variabili, piuttosto che alla logica profonda del programma.

Lo studio ha anche esplorato se tali sistemi potessero essere protetti da tali attacchi. I ricercatori hanno provato ad addestrare i modelli a ignorare questi schemi ingannevoli, ma la soluzione è arrivata con un prezzo pesante. Quando hanno reso i modelli più resistenti al trucco, la loro capacità di eseguire ricerche normali ne ha sofferto significativamente, con un calo dell'accuratezza del 50 percento. Al contrario, quando hanno cercato di bilanciare sicurezza e prestazioni, i modelli rimanevano vulnerabili a una versione più sofisticata dell'attacco. Le scoperte indicano che l'attuale generazione di strumenti di ricerca del codice, nonostante i loro impressionanti benchmark, è costruita su una base molto più fragile di quanto precedentemente pensato. Essi danno priorità all'abbinamento del testo superficiale rispetto alla comprensione della funzione effettiva del software, lasciandoli esposti a manipolazioni che potrebbero interrompere i flussi di lavoro di sviluppo o, nel peggiore dei casi, portare gli sviluppatori a utilizzare codice malevolo che appare legittimo.

Questa vulnerabilità si estende oltre i semplici motori di ricerca. I ricercatori hanno dimostrato che lo stesso trucco poteva ingannare i grandi modelli linguistici utilizzati per generare codice dai repository. Quando questi sistemi avanzati venivano presentati con il codice manipolato, la loro accuratezza nella selezione della funzione corretta crollava in molteplici linguaggi di programmazione, tra cui Python, C++ e Java. L'attacco ha avuto successo perché i modelli erano attratti dagli identificatori rinominati che corrispondevano alla query, ignorando il fatto che il comportamento del codice fosse irrilevante. Lo studio conclude che l'industria deve muoversi verso metodi più robusti che comprendano la struttura e la logica del codice, piuttosto che solo il suo aspetto testuale. Fino ad allora, la fiducia riposta in questi strumenti automatizzati per guidare decisioni software critiche rimane precaria, vulnerabile a un semplice cambio di poche parole.

Sommerso dagli articoli nel tuo campo?

Ricevi digest giornalieri degli articoli più recenti corrispondenti alle tue parole chiave di ricerca — con riassunti tecnici, nella tua lingua.

Prova Digest →