Trail of Bits ha recentemente pubblicato due plugin, patching-bugs e regression-hunt, progettati per assistere gli sviluppatori nel correggere errori e verificare regressioni. Questi strumenti sono il risultato di una collaborazione con OpenAI nell'ambito dell'iniziativa Patch the Planet.
Due plugin, due funzioni
Il plugin patching-bugs è progettato per:
- Riprodurre gli errori segnalati
- Sviluppare correzioni
- Testare le correzioni
- 21 regressioni confermate in oltre 130 pull request consolidati
- 16 regressioni funzionali, una legata alle prestazioni, quattro relative a build o test
- Nessuna regressione ha compromesso la sicurezza
- Istruzioni concise: Solo i criteri per un buon patch e una vera regressione sono definiti.
- Passaggi modulari: Le funzioni possono essere utilizzate singolarmente o insieme.
- Schemi fissi: Ogni passo riceve e fornisce dati definiti, permettendo la verifica dei risultati precedenti.
- Proof-of-Concept live: Ogni conclusione si basa su un'esecuzione contro un'istanza di progetto in esecuzione.
- Traccia il codice modificato fino alle interfacce e elenca i candidati per regressioni.
- Riproduce ogni candidato in una distribuzione live.
- Ripete il PoC con un agente con contesto fresco.
- Valuta tutti i risultati e verifica se soddisfano i criteri di una regressione.
- Prova tripartita: Il codice originale deve fallire, il codice patchato deve passare, e il ripristino completo deve far riapparire l'errore.
- Correzione guidata da invarianti: Il patch affronta l'invariante di sicurezza violata, non solo il caso specifico.
- Analisi delle regressioni: Ogni patch deve passare attraverso "regression-hunt".
- THREAT_MODEL.md: Definisce cosa costituisce una vulnerabilità o una regressione, come risorse protette, confini di fiducia, configurazioni supportate e requisiti di prova.
- PATCHING_GUIDELINES.md (o AGENTS.md): Descrive build, test, ambito e posizione delle correzioni, rappresentazione delle modifiche e requisiti per i test di regressione.
- Un metodo di valutazione per patching-bugs
- L'analisi delle tracce degli agenti
- Maggiore configurabilità, come set di patch più piccoli o regole più flessibili per più candidati
D'altra parte, regression-hunt si concentra sulla verifica se una modifica compromette un comportamento precedentemente funzionante e supportato.
Controllo e sicurezza
Gli sviluppatori mantengono il controllo sull'operato degli agenti e verificano i risultati. I responsabili di progetto possono definire le proprie ipotesi di sicurezza e i requisiti per le patch, garantendo che gli agenti operino entro le regole del progetto. Questi requisiti si basano sull'analisi di patch già applicate e su migliaia di sessioni Codex condotte dagli sviluppatori di Trail of Bits.
Regressioni nei patch
Trail of Bits ha esaminato tutti i patch creati dai propri sviluppatori e accettati dai responsabili upstream. Hanno identificato:
Una regressione è definita come un nuovo errore che interrompe un comportamento precedentemente corretto e supportato su un percorso accessibile agli utenti o agli attaccanti. Le 21 regressioni sono state trovate tra 58 candidati, con una precisione di circa il 36%. Questo ha evidenziato la necessità di un approccio standardizzato per la scrittura e la verifica dei patch.
Principi guida
I plugin si basano su quattro principi fondamentali:
Regression-hunt: riduzione dei falsi positivi
Il plugin regression-hunt opera in quattro fasi:
L'agente deve dimostrare che non si tratta di un falso allarme, di una correzione incompleta o di un errore latente o preesistente. Un modello di minaccia esistente viene trasmesso a ogni passo. Rispetto a un agente base Codex, il plugin ha generato il 25% in meno di falsi positivi, con un intervallo di confidenza del 95% tra il 14% e il 38%. Tuttavia, alcune regressioni note sono rimaste classificate come "casi limite" a causa delle severe richieste di prova.
Patching-bugs: best practice
Il plugin patching-bugs si basa su tre principi:
Conoscenza del progetto
Due file sono essenziali per il progetto:
Più questi file sono specifici per il progetto, migliori saranno i risultati. Esempi includono GPAC, Liboqs e validator.js.
Prospettive future
Trail of Bits sta pianificando:
Conclusione
Trail of Bits raccomanda di installare entrambi i plugin, creare i file THREATMODEL.md e PATCHINGGUIDELINES.md e utilizzarli al prossimo rapporto di errore. I feedback saranno incorporati nella prossima versione.
