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

    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:

      • 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

    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:

      • 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.

    Regression-hunt: riduzione dei falsi positivi

    Il plugin regression-hunt opera in quattro fasi:

      • 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.

    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:

      • 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".

    Conoscenza del progetto

    Due file sono essenziali per il progetto:

      • 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.

    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:

      • 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

    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.