Sì , in passato ci sono stati molti exploit che si basavano solo su codice HTML e CSS dannoso.
Hai ragione in quanto l'analisi di un linguaggio complesso e completo è potenzialmente più soggetto a errori, dando a un aggressore più strumenti per creare un exploit.
Tuttavia, ci sono molti modi diversi in cui l'implementazione del parser CSS usato o di altri moduli coinvolti nell'elaborazione del codice può essere vulnerabile.
Come esempio , prendi CVE-2010-2752
- Carattere di Mozilla Firefox CSS Vulnerabilità legata all'esecuzione di codice in modalità remota . Questa vulnerabilità può essere attivata semplicemente creando un sito Web con regole CSS font-face
appositamente predisposte e tuttavia ha il potenziale per compromettere l'host.
Il codice errato si trovava nel parser CSS di Mozilla e presentava un bug insignificante: quando allocavo memoria per memorizzare i riferimenti font-face
, per l'indice veniva utilizzato un numero intero a 16 bit. Tuttavia, quando i valori effettivi sono stati compilati, è stato utilizzato un numero intero a 32 bit. Questa incoerenza ha comportato un overflow di un intero quando un foglio di stile ha fornito un numero eccessivo di riferimenti a font esterni. Di conseguenza, un utente malintenzionato può scrivere in posizioni di memoria impreviste e trasformare l'overflow dell'indice in un exploit di codice arbitrario
.
Poiché la maggior parte del nucleo di Mozilla è scritto in C ++, non esiste una protezione da overflow incorporata e gli sviluppatori sono incaricati di gestire in modo sicuro la memoria. Un browser scritto in Python probabilmente affronterà tipi molto diversi di vulnerabilità (e sarà anche dolorosamente lento).