Duecentosettantuno, Mythos, il kernel e quello che CURL ha capito trent'anni fa
Duecentosettantuno. È il numero di vulnerabilità di Firefox chiuse da Mozilla in una singola release. Tutte trovate, in un solo run, da un modello che Anthropic chiama Mythos. Bug accumulati negli anni (alcuni vecchi di un decennio) scovati uno a uno da un LLM lasciato libero di scorrazzare nel codice con un prompt che, in sostanza, dice: "trovami una vulnerabilità."
Duecentosettantuno. In una passata, piano terra, Mozilla, prima caos... poi ordine.
Adesso spostatevi un piano sotto, dove Daniel Stenberg, il maintainer di curl, uno che mantiene da solo (con una squadra di volontari) la "libreria HTTP" più usata del pianeta, apre la sua casella di HackerOne. Lo stesso Mythos gli ha consegnato il suo report. Una ventina di bug segnalati, descritti bene, quasi senza falsi positivi. Solo che... nessuno di questi è una vulnerabilità di sicurezza. Sono bug, sì. Cose da sistemare, certo. Ma niente RCE, niente memory corruption sfruttabile, niente che giustifichi un CVE.
Zero vulnerabilità. Su una codebase che gestisce qualsiasi cosa abbia un URL, dal vostro smart TV ai rover su Marte.
E un piano ancora più sotto, in fondo a una mailing list privata, c'è Linus Torvalds che alza le braccia. La lista di sicurezza del kernel, quella riservata, dove dovrebbero finire solo le robe critiche e da coordinare in silenzio, è "praticamente ingestibile" (parole sue, nel post di rilascio della 7.1-rc4). Cinque-dieci segnalazioni al giorno, erano due-tre alla settimana due anni fa, in larga parte duplicati. Stessa AI, stesso prompt, stesso bug, scoperti da ricercatori diversi nello stesso pomeriggio. I maintainer passano il tempo a inoltrare email e a rispondere "è già stato fissato il mese scorso." Pointless churn, lo chiama Torvalds. Lavoro inutile travestito da diligenza, per uno che non è proprio conosciuto per essere "Linus il calmo" è quasi record non aver ucciso qualcuno.
| Linus Torvalds detto il calmo |
Tre scene, una stessa storia. E una domanda che dovremmo farci tutti, perché ci riguarda parecchio: questi super-modelli LLM aiutano i criminali o affogano l'uomo comune?
Partiamo da quello che è ovvio (almeno, dovrebbe esserlo). Mythos è un mostro. Non lo dico io: lo dice Anthropic stessa; anche se è di parte e anche se non sono il solo a pensare che possa esserci troppo hype vero Bruce (Schneier)?
E qui ci sta pure la dialettica scomoda. Anche se Mythos fosse, per dirla pari pari con Stenberg, "an amazingly successful marketing stunt", cosa aspettiamo? Che la tecnologia rallenti per conservare il nostro status quo? Che gli LLM siano educatamente meno bravi a trovare bug perché noi facciamo ancora fatica a digerirne il flusso? Velasco lo dice in palestra ai suoi schiacciatori, ma il concetto vale qui dentro tale e quale: non puoi chiedere all'avversario di battere piano, di modo da ricevere bene (semi-quote). La palla arriva, arriva come arriva, e il tuo mestiere è risolverla, non commentarla. Anche perché i criminali, garantito, non staranno a discutere se Mythos era marketing o no... lo useranno e basta (e i loro cugini open-weight pure).
Talmente un mostro che ha deciso di non rilasciarlo al pubblico per "concerns about cybersecurity capabilities." Lo dice il fatto che ha trovato un bug di 27 anni in OpenBSD, sì, proprio OpenBSD, quello che da decenni si vende come l'OS più security-hardened sulla faccia della terra. Lo dice il fatto che ha messo insieme catene di exploit con sandbox escape e JIT heap spray, roba che fino a ieri era da top-tier vulnerability researcher (quelli che si contano sulle dita di una mano monca, per intenderci).
E qui c'è la prima crepa nella narrativa rassicurante.
Anthropic ha confezionato Mythos dentro Project Glasswing, un consorzio di Big Tech (Microsoft, Google, Apple, AWS, Cisco, Nvidia, JPMorgan, Linux Foundation, una quarantina di organizzazioni in tutto, con una feed di impegno di 100M$ in token) che lo usano per blindare le proprie infrastrutture. Bene. Bellissimo. La retorica è quella del "diamo un vantaggio ai difensori prima che gli attaccanti sviluppino qualcosa di equivalente." Anthropic stima sei-dodici mesi di vantaggio.
Sei-dodici mesi. E poi?
Poi succede quello che è già successo con tutto: la capability si democratizza, escono i modelli open-weight (Gemma 4 ha le sue versioni uncensored sui repository pubblici da settimane), e il "vantaggio del difensore" diventa una corsa armata in cui chi ha più tempo, più soldi e più disinvoltura morale vince. Indovinate chi... TU NO!.
Ma il punto interessante non è nemmeno questo. Il punto è la diagonale che attraversa le tre scene di cui sopra. Mozilla, curl, kernel Linux. Stesso tool, tre risultati radicalmente diversi. Perché?
Firefox è una bomba latente. Duecentosettantuno bug in una passata significano che la qualità del codice (di un browser che gira su metà dei PC del pianeta, scritto da persone pagate stipendi da Silicon Valley) è semplicemente quello che è. Stratificata, complessa, piena di legacy code, scritta sotto pressione di feature da rilasciare entro lo sprint. Mythos arriva e fa pulizia. Bene. Anche un po' inquietante, ma bene.
Curl è l'eccezione che conferma la regola al contrario (perché insidia la norma diceva Carmen). Stenberg da trent'anni mantiene una codebase ossessivamente, maniacalmente curata. Static analysis, fuzzer continui, compilatori con le opzioni più paranoiche attivate, code review chirurgiche. Da una vita. E quando arriva Mythos, il modello che ha trovato un buco di 27 anni in OpenBSD, su curl trova... bug minori. Una manciata di cose da sistemare. Niente di sfruttabile. Curl, in pratica, ha già fatto i compiti. Da decenni. Stenberg lo liquida così, testualmente: "an amazingly successful marketing stunt". E lo dice uno che il codice di curl lo conosce riga per riga, da quando il web era ancora una cosa elegante.
Il kernel Linux è la zona grigia. Migliaia di sviluppatori, milioni di righe, la base su cui poggia metà dell'internet del mondo. Qui Mythos (e i suoi cugini) trovano roba vera. Il "Copy Fail" exploit recente, un buco serio, RCE con escalation a root, che ha colpito praticamente ogni distribuzione, è stato trovato proprio così, con l'aiuto dell'AI. Ma per ogni "Copy Fail" arrivano cinque, otto, dieci segnalazioni duplicate dello stesso bug, perché tre ricercatori indipendenti hanno girato lo stesso scanner nello stesso pomeriggio.
| Torvalds e i MEH a cui ci ha abituato |
Tre scenari. Tre lezioni diverse. Una sola morale: la qualità del codice non è un dettaglio igienico. È la differenza tra sopravvivere all'era Mythos e venire smontati pezzo per pezzo.
E qui parte la domanda che ci dovremmo fare in pochi, noi che firmiamo CISO, CIO, CSO in fondo a un'email aziendale. Se curl è un gioiello e Firefox una bomba, non è una questione di budget (Mozilla ne ha mille volte di più di Stenberg). È una questione di processi. Di organizzazione del lavoro. Di strumenti scelti (o non scelti). Di obiettivi che qualcuno, in alto, ha fissato (male). Probabilmente tutte queste cose insieme, e tutte trasversali. C'è qualcuno in Mozilla che, ai vari piani della scala, avrebbe dovuto dire "fermi tutti, prima la qualità del codice e poi la feature." Non lo ha detto. O lo ha detto piano. O lo ha detto forte e nessuno lo ha ascoltato, che è ancora peggio: vuol dire che in board pesa zero. Ma allora che ci stiamo a fare? A produrre slide trimestrali sulla "postura" mentre il pavimento sotto i piedi è marcio da dieci release?
Adesso fate uno zoom out e mettete questi tre scenari in fila.
Da una parte: organizzazioni grandi che possono permettersi un AppSec team (e magari un AppSec team con accesso a Glasswing) che berranno dal firehose di Mythos, prioritizzeranno, patcheranno, sopravvivranno. Si lamentano del rumore, ma sopravvivono.
Dall'altra: l'uomo comune. Il piccolo progetto open source mantenuto da un volontario. La PMI manifatturiera con tre persone in IT (di cui zero in security). L'azienda di servizi che ha duecento dipendenti, una rete piatta come una sogliola, e un firewall configurato nel 2017. Mythos non lo useranno mai. Ma Mythos, o un suo cugino open-weight, o un wrapper venduto a centottanta euro al mese sul dark forum giusto, finirà nelle mani di qualcun altro. E il tessuto sociale (perché di quello stiamo parlando, mica di codice astratto) si regge esattamente su quella seconda fascia. È lì che gira la sanità della cittadina, l'erogatore d'acqua, il fornitore di componenti che poi finiscono nell'aereo che vi porta in vacanza.
E qui torno alla domanda con cui ho aperto: questi super-modelli aiutano i criminali o affogano l'uomo comune?
Risposta scomoda: entrambe le cose. Insieme. Non è un trade-off, è un effetto combinato.
L'attaccante non ha bisogno di patchare. Ha bisogno di trovarne UNA... e una sola vulnerabilità che funzioni, su una vittima-target che paga (con un riscatto, con dati, con accessi rivendibili). Il modello costa poco, gira in cloud, non si stanca, non chiede ferie. Il difensore (quello vero, quello sul campo, il sysadmin con le mani in pasta e il telefono che squilla) riceve il CVE pubblicato la sera, deve capirlo entro la mattina, patcharlo entro il pomeriggio, e nel frattempo gli arrivano altri venti CVE perché Mythos ha appena fatto un altro giro su un altro pezzo dello stack.
L'asimmetria attaccante/difensore è sempre esistita, certo. Ma adesso è stata moltiplicata per un fattore difficile da quantificare. E moltiplicata per zero sui costi marginali dell'attacco. Il che, in pratica, vuol dire... incalcolabile.
Stenberg ha potuto reggere l'urto perché il suo codice era già pulito. Mozilla ha potuto patchare 271 (e più) bug perché ha trecento persone e budget da nove zeri. Torvalds reggerà perché il kernel ha un esercito di maintainer e una community che lo difende.
Voi avete cosa, scusate?
Al prossimo post dedicherò probabilmente il come si esce da questa storia (alle volte ho queste pretese), ammesso che se ne esca. Ho qualche idea, alcune anche poco popolari (no, 'compriamo un altro EDR' non è tra queste. E nemmeno 'compriamo un'altra cosa). Ci penso un po' su.
Nel frattempo, magari fate un giro sulla vostra codebase. Quella di nessuno è curl.
Commenti
Posta un commento