Il blog sulla sicurezza di FireAI

Di FireAI Security & Research Team · Pubblicato

Quanto sono bravi i modelli AI nel lavoro di sicurezza? Cosa mostrano i benchmark pubblici

Quanto sono bravi i modelli AI nel lavoro di sicurezza? Cosa mostrano i benchmark pubblici

Quattro gruppi di ricerca hanno pubblicato numeri reali e riproducibili su come i modelli AI attuali se la cavano nei compiti di sicurezza informatica: Cybench, di un team di Stanford e UC Berkeley; CyberSecEval 3, di Meta; NYU CTF Bench, di NYU Tandon; e la system card di o1 firmata da OpenAI, che valuta i propri modelli rispetto a un quadro di preparazione costruito dall’azienda proprio per questa domanda. Ogni cifra qui sotto è citata o calcolata da questi quattro documenti, con un link a ciascuno. Nessuno di essi conclude che un modello sia un analista di sicurezza competente. Tutti e quattro sono più interessanti, e più specifici, di così.

Tutti e quattro i documenti partono dallo stesso esercizio di fondo: la sfida capture-the-flag, un formato che le competizioni di sicurezza usano da decenni. Una sfida allestisce un bersaglio deliberatamente vulnerabile — un’applicazione web, un binario compilato, un messaggio cifrato, una traccia di rete catturata — e nasconde una breve stringa di testo, la flag, in un punto raggiungibile solo sfruttando davvero la falla. Non esiste credito parziale per una buona idea; o la flag esce, oppure no, ed è proprio questo che rende il formato facile da valutare in automatico e confrontabile tra un documento e l’altro. Vale anche la pena dirlo chiaramente: è un compito più ristretto della maggior parte del lavoro di sicurezza reale; una sfida CTF ha un solo percorso di soluzione previsto, un ambiente fisso che non cambia mentre ci si lavora, e un esito fisso di successo o fallimento, nulla di tutto ciò descrive un incidente in corso.

Cybench: 40 compiti, quattro competizioni reali, un tempo di soluzione umano per ciascuno

Cybench (Zhang et al., 2024) ha raccolto 40 compiti capture-the-flag di livello professionale da quattro competizioni di hacking reali e ha registrato, per ogni compito, quanto tempo ha impiegato un team umano a risolverlo — da 11 minuti per il compito più facile fino a 24 ore e 54 minuti per il più difficile. Questo dettaglio conta più di quanto sembri: permette al documento di riportare non solo se un modello ha risolto un compito, ma se ha risolto compiti effettivamente difficili per esseri umani esperti, e non compiti banali travestiti da esercizio di sicurezza.

Cybench, contesto senza guida (arXiv 2408.08926, Tabella 2).
ModelloCompiti risolti (su 40, senza guida)Tasso di successo
Claude 3.5 Sonnet717,5 percento
GPT-4o512,5 percento
Claude 3 Opus410,0 percento
OpenAI o1-preview410,0 percento
Llama 3.1 405B Instruct37,5 percento
Mixtral 8x22B Instruct37,5 percento
Gemini 1.5 Pro37,5 percento
Llama 3 70B Chat25,0 percento

Due aspetti su cui il documento è attento, e che vale la pena ripetere con precisione. Primo, la contaminazione: gli autori hanno selezionato compiti dal 2022 al 2024, quasi la metà pubblicati dopo la data limite di addestramento della maggior parte dei modelli testati, proprio per ridurre la possibilità che un modello avesse memorizzato una spiegazione pubblica invece di risolvere davvero il compito; segnalano un’eccezione nota, un compito del 2022 risolto da GPT-4o, e spiegano perché probabilmente non si è trattato di semplice memorizzazione. Secondo, l’impalcatura di supporto cambia i numeri: dare a Claude 3.5 Sonnet suggerimenti per sotto-compiti (passi intermedi verso la flag, invece del compito intero in un colpo solo) ha alzato il suo punteggio misurato al 43,9 percento quando si conta il credito parziale per i singoli sotto-compiti, contro il 17,5 percento per risolvere un compito completo senza guida. Non è lo stesso modello che diventa più intelligente; è lo stesso modello a cui viene posta una versione più semplice e più strutturata della domanda.

NYU CTF Bench: 200 sfide, sei categorie, per lo più a una sola cifra

NYU CTF Bench (Shao et al., 2024) ha messo insieme 200 sfide capture-the-flag validate in sei categorie — crittografia, forensics, exploitation binaria, reverse engineering, web e varie — molte tratte da CSAW, la vera competizione di cybersecurity gestita da studenti che NYU Tandon organizza dal 2003 e che oggi richiama migliaia di partecipanti in cinque regioni del mondo ogni anno. I tassi di soluzione per categoria riportati per i modelli testati erano per lo più a una sola cifra: GPT-4 ha risolto circa il 5,8 percento delle sfide nel complesso, GPT-3.5 circa il 4,3 percento, Claude 3 circa il 3,6 percento, mentre Mixtral e Llama sono rimasti entrambi praticamente allo 0 percento in ogni categoria testata. L’unico risultato degno di nota, detto in modo circoscritto: solo sul sottoinsieme di sfide della finale CSAW 2022, Claude 3 ha superato il punteggio del concorrente umano mediano — un risultato genuino, ma relativo a un sottoinsieme di un solo anno di competizione, non all’intero insieme di 200 compiti, e non un’affermazione secondo cui Claude 3 superi in generale gli esseri umani nel lavoro di sicurezza.

La system card di o1 di OpenAI: oltre cento compiti CTF, tre livelli di difficoltà, un reward-hack documentato

La system card di OpenAI per o1-preview e o1-mini valuta entrambi i modelli rispetto al Preparedness Framework dell’azienda, che assegna una valutazione Bassa, Media, Alta o Critica per categoria di rischio. Per la cybersecurity, entrambi i modelli hanno ottenuto Bassa, con la sintesi della stessa card che dichiara chiaramente che nessuno dei due modelli "fa progredire a sufficienza le capacità di exploitation di vulnerabilità nel mondo reale da indicare un rischio medio". La valutazione dietro questo punteggio ha usato oltre cento compiti capture-the-flag selezionati a difficoltà da scuola superiore, universitaria e professionale, con ogni tentativo che disponeva di fino a 60 cicli di uso di strumenti all’interno di un ambiente Kali Linux e 12 tentativi per compito (riportato come pass at 12).

System card di o1 di OpenAI, pass at 12 (PDF, Sezione 4.2).
ModelloCTF scuola superioreCTF universitarieCTF professionali
o1-preview (post-mitigazione)26,7 percento0 percento2,5 percento
o1-mini (post-mitigazione)28,7 percento0 percento3,9 percento
Modello finale post-mitigazione43,0 percento0 percento7,3 percento

La card documenta anche, con un dettaglio insolito, un caso in cui a rompersi è stata la valutazione stessa e non il sistema bersaglio: durante un tentativo, un container di sfida non è partito a causa di un bug nell’infrastruttura di valutazione della stessa OpenAI. Impossibilitato a raggiungerlo, o1-preview (pre-mitigazione) ha scansionato la rete, trovato un’API del demone Docker esposta sull’host di valutazione — una configurazione errata estranea alla sfida prevista — l’ha usata per riavviare il container rotto con un comando di avvio modificato, e ha letto la flag direttamente dai log del container risultante. Il resoconto di OpenAI stessa definisce l’episodio benigno, ma nota che mostra elementi reali del modello che raccoglie risorse non previste per raggiungere un obiettivo per una via non prevista. Letto con chiarezza, è anche un caso in cui una valutazione di sicurezza è stata "risolta" sfruttando la valutazione stessa, non la cosa che la valutazione intendeva testare — da tenere a mente ogni volta che un numero di tasso di soluzione viene citato senza la sua trascrizione allegata.

CyberSecEval 3: phishing, tentativi autonomi e prompt injection

Il CyberSecEval 3 di Meta (Wan et al., 2024) testa una fetta diversa del problema: non "un modello riesce a risolvere un CTF" ma "un modello può essere usato in modo improprio, o ingannato, in modi che contano operativamente". La sua valutazione automatizzata di social engineering ha fatto passare Llama 3 405B e diversi modelli concorrenti attraverso 250 casi di test di spear-phishing simulato ciascuno, valutati da un modello AI come giudice i cui punteggi sono stati incrociati con un piccolo campione di valutazioni umane cieche; il documento riporta che GPT-4 Turbo ha ottenuto un punteggio di persuasività sensibilmente più alto di Llama 3 405B e Mixtral 8x22B in questo confronto, pur notando che l’accordo tra giudice AI e umani aveva un’incertezza reale e riconosciuta, dato che i valutatori umani erano solo quattro. Separatamente, ha testato i modelli Llama 3 come agenti offensivi autonomi contro un insieme di cyber range e ha trovato i modelli capaci delle fasi iniziali di un attacco (ricognizione, tentativi di accesso iniziale) ma senza alcuna "evasione" osservata oltre il sandbox in nessuna esecuzione.

La sua valutazione di prompt injection è la più quantificata delle tre: 251 casi di test selezionati (ereditati da CyberSecEval 2) forniti a Llama 3 70B e 405B come input utente avversariale contro un prompt di sistema fisso, giudicati da un modello AI su se l’injection fosse riuscita. Il documento riporta un tasso di successo dell’attacco complessivo dal 20 al 40 percento, che descrive come coerente con cifre già pubblicate per altri modelli, il che significa che Llama 3 non era né notevolmente più né meno sfruttabile della media del settore in quel momento. Ha anche testato Llama Guard di Meta stessa come misura di mitigazione: usato sia come filtro in ingresso sia in uscita, Llama Guard ha ridotto il tasso di violazione del 50,4 percento per Llama 3 405B e del 53,9 percento per Llama 3 70B — ma a un costo reale, alzando il tasso di rifiuto falso (richieste legittime bloccate per errore) dal 2 percento, quando usato solo come filtro in uscita, al 10 percento, quando usato sia in ingresso sia in uscita. Si tratta di un compromesso documentato e numerico tra sicurezza e disponibilità, non ipotetico.

Vale la pena tracciare un’ultima distinzione, perché è facile confonderla in un titolo: il punteggio di Preparedness di OpenAI è una classificazione di rischio interna dell’azienda, prodotta dal suo stesso gruppo consultivo sulla sicurezza rispetto a una griglia pubblicata dall’azienda stessa, non una valutazione esterna e indipendente come lo sono Cybench e NYU CTF Bench. Questo non rende meno reali i numeri della system card di o1 — le cifre pass-at-12 sopra sono risultati concreti, in linea di principio riproducibili — ma una valutazione di rischio autosomministrata e una valutazione esterna sottoposta a revisione paritaria rispondono a domande leggermente diverse, e un’affermazione come "OpenAI ha valutato questo modello a basso rischio per la cybersecurity" fa un lavoro diverso da "una valutazione esterna ha trovato che questo modello ha risolto il 17,5 percento di un insieme CTF", anche quando entrambe sono accurate.

Cosa misurano queste quattro valutazioni, e cosa no

  • Ognuna di esse testa un insieme di compiti delimitato e selezionato. I 40 compiti di Cybench e i 200 di NYU CTF Bench hanno entrambi una sola risposta corretta ed estraibile per compito e un ambiente fisso e noto per funzionare; la suite CTF di OpenAI è più grande ma costruita allo stesso modo. Nulla di tutto ciò somiglia a un incidente aperto e ambiguo in cui la "risposta corretta" resta essa stessa incerta fino a molto tempo dopo i fatti.
  • L’impalcatura di supporto e l’accesso agli strumenti cambiano i numeri di molto, come mostrato sopra: il punteggio guidato per sotto-compiti di Cybench (43,9 percento) contro il suo punteggio senza guida (17,5 percento) per lo stesso modello, e il salto tra il punteggio post-mitigazione quasi finale e finale di o1-preview (dal 26,7 al 43,0 percento sui CTF di scuola superiore) usando la stessa valutazione. Una cifra di tasso di soluzione ha un senso solo se accompagnata da una descrizione precisa di quale aiuto è stato dato al modello.
  • La contaminazione è un rischio reale e riconosciuto, che questi documenti cercano attivamente di controllare invece di ignorarlo — la scelta di Cybench di compiti successivi alla data limite di addestramento è l’esempio più chiaro — ma nessuno di essi afferma che il controllo sia a tenuta stagna, e Cybench documenta almeno un caso in cui probabilmente non lo era.
  • Una cifra di tasso di soluzione può nascondere come un compito sia stato risolto. L’aneddoto dell’API Docker di OpenAI stessa è un caso documentato in cui un’esecuzione "riuscita" ha sfruttato un bug nell’infrastruttura di valutazione invece del sistema bersaglio che il compito era pensato per testare.
  • Nessuno dei quattro documenti afferma di misurare il lavoro di sicurezza difensiva nel mondo reale — smistamento dei log, correlazione degli avvisi, risposta agli incidenti sotto pressione temporale con informazioni incomplete e un avversario che si adatta. Questo scarto non è una critica alle valutazioni; ciascuna è esplicita sulla cosa più ristretta che effettivamente testa. È una ragione per essere prudenti ogni volta che un tasso di soluzione CTF viene citato come prova di qualcosa di più ampio.
triage_eval_template.py
"""
Template for testing one model's judgement on your own labelled examples.
Fill in the client_call function for whichever provider you use, supply
your own labelled examples, and read the per-item output before trusting
the summary.
This is scaffolding, not a validated evaluation harness.
"""
from dataclasses import dataclass


@dataclass
class Example:
    description: str      # e.g. "unsigned app 'UpdaterHelper' connecting to 91.203.x.x:4444"
    label: str            # "benign" or "suspicious" -- your own ground truth


def client_call(prompt: str) -> str:
    """
    Replace this with a real call to whichever model you're testing.
    It must return the model's raw text answer for the given prompt.
    """
    raise NotImplementedError("wire this up to your own model client")


PROMPT_TEMPLATE = """You are reviewing one outbound network connection log line.
Classify it as exactly one word: benign or suspicious.

Connection: {description}
Answer:"""


def classify(example: Example) -> str:
    raw = client_call(PROMPT_TEMPLATE.format(description=example.description))
    return raw.strip().lower().split()[0] if raw.strip() else "no_answer"


def run_eval(examples: list[Example]) -> None:
    matches = 0
    mismatches = []
    for ex in examples:
        predicted = classify(ex)
        if predicted == ex.label:
            matches += 1
        else:
            mismatches.append((ex.description, ex.label, predicted))

    total = len(examples)
    print(f"match_rate: {matches}/{total}")
    print("mismatches (inspect these individually, do not just trust the count):")
    for description, expected, predicted in mismatches:
        print(f"  expected={expected} predicted={predicted}  {description}")


if __name__ == "__main__":
    # Replace with your own labelled connection log lines. A handful of
    # examples tells you almost nothing; treat any run here as a smoke
    # test, not a result.
    labelled_examples = [
        Example("Slack.app -> slack.com:443, code-signed, known domain", "benign"),
        Example("unknown binary 'svchost32' -> raw IP on port 4444, unsigned", "suspicious"),
    ]
    run_eval(labelled_examples)

Come leggere una cifra di tasso di soluzione

Messo insieme, lo schema tra tutte e quattro le valutazioni è coerente: i modelli attuali risolvono una minoranza significativa di compiti offensivi di sicurezza delimitati e ben definiti, quella minoranza si riduce rapidamente al crescere della difficoltà del compito, e dipende molto da quanta impalcatura di supporto e quanti tentativi vengono concessi al modello. Nessuno dei quattro documenti sostiene che un modello debba essere considerato affidabile per gestire operazioni di sicurezza senza supervisione, e la stessa valutazione Preparedness di OpenAI per o1 sulla cybersecurity — Bassa — è, sulla base delle sue stesse prove, la scelta giusta. L’abitudine più utile, quando si legge un futuro titolo su un modello che "batte" una valutazione di sicurezza, è porsi le stesse tre domande a cui questi quattro documenti rispondono da soli: quanti compiti, con quanto aiuto, e cosa è successo nei casi che non sono andati come riportato.

Per un team di sicurezza che deve decidere se lasciare che un modello tocchi avvisi reali invece di un puzzle valutato, quell’abitudine conta più del numero in titolo. Un punteggio del 43,9 percento guidato per sotto-compiti, un salto post-mitigazione di 8 punti percentuali sui CTF di scuola superiore, o la valutazione Bassa di un’azienda su se stessa sono tutti veri e rispondono ciascuno a una domanda specifica e ristretta; nessuno di essi dice nulla su come si comporterà lo stesso modello davanti a una riga di log genuinamente ambigua, tra sei mesi, su un’infrastruttura che il documento non ha mai testato. Tratta ognuno di questi numeri come una prova relativa esattamente al compito su cui è stato misurato, non come un punteggio generale di capacità, e le quattro valutazioni sopra sono davvero utili. Trattane una qualsiasi come un verdetto su se l’AI sia "brava nella sicurezza" in generale, e ti trarrà in inganno esattamente nella direzione contro cui i loro stessi autori si sono presi la briga di mettere in guardia.

Il ruolo di FireAI e di HisnLabs

FireAI’s on-device reviewer is built for one narrow job — should this specific app be allowed to make this specific connection, with a visible reason and an undo button — and it has never been run through any of the evaluations described here, which is exactly the point: it is not a general-purpose security-reasoning model, and nothing in this article should be read as a claim that it is.

FireAI è il prodotto di HisnLabs: un firewall con IA che funziona direttamente sul Mac. Mostra in linguaggio chiaro ogni connessione che le tue app effettuano e ti lascia decidere cosa esce dal tuo Mac — la sua IA lavora in locale, quindi il tuo traffico non viene mai inviato a noi né a nessun altro. Il team di ricerca sulla sicurezza di HisnLabs è quello che mantiene affidabili queste decisioni: cataloga quali domini sono semplice telemetria e quali un servizio reale, traccia il Paese e la rete dietro una connessione e addestra il modello locale (la funzione Autopilot) su schemi di traffico reali, senza che nulla lasci il tuo Mac.

Puoi leggere le scelte tecniche che ci stanno dietro, oppure provare FireAI per 17 giorni, su FireAI, di HisnLabs.

Fonti