𝗧𝗵𝗲 𝗧𝗵𝗶𝗻𝗴 𝗬𝗼𝘂 𝗩𝗲𝗿𝗶𝗳𝗶𝗲𝗱 𝗜𝘀 𝗡𝗼𝘁 𝗧𝗵𝗲 𝗧𝗵𝗶𝗻𝗴 𝗧𝗵𝗮𝘁 𝗥𝘂𝗻𝘀
Recentemente, un nuovo strumento ha attirato l'attenzione. Si posiziona davanti a comandi come curl e ti mostra lo script prima che venga eseguito. Evidenzia le parti pericolose. Questo strumento è utile, ma non affronta il problema principale.
Il problema non è se i byte sembrano malevoli. Il problema è che un URL può servire uno script oggi e uno diverso domani. Il tuo controllo si applica solo a un singolo istante temporale.
Gli esperti di sistemi chiamano questo fenomeno TOCTOU. Sta per time-of-check to time-of-use. Controlli un file, poi qualcuno lo sostituisce prima che tu lo apra. Il tuo controllo era corretto, ma era corretto rispetto a qualcosa che non esiste più.
Gli agenti AI rendono questo rischio molto più elevato. Gli agenti eseguono controlli costantemente.
- Un agente interroga un URL e considera una risposta positiva come un segno di sicurezza.
- Un agente legge un profilo e tratta una dichiarazione come un fatto.
- Un agente vede una firma e assume che i byte esatti che sta per eseguire siano gli stessi che sono stati firmati.
Ogni controllo associa la fiducia a un momento o a un canale. L'agente agisce quindi su qualcosa a valle che il controllo non ha mai coperto.
Per esempio, un agente potrebbe convalidare il manifesto di uno strumento e memorizzarne il risultato nella cache. Se l'endpoint cambia prima che l'agente chiami lo strumento, l'agente eseguirà la versione errata. La convalida è passata, ma è passata per un manifesto che l'agente non usa più.
Cercare di risolvere il problema effettuando scansioni più approfondite non funziona. Più regole non fanno che restringere la finestra temporale. Non la chiudono. Un produttore può comunque servire un artefatto diverso nei millisecondi che intercorrono tra la scansione e l'esecuzione.
Per risolvere il problema, smetti di verificare il momento. Inizia a verificare l'artefatto.
Vincola le tue decisioni a un oggetto immutabile invece che a un fetch.
- Non approvare un URL.
- Approva un hash del contenuto specifico.
- Meglio ancora, approva un hash che sia stato firmato da una chiave fidata.
Questo cambia la domanda da "questo testo è pericoloso?" a "questo è l'esatto artefatto per cui la chiave ha garantito?". Se l'hash non corrisponde, lo rifiuti. Non c'è discussione.
Questo approccio rende anche la verifica portabile. Una terza parte può utilizzare lo stesso hash e la stessa firma per verificare autonomamente il risultato. Questa è una proprietà dell'oggetto, non una proprietà del tuo pomeriggio.
Usa queste due domande per testare qualsiasi verifica:
- Il controllo è vincolato all'esatto artefatto utilizzato, o a un momento e a una promessa?
- Uno sconosciuto può rieseguire il controllo e giungere allo stesso verdetto?
Se la risposta alla prima è un momento, il controllo ha una data di scadenza. Se la risposta alla seconda è no, non hai una verifica. Hai una testimonianza.
La maggior parte delle attuali verifiche degli agenti è solo una testimonianza. "L'handshake è riuscito" o "la scansione era pulita" sono affermazioni vere su un momento, ma non sono collegate ai byte che vengono effettivamente eseguiti.
Gli agenti agiscono migliaia di volte senza supervisione umana. Se non ancorate la fiducia agli artefatti, l'intera catena erediterà il controllo più debole e più vecchio.
Non serve nuova tecnologia per risolvere questo problema. L'indirizzamento basato sul contenuto e le firme digitali hanno decenni di storia. Devi semplicemente puntarli verso la cosa giusta: gli esatti byte che vengono eseguiti, non la richiesta che li ha recuperati.
Prima di fidarti di un controllo, scopri a cosa è collegato. Se è collegato a un momento, è già scaduto.
Fonte: https://dev.to/anp2network/the-thing-you-verified-is-not-the-thing-that-runs-hnl
Community di apprendimento opzionale: https://t.me/GyaanSetuAi