Passa ai contenuti principali

Cose che racconto nei corsi (e che poi si verificano) - April 2026

 Questa volta in italiano.

Ogni tanto vedo notizie strettamente collegate ad argomenti di cui ho parlato a lezione pochissimi giorni prima (esempio).

Ieri sera ne ho visto una molto interessante, legata proprio alla lezione di Cybersecurity di ieri mattina.

La lezione era la prima sull'argomento "Memory corruption". Tra le varie cose, ho detto che:

  • Non tutti gli errori ("bug") sono vulnerabilità; non tutte le vulnerabilità sono sfruttabili (exploitable).
  • L'impatto di una vulnerabilità dipende non tanto dall'errore ma dal programma in cui è stato commesso l'errore. Tale dipendenza è estremamente complessa e pressoché impossibile da prevedere in generale. Uno stesso errore in programmi diversi può non avere alcun impatto di sicurezza, avere impatto marginale, avere impatto potenzialmente catastrofico.
  • Le stesse considerazioni valgono per la possibilità di sfruttare una vulnerabilità conseguente ad una particolare tipologia di errore: può essere pressoché impossibile, molto complicato, complicato, banale. Dipende dal programma in cui è stato commesso l'errore.
  • Da moltissimi anni, una tipologia di errore relativamente comune è il buffer overflow: scrittura di dati "subito dopo la fine o subito dopo l'inizio" di un array. Questa tipologia di errore è tipica dei programmi scritti in C o in C++ (linguaggi cosiddetti memory unsafe) e non può accadere, ad esempio, in Java, Python o Rust (linguaggi memory safe).
  • Gli errori dovuti ai buffer overflow molto spesso corrispondono a vulnerabilità. Molti anni fa, tali vulnerabilità erano molto spesso sfruttabili facilmente ed avevano impatto catastrofico. Oggi le vulnerabilità buffer overflow sono molto più difficili da sfruttare, per motivi impossibili da sintetizzare qui (ne parlo alla fine delle lezioni sulla "Memory corruption"). Continuano ad esserci, ma sono molto difficili da sfruttare.
  • Tra le possibili tipologie di impatto di una vulnerabilità dovuta ad un buffer overflow c'è il code injection: l'attaccante modifica il contenuto della memoria di un processo in esecuzione "iniettandoci codice", cioè inserendovi una sequenza di byte che rappresenta una sequenza di istruzioni CPU; e, il programma eseguito dal processo ad un certo punto esegue proprio quella sequenza di istruzioni (chiamata in gergo "shellcode").
  • Nella lezione precedente avevo anche detto che il testing di un software tipicamente evidenzia la presenza di bug. Determinare se il bug rilevato è una vulnerabilità e, soprattutto, se quella vulnerabilità è effettivamente sfruttabile è molto complicato. In estrema sintesi, e semplificando moltissimo, il comportamento malevolo potrebbe non essere conseguenza immediata ed evidente dell'input che ha sollecitato il bug. Potrebbe emergere solo a seguito di ulteriori input, in parti del sistema completamente diverse. Input che sfruttano la "contaminazione" dello stato interno al sistema provocata dal bug in modo da aumentare l'insieme delle variabili interne controllate dall'attaccante.

Bene, ieri è stata resa pubblica una vulnerabilità nei sistemi Linux che riassume, diciamo così, tutti questi punti perfettamente.

  • Il kernel ha alcune variabili utilizzate per velocizzare l'accesso ai file su disco. In particolare, per alcuni file, il contenuto di queste variabili è gestito come una copia del contenuto del file. La lettura di un file è cioè la lettura del contenuto di queste variabili ("file cache").
  • Una certa system call ha un buffer overflow. Il buffer overflow permette di sovrascrivere proprio parte della file cache. Un attaccante può quindi inserire in parte della file cache dei dati di propria scelta, ad esempio uno shellcode.
  • Invocando quella system call, è possibile ottenere questo effetto: una successiva invocazione del comando Linux su (quindi creazione di un processo che esegue codice prelevato dal file di nome su), usa come contenuto di quel file proprio ciò che l'attaccante ha inserito nella file cache.
  • L'attaccante può quindi forzare l'esecuzione di uno shellcode. Poiché il file eseguibile su è di proprietà dell'utente root ed ha un certo attributo che dice "chi esegue questo file ha gli stessi diritti di root", la conseguenza è fantastica o terribile a seconda dei punti di vista: l'attaccante esegue codice di propria scelta con "i diritti di root".
Questo è il writeup completo (mooooolto complesso). E' interessante soprattutto perché è un esempio realistico e presentato in maniera eticamente corretta di uso della cosiddetta "AI". Emerge chiaramente che il loro è un lavoro "AI-assisted" che richiede molto tempo e molte competenze. La cosiddetta "AI" è stata uno strumento che li ha aiutati. Il che è esattamente ciò che accade da sempre nella ricerca di vulnerabilità: molto tempo, molte competenze, molti strumenti. Ed è esattamente il contrario di quello che l'industria con enormi interessi economici sta cercando, con successo, di fare credere (uno e due, ma ho ancora altre cose da scrivere su questo punto).

Questa è una sintesi decisamente non tecnica ma utile per capire l'essenza del problema.

Commenti

Popular Posts

"Ingegneria deve essere difficile"

Il ritaglio di giornale qui sotto ricorda uno degli eventi più non-trovo-un-aggettivo-appropriato del mio periodo di studente di Ingegneria a Pisa. Ricordo che una mattina iniziò a spargersi la voce "hanno murato la porta del dipartimento!".  Andammo subito a vedere ed arrivammo un pò prima dei giornalisti che scattarono questa foto. La porta era murata, intonacata, pitturata di bianco e sovrastata da una scritta "INGEGNERIA DEVE ESSERE DIFFICILE". Le "E" di "INGEGNERIA" erano scritte al contrario perché era una sorta di "marchio di fabbrica" della facoltà di Ingegneria di Pisa. L'aula più grande, quella in cui pressoché tutti gli studenti seguivano i corsi dei primi anni, aveva infatti alcuni bellissimi "affreschi scherzosi" che furono fatti nel corso delle proteste studentesche di qualche anno prima ed in cui la parola "Ingegneria" era appuntoi scritta in quel modo. Si era anche già sparsa la voce di cosa era ...

Perché studiare Analisi Matematica???

Un mio caro amico mi ha scritto: ...sono con mia figlia che studia Analisi 1...A cosa serve, al giorno d'oggi, studiare Analisi (a parte sfoltire i ranghi degli aspiranti ingegneri)? Riporto la mia risposta di seguito, forse può "motivare" qualche altro studente. ... Per un ingegnere la matematica è fondamentale perché è un linguaggio ; ed è il linguaggio essenziale per trattare gli argomenti che dovrà affrontare come ingegnere; non sono importanti i contenuti specifici; è importante, anzi fondamentale, che riesca a capirli, ricostruirli etc. ad esempio, chi deve usare l'inglese, lo usa perché in un modo o nell'altro lo conosce; nessuno di noi ha usato esattamente le frasi o i dialoghi o le regole che ha incontrato negli esercizi di inglese o di tedesco; nella matematica è lo stesso; non sono importanti i limiti, le serie, i teoremi di cauchy o che so io; ma se uno non è in grado di capire quel linguaggio allora non sarà in grado di capire davvero quas...

One must write correctly. One must explain oneself clearly.

The title of this blog says it all. It is a deep truth of fundamental importance in every profession . I have always tried hard to convince students of this fact. Explaining things clearly and correctly, whether in written or in spoken form, is hard .  It takes a lot of time and experience. Most importantly, some people may have more innate talent. Others may have fewer. However, the first step is to convince oneself of the importance of this fact. Otherwise, the battle is lost before it has begun. I have come to believe that many students have a problem in this respect, as they do not realize how important it is to be clear and correct in our own language. They either believe that technical skills are all that is needed, or that they will magically become perfectly understandable to everyone at some unspecified point in the future. This is definitely not the case. Consequently, they will encounter many unexpected and challenging obstacles in their professional careers. Writing...

Cose che racconto nei corsi (e che poi si verificano) - UPDATED

Reti di Calcolatori e Principi di Cybersecurity , intorno alla fine di settembre: " Il DNS è una infrastruttura critica per il funzionamento della società. Pensiamo a cosa accadrebbe se si bloccasse completamente la risoluzione di alcuni nomi. " Il 20 ottobre 2025 molti servizi Internet usati da molti milioni di utenti in tutto il mondo si sono bloccati o sono diventati lentissimi. Tra questi Apple Music, Airbnb, Spotify, Reddit, Perplexity AI, Duolingo, Goodreads, Fortnite, Apple TV, Mc Donald's App, Signal e molti altri (compresi alcuni servizi della pubblica amministrazione UK). Tutti questi servizi dipendono in tutto o in parte da funzionalità software in Amazon Web Services (AWS), uno dei principali fornitori di servizi cloud al mondo. AWS è composto internamente da molti servizi software. Il motivo scatenante del blocco globale è stato un problema nella risoluzione DNS del nome di un particolare servizio usato internamente in AWS. Cybersecurity , corso aziendale i...

On the Anthropic Mythos Preview - "too dangerous to release"

(updated twice after first posting, see below) On April 7-th 2026, Anthropic issued a technical report titled  Assessing Claude Mythos Preview’s cybersecurity capabilities . This report has quickly sparked the all-too-common (and deeply misleading) narrative of an imminent cybersecurity apocalypse due to the (supposedly) immense and groundbreaking capabilities of AI. For example, The New York Times :  I’m really not being hyperbolic when I say that kids could deploy this by accident. Mom and Dad, get ready for: "Honey, what did you do after school today?” “Well, Mom, my friends and I took down the power grid. What’s for dinner?” That is why Anthropic is giving carefully controlled versions to key software providers so they can find and fix the vulnerabilities before the bad guys do — or your kids. What does Anthropic say? The following paragraphs contain a slightly edited AI-generated summary of the Anthropic report Anthropic has introduced Claude Mythos Preview, a langu...