Do drive-by attacks actually exist within modern browsers and if yes how do they work?
È assolutamente possibile, e c'è un grande mercato per questo. Come ha detto SmokeDispenser, nessuno ti brucerà un giorno solo per mostrarti, ma puoi guardare innumerevoli vulnerabilità patchate. Google per qualsiasi MFSA (Mozilla Foundation Security Advisorie) per tutto ciò che dice "esecuzione arbitraria di codice" o "crash potenzialmente sfruttabile". Queste sono tutte vulnerabilità (bug di sicurezza), non exploit (codice per sfruttare i suddetti bug di sicurezza).
Il modo in cui lavorano varia. Sarebbe troppo difficile spiegare anche le basi di un numero qualsiasi di classi di vulnerabilità. Esamina il buffer overrun / underrun, UAF, ROP (e tecniche simili come JOP e LOP), heap spray, spruzzatura JIT, comportamento indefinibile sfruttabile, overflow integer o qualsiasi altra tecnica di attacco comune.
I found a lot of blog posts, forum discussions etc. but none of them actually give real examples. They simply talk about how JavaScript is a programming language so it isn’t predictable.
Ciò di cui probabilmente parlano sono cose come buffer overflow e vulnerabilità use-after-free. Significa che JavaScript non sempre fa ciò che vuoi che faccia, non che lo standard stesso non sia del tutto deterministico.
JavaScript isn’t unpredictable in a way that let’s it do things it’s not supposed to. Unless of course there is a vulnerability in the browser.
È corretto. JavaScript non è progettato per fare qualcosa al di fuori del contesto di un browser, ma ciò che è progettato per fare è essere analizzato e compilato da fonti controllate dagli aggressori. Un singolo bug nell'interprete o compilatore JIT (tra le altre cose) può portare allo sfruttamento. Questo non è solo un problema con JavaScript. CSS e HTML possono anche essere sfruttati, anche se è meno comune in quanto sono più semplici. WebGL è un obiettivo comune a causa della sua complessità. Anche la decodifica delle immagini è un obiettivo.
Show me code that would for instant delete all the photographs on my machine without me having to explicitly download and run anything. Just visiting a malicious website is enough.
Se vuoi un esempio di codice effettivo, che dire di link , che è stato utilizzato dal governo degli Stati Uniti per attaccare obsoleto versioni di Tor Browser (che è basata su Firefox) qualche tempo fa. In questo specifico esempio, il browser tornava al telefono di casa, ignorando il proxy. Lo shellcode può essere modificato per fare qualsiasi cosa, come cancellare le immagini sul tuo computer come hai detto tu. Onestamente, non mi interessa abbastanza scrivere codice shell per fare qualcosa come cancellare le immagini, ma non sarebbe difficile. La parte difficile è ottenere il codice da eseguire. La parte facile è far sì che faccia ciò che vuoi.
In questo specifico esempio, lo shellcode è nella variabile magneto
. Puoi cambiarlo in qualunque cosa tu voglia e verrà eseguito senza restrizioni. Tutto quello che devi fare è imparare un po 'di assemblaggio, abbastanza da scrivere il codice senza l'aiuto del solito assemblatore. Puoi trovare un'enorme quantità di codice shell pre-scritto per collegarti a un exploit funzionante, anche se di solito fa cose più interessanti che eliminare le immagini, come installare malware.
Il modo in cui ha funzionato l'exploit specifico è stato l'utilizzo di un tipo di irrorazione dell'heap chiamato JIT spray (una tecnica per aumentare la prevedibilità del layout di memoria del programma di destinazione) e un semplice overflow del buffer nel codice ora prevedibile.
Vedi link per innumerevoli altri esempi, completi di codice. Se vuoi spiegazioni approfondite su come questo tipo di sfruttamento è fatto, ti consiglio vivamente di leggere alcuni articoli Phrack relativi al browser.
And no, simply making my browser crash without any permanent damage on my computer doesn’t count.
Sfortunatamente, praticamente tutti i bug sfruttabili provocheranno un crash innocuo se non sono progettati appositamente per sfruttare l'applicazione. La maggior parte dei PoC mostrerà solo un crash. Devi vivere con quello. Ci sono degli exploit assolutamente reali e armati che puoi usare, ma non ce ne sono tanti in pubblico.
And to be clear: I only care about browser vulnerabilities, not plugins or other things. And also modern browsers not IE from 2004 (you know what, let’s just ignore IE).
Praticamente ogni singolo aggiornamento per un browser moderno corregge uno o più di questi tipi di vulnerabilità. A partire da questo post, Firefox 56 si è appena aggiornato per correggere 5 crash sfruttabili con mfsa2017-21, oltre a una raccolta di altri 12 crash potenzialmente dannosi per la sicurezza. Questo non è solo un problema di un eventuale bug insetto ogni 10 anni. Si tratta di più bug sfruttabili ogni versione. In generale, un ampio programma qualsiasi che analizza dati complessi può essere sfruttato con input malizioso se qualcuno cerca di trovare una vulnerabilità abbastanza grave. Questo vale per i browser, i decodificatori di immagini, i decoder video o audio e persino il kernel del sistema operativo.