Mi dispiace, lo sono @lynX, ma purtroppo non è colpa mia.
Proprio Frederik Braun ha suggerito di continuare su Lobste.rs la conversazione dopo aver chiuso la segnalazione. (una delle tante evidenze che mi hanno mostrato come l’open source sia profondamente diverso dal software libero che è espressione della curiosità hacker).
Purtroppo su Lobste.rs entrambi i confronti sono stati censurati (e io sono stato bannato).
Braun ha iniziato il dialogo sul Lobste.rs in modo molto simpatico e gentile:
Okay, I’ll bite.
Purtroppo non ha risposto alle semplici domande di un hacker, evidenziando mala fede.
Anche rain1 inizialmente era piuttosto ostile nei confronti del mio bug report.
Tuttavia dopo la pubblicazione del primo exploit (molto grezzo per evitare che fosse immediatamente utilizzabile da chi non lo conoscesse ancora) in cui mostro come bypassare firewall e proxy per conoscere i servizi in esecuzione sulla macchina del visitatore di una qualsiasi pagina web, lui l’ha reso immediatamente usabile su un fiddler estendendolo alla mappatura di tutta la rete privata del visitatore. In altri termini ha pubblicato un attacco che permette di penetrare in una rete privata, mapparne e (attraverso un DNS rebinding) utilizzarne i servizi HTTP/HTTPS disponibili. Immagina, giusto per far capire agli altri la gravità del problema per i diritti civili, cosa si possa fare attraverso questi attacchi in una rete dove sono presenti IoT di vario genere, telecamere di sorveglianza, sistemi informativi aziendali, CMS cui l’utente è autenticato automaticamente etc… Grazie al comportamento omissivo di Mozilla&friends, le persone, le aziende e persino i governi non sono consapevoli che i loro costosissimi firewall servono a poco o nulla se navigano sul web con JavaScript e/o WebAssembly abilitati.
Entrambi gli attacchi sono stati verificati su reti configurate in modo molto professionale.
Quando su altri canali mi hanno informato che il Governo Russo stava usando l’attacco che avevo ideato per mostrare la gravità del problema (in realtà è stato il quarto o il quinto che mi è venuto in mente), l’ho segnalato a Mozilla e rain1. Putroppo a Mozilla, la sicurezza e la libertà dei cittadini russi non interessa. E secondo me, neanche di quelli italiani o europei.
Questo exploit è solo uno degli exploit possibili, altri molto semplici sono elencati nel bug report e qualunque programmatore competente (come spero siano in Mozilla Security) ne può ideare a bizzeffe.
Una intera classe di vulnerabilità
Il problema è molto semplice, nascosto in bella vista da decenni.
Un browser che esegua ciecamente il codice fornito da terze parti può accedere come minimo a:
- gli IP associati al PC su cui gira il browser
- la sua banda sulle diverse reti
- la potenza di calcolo
- la RAM
- e può scrivere il disco (browser cache)
Più naturalmente qualsiasi vulnerabilità nel sandboxing del browser o nei layer sottostanti (ricordi Meltdown e Spectre?)
Questi attacchi possono essere serviti specificatamente ad uno o più visitatori appartenenti ad un gruppo identificabile (anche attraverso siti di terze parti se sei una CDN) customizzandoli come si fa con gli Ads e rimuovendo le tracce attraverso gli header HTTP di Cache-Control.
Per detectarli, pur nell’impossibilità di provarli se l’attaccante è in gamba, hai bisogno di uno dei tool di sicurezza che il Governo Russo cerca sulla tua macchina (proxy etc che loggino la comunicazione)
Come mitigarle
La cosa eticamente devastante per un hacker che crede nell’onestà intellettuale è stato il rifiuto di informare gli utenti del problema. Ma anche le mitigazioni proposte sono semplici da implementare in un browser. (perdonatemi copio dal testo inglese che ho scritto in precedenza, sto finendo il tempo)
Page Refresh though META tag and JavaScript are disabled by defaultBoth can be enabled on a per website basis,
- No script or CSS is requested with Cookies or other HTTP headers
- Each script and CSS is requested through a dedicated TCP connection
- SubResource Integrity is made mandatory (at least for JavaScript)
- For each URI, record the SRI of last downloaded contents and warn the user if a page propose a different SRI for that same URI
- Warn the user about scripts served with suspect HTTP headers
On browser exit, remove from the cache all resources downloaded by pages that have Meta Refresh and/or JavaScript enabled.
View Page Source should never fetch new versions of the page from the server (whatever the HTTP Headers provided with the page are)
Obviously all this leaves the door open for pages that:
- are visited only once
- are visited for the first time
thus I would also mark as “Not Secure” web pages visited for the first time that require JavaScript or WebAssembly.
Se hai ulteriori domande (che spero non annoino gli altri avventori di questo forum) sono felice di risponderti.