La scoperta di un bug critico in Safari che viola la Same-Origin Policy
Quando Anthropic ha presentato Mythos e Project Glasswing, le reazioni sono state immediate e polarizzate. Alcuni hanno liquidato la notizia come un mero tentativo di marketing basato sulla paura, mentre altri l'hanno considerata un cambiamento credibile nel panorama delle minacce. La verità, probabilmente, sta nel mezzo. Ho deciso di testare questa situazione per conto mio, sfruttando l'accesso recente al programma Trusted Access for Cyber di OpenAI. Ho scoperto che GPT-5.4 ha identificato i bug e ha aiutato a assemblare una catena di exploit funzionante. Tuttavia, non si è trattato semplicemente di un prompt del tipo "creami un exploit". È stato necessario guidarlo con conoscenze specifiche del dominio, sondaggi iterativi e la capacità di riconoscere quali percorsi erano effettivamente sfruttabili.Il contesto della sicurezza nei browser moderni
Nelle versioni moderne di browser come Safari, lo sfruttamento non riguarda tanto la scoperta di bug quanto piuttosto la scoperta di bug che ancora hanno rilevanza dopo numerosi livelli di difesa. Il bug di cui parlerò oggi si colloca in una categoria particolarmente interessante: non fornisce un percorso per l'esecuzione remota di codice (RCE) o per la fuga dalla sandbox, ma piuttosto attraversa un confine diverso, violando la Same-Origin Policy. Se avessi visitato una pagina maliziosa da qualsiasi dispositivo Apple, questa avrebbe potuto leggere dati autenticati cross-origin da altri siti che usi, inclusi token di accesso e altre informazioni sensibili, rendendo il furto di account banale.La struttura a matrioska della sandbox
Lo sfruttamento dei browser nel 2026 è molto simile a essere intrappolati in una matrioska russa. Si inizia nella matrioska più piccola e ogni volta che si esce da un livello, ci si accorge di essere ancora intrappolati in un altro. Trovare un bug di memoria a basso livello non è la stessa cosa che trovare un exploit. Molti di questi bug "muoiono" nel divario tra "è avvenuta la corruzione della memoria" e "qualcosa di significativo ha attraversato un confine di sicurezza".Il bug nella logica di aggiornamento
Il bug originale risiede nella logica di aggiornamento per la memoria WebAssembly non condivisa e ridimensionabile. Quando una memoria WebAssembly.Memory cresce in modalità BoundsChecking, JavaScriptCore può sostituire il handle della memoria sottostante. Questo non è il bug. Il bug è ciò che accade dopo a causa di memory.toResizableBuffer(). Safari aggiorna i metadati del buffer dopo memory.grow(), ma lascia m_data che punta alla vecchia allocazione liberata. Di conseguenza, dopo una crescita della memoria, JavaScript può detenere un buffer il cui dimensioni riportate e il cui handle sono nuovi, ma il cui puntatore dei dati effettivi fa ancora riferimento alla vecchia allocazione Primitive Gigacage liberata. Questo si traduce in una finestra tipizzata obsoleta sulla memoria liberata.Perché il bug non sembrava sfruttabile inizialmente
La finestra obsoleta è confinata all'interno della Gigacage di JavaScriptCore, limitando ciò che si può fare con essa. Molti target tipici non atterrano mai lì, mancano di struttura utile o non producono alcun effetto transfrontaliero.Il punto di svolta
Invece di chiedermi "come posso passare dalla mia vista WASM obsoleta a uno stato protetto del browser?", ho iniziato a chiedermi una domanda migliore: "Quale codice del browser prende dati che JavaScript non è autorizzato a leggere, ma che comunque copia in memoria del renderer normale?". Questo ha restringto lo spazio di ricerca ai sottosistemi che gestiscono dati sensibili cross-origin e che allocano comunque memoria supportata da ArrayBuffer come parte del loro pipeline interno. Questo punta direttamente al Fetch.La violazione della modalità
La parte sorprendente è Response.clone(). Se FetchResponse::clone() viene chiamato mentre la risposta è ancora in fase di caricamento, WebKit creerebbe internamente un flusso leggibile in modo che possa deviare il corpo tra la risposta originale e la clonazione. Il percorso normale del corpo blocca le risposte opache, ma il percorso FetchResponse::clone() non applica lo stesso controllo del corpo opaco inizialmente. Una volta che ciò accade, i byte della risposta nascosta iniziano a diventare oggetti del renderer molto reali.La catena di sfruttamento
A un livello alto, l'exploit è diventato: 1. Forzare la memoria WASM target nel percorso BoundsChecking. 2. Chiamare memory.toResizableBuffer(). 3. Far crescere la memoria. 4. Mantenere il buffer ridimensionabile obsoleto il cui puntatore mira ancora alle pagine liberate della Primitive Gigacage. 5. Innescare una richiesta cross-origin fetch(…, { mode: “no-cors”, credentials: “include” }). 6. Chiamare response.clone() mentre la risposta è ancora in caricamento. 7. Lasciare che gli interni di Fetch materializzino i byte del corpo nascosti in ArrayBuffer ordinari del renderer. 8. Riconquistare le pagine coperte da WASM obsoleto con quelle allocazioni. 9. Leggere i byte cross-origin attraverso la vista obsoleta.La deviazione file://
Una delle parti più strane della ricerca è stata che il comportamento del lato richiesta variava a seconda di dove veniva avviata. Nelle mie prove, le richieste cross-origin erano molto più facili da attivare da file:// che da una pagina di attacco https normale. Questo sembra contrario all'intuizione finché non si guarda il modo in cui WebKit gestisce gli origin locali. Document.cpp ha casi speciali espliciti intorno ai documenti locali e alle impostazioni come allowUniversalAccessFromFileURLs e allowFileAccessFromFileURLs.L'impatto sulla sicurezza degli utenti
Questo exploit rappresenta una minaccia significativa per la sicurezza degli utenti di dispositivi Apple e non solo. La capacità di leggere dati cross-origin, come token di accesso e informazioni sensibili, trasforma un semplice attacco basato su web in un potenziale furto di identità. La dimostrazione pratica inviata ad Apple mostra chiaramente come dati da servizi come Apple Connect e iCloud possano essere esposti, ma il problema è molto più ampio: qualsiasi sito web potrebbe essere vulnerabile.Il ruolo di GPT-5.4 nell'identificazione del bug
Anche se GPT-5.4 ha svolto un ruolo cruciale nell'identificare i bug e assemblare la catena di sfruttamento, è importante sottolineare che il processo non è stato automatico. La guida dell'IA ha richiesto conoscenze specifiche del dominio, una ricerca iterativa e la capacità di distinguere quali percorsi fossero effettivamente sfruttabili. Questo dimostra che, nonostante i progressi dell'intelligenza artificiale, la competenza umana rimane indispensabile per la sicurezza informatica.Le implicazioni per gli sviluppatori web
Per gli sviluppatori web, questo bug sottolinea l'importanza di comprendere appieno le implicazioni della Fetch API e delle risposte opache. Anche se il modello Fetch è progettato per proteggere i dati cross-origin, questo caso dimostra che vi sono ancora vulnerabilità che possono essere sfruttate. Gli sviluppatori dovrebbero essere consapevoli dei limiti delle misure di sicurezza esistenti e adottare pratiche di programmazione che minimizzino i rischi.Le risposte di Apple e la correzione del bug
Dopo la segnalazione del bug, Apple ha avviato un'indagine approfondita e ha rilasciato aggiornamenti di sicurezza per correggere la vulnerabilità. Tuttavia, questo caso evidenzia la necessità di una maggiore vigilanza e di un approccio proattivo alla sicurezza da parte delle aziende tecnologiche. Gli utenti sono invitati a mantenere i loro dispositivi aggiornati per proteggersi da potenziali attacchi.Le lezioni apprese per la sicurezza informatica
Questo exploit offre importanti lezioni per il campo della sicurezza informatica. Innanzitutto, dimostra che anche i bug apparentemente contenuti possono avere conseguenze significative se combinati con altri elementi del sistema. Inoltre, sottolinea l'importanza di un pensiero creativo e di una prospettiva diversa nel risolvere problemi complessi. Infine, evidenzia la necessità di una collaborazione continua tra ricercatori, sviluppatori e aziende per affrontare le sfide della sicurezza informatica.Il futuro della sicurezza dei browser
Con l'evoluzione continua dei browser e delle tecnologie web, è probabile che emergano nuove vulnerabilità. Tuttavia, casi come questo possono servire da spunto per migliorare le architetture di sicurezza e sviluppare soluzioni più robuste. La comunità della sicurezza informatica deve rimanere vigile e pronta a rispondere alle nuove minacce che potrebbero emergere.Conclusioni
L'analisi di questo exploit rivela la complessità della sicurezza dei browser moderni e la necessità di un approccio multidisciplinare per affrontare le minacce. La collaborazione tra intelligenza artificiale, esperti di sicurezza e sviluppatori è essenziale per garantire un ambiente web più sicuro per tutti gli utenti.Nota Editoriale e Disclaimer
Le guide e i contenuti pubblicati su GoYou sono frutto di attività di ricerca e analisi indipendente, a scopo informativo, educativo e di approfondimento.
GoYou non costituisce una testata giornalistica né un prodotto editoriale ai sensi della Legge n. 62/2001 e non svolge attività di informazione in tempo reale.
Il progetto GoYou non fornisce consulenza professionale, tecnica, legale o finanziaria e declina ogni responsabilità per l’uso improprio delle informazioni pubblicate.
Nel settore Crypto, ogni investimento comporta rischi: si invita il lettore a informarsi sempre in modo autonomo prima di assumere qualsiasi decisione.