Inserito da Fabio Cevasco il 2013-03-03
Un'incontrollata espansione di entità può provocare una vulnerabilità DoS in REXML. L'identificativo CVE "CVE-2013-1821" è stato assegnato a questa vulnerabilità. Raccomandiamo fortemente di aggiornare Ruby.
Dettagli
Durante la lettura di nodi testuali da un documento XML, il parser RAXML può essere utilizzato per allocare degli oggetti string estremamente grandi che possono consumare tutta la memoria su una macchina, causando un Denial of Service.
Il codice impattato è del tipo:
Quando il metodo `text` viene chiamato, le entità XML vengono espanse. Un utente malintenzionato può utilizzare un documento XML relativamente piccolo che, quando le entità vengono risolte, consumerà grandi quantità di memoria nel sistema.
Da notare che questo attacco è simile, ma differente, all'attacco "Billion Laughs", che è correlato al CVE-2013-1664 di Python.
Tutti gli utenti che utilizzano una versione soggetta a questa vulnerabilità dovrebbero procedere all'aggiornamento o utilizzare uno dei workaround immediatamente.
Workaround
Se non puoi aggiornare Ruby, utilizza questa patch manuale come workaround:
Questa patch limiterà la grandezza della sostituzione delle entità a 10k per nodo. REXML inoltre di default permette solamente 10000 sostituzioni di entità per documento, quindi il massimo ammontare di testo che può essere generato tramite sostituzione di entità sarà attorno ai 98MB.
Versioni soggette alla vulnerabilità
- Tutte le versioni di Ruby 1.9 precedenti a 1.9.3 patchlevel 392
- Tutte le versioni di Ruby 2.0 precedenti a 2.0.0 patchlevel 0
- Tutte le versioni precedenti alla trunk revision 39384
Crediti
Grazie a Ben Murphy per averci notificato il problema.
Cronologia
- Originariamente pubblicato il giorno 2013-02-22 alle ore 12:00:00 (UTC)