Heap Overflow nel Parsing di numeri in Virgola Mobile (CVE-2013-4164)

Esiste un problema di overflow sul parsing dei numeri in virgola mobile in Ruby. A questa vulnerabilità è stato assegnato l’identificativo CVE-2013-4164.

Dettagli

Ogni volta che una stringa è convertita in un valore a virgola mobile, una stringa costruita ad hoc può causare un heap overflow. Questo può fare strada ad un attacco di tipo denial of service tramite segmentation faults ed eventuale esecuzione arbitraria di codice. Qualsiasi programma che converte input di provenienza sconosciuta in valori a virgola mobile (procedura comune specialmente accettando JSON) è vulnerabile.

Del codice vulnerabile si presenta in questo modo:

untrusted_data.to_f

Ma qualsiasi codice che produce valori in virgola mobile da dati esterni è vulnerabile, come questo:

JSON.parse untrusted_data

Da notare che questo bug è simile a CVE-2009-0689.

Tutti gli utenti che utilizzano una versione affetta dovrebbero aggiornare alle versioni corrette di Ruby.

Versioni affette

  • Tutte le versioni 1.8 di Ruby successive a Ruby 1.8.6 patchlevel 230
  • Tutte le versioni 1.9 di Ruby precedenti a Ruby 1.9.3 patchlevel 484
  • Tutte le versioni 2.0 di Ruby precedenti a Ruby 2.0.0 patchlevel 353
  • Tutte le versioni 2.1 di Ruby precedenti a Ruby 2.1.0 preview2
  • prima di trunk revision 43780

Soluzioni

È consigliato a tutti gli utenti l’aggiornamento a Ruby 1.9.3 patchlevel 484, Ruby 2.0.0 patchlevel 353 o Ruby 2.1.0 preview2.

Si noti che le serie 1.8 di Ruby o qualsiasi versione precedente sono già obsolete. Non ci sono piani di rilasciare versioni corrette per queste. Agli utenti di queste versioni è consigliato l’aggiornamento il prima possibile in quanto non possiamo garantire la disponibilità continua di aggiornamenti di sicurezza per le versioni non più supportate.

Ringraziamenti

Grazie a Charlie Somerville per aver segnalato il problema!

Storia

  • Pubblicazione originale del 2013-11-22 04:00:00 UTC
  • Seconda pubblicazione del 2013-11-22 06:46:00 UTC
  • Terza pubblicazione del 2013-11-22 22:46:00 UTC
  • Quarta pubblicazione del 2013-12-10 12:09:38 UTC