L’ultima versione di Google Chrome può andare in crash con un solo URL

Secondo un comunicato emesso da The Register, nella nuova versione di Google Chrome è stato individuato un errore di programmazione in grado di provocare il crash dell’applicazione nel caso in cui vengano inseriti determinati URL. Persino il semplice fatto di posizionare il cursore del mouse sull’indirizzo, in una pagina web, o lanciare il link da un’altra applicazione (ad esempio un client di posta elettronica) risulta sufficiente per generare la chiusura completa del browser o della scheda in quel momento attiva.

Andris Atteka, colui che la settimana scorsa ha scoperto il problema, ha riferito in merito sul proprio blog ed ha ugualmente compilato un bug report. “Non ho purtroppo ricevuto alcuna ricompensa, in quanto si tratta solo di una vulnerabilità che porta ad un denial of service, – scrive Andris Atteka. – Comunque, produrre un software sicuro è molto più difficile che trovare gli errori in esso contenuti. Grazie Google”.

L’elemento di particolare interesse è che il bug in questione causa un errore fatale (SIGTRAP), e non un normale errore di accesso alla memoria provocato da un buffer overflow, un danneggiamento dell’heap o altri problemi di natura simile. Questo significa che una determinata parte del file eseguibile non dovrebbe mai essere eseguita, in condizioni normali.

La sequenza “%%300” nella parte finale dell’URL viene convertita in %00, poiché 0x30 è il codice ASCII del carattere “0”. Pertanto, %%300 si trasforma in una stringa composta dal “%” iniziale, dallo “0” convertito e dallo “0” iniziale. Questo aggiunge un byte NULL nella parte finale della barra degli indirizzi.

L’URL così ottenuto viene trasmesso alla funzione GURLToDatabaseURL(), la quale richiama ReplaceComponents(). Ne consegue che l’URL viene di nuovo elaborato; questa volta, però, con il byte NULL. La funzione determina che l’indirizzo non è corretto e provvede quindi a contrassegnare l’URL.

L’esecuzione ritorna, a questo punto, alla funzione GURLToDatabaseURL(), la quale si attende che l’URL sia ancora valido e trasmette lo stesso alla funzione spec(). Tuttavia, visto che l’URL, in realtà, non è più valido, al momento della chiamata di DCHECK() il programma genera un errore, anche nella versione già rilasciata.

In pratica, quando in un modo o nell’altro viene inserito un URL del genere, il browser invia l’indirizzo contrassegnato come non valido ad un componente che si aspetta solo indirizzi validi.

Il problema qui sopra descritto risulta già inserito nel bug tracker del progetto Chromium; un team di sviluppatori è attualmente al lavoro per apportare le necessarie correzioni al programma.

Fonte: The Register

Post correlati

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *