Przepełnienie stosu podczas parsowania zmiennoprzecinkowego (CVE-2013-4164)

Występuje przepełnienie podczas parsowania liczb zmiennoprzecinkowych w Rubim. Podatności tej został przydzielony identyfikator CVE-2013-4164.

Szczegóły

Za każdym razem podczas konwersji napisu do wartości zmiennoprzecinkowej, specjalnie spreparowany napis może spowodować przepełnienie stosu. Może to prowadzić do ataku DoS (odmowy dostępu) przez błędy segmentacji i możliwości wykonywania dowolnego kodu. Każdy program konwertujący dane wejściowe nieznanego pochodzenia do wartości zmiennoprzecinkowych (zwłaszcza podczas akceptowania JSON) jest podatny.

Podatny kod wygląda jak na przykład jak poniżej:

untrusted_data.to_f

Dowolny kod produkujący wartości zmiennoprzecinkowe z zewnętrznych danych jest podatny, jak poniżej:

JSON.parse untrusted_data

Ten błąd jest podobny do CVE-2009-0689.

Wszyscy użytkownicy podatnych wersji powinni zaktualizować je do POPRAWIONYCH wersji Rubiego.

Dotyczy wersji

  • wszystkich wersji Ruby 1.8
  • wszystkich wersji Ruby 1.9 wcześniejszych niż 1.9.3 patchlevel 484
  • wszystkich wersji Ruby 2.0 wcześniejszych niż 2.0.0 patchlevel 353
  • wszystkich wersji Ruby 2.1 wcześniejszych niż 2.1.0 preview2
  • wcześniejszych niż rewizja trunk 43780

Rozwiązanie

Zaleca się, aby wszyscy użytkownicy zaktualizowali wersję do Rubiego 1.9.3 patchlevel 484, 2.0.0 patchlevel 353 lub 2.1.0 preview2.

Proszę zwrócić uwagę, że seria Ruby 1.8 lub wcześniejsze są obecnie zdezaktualizowane. Nie ma w planach wydania nowych POPRAWIONYCH wersji dla nich. Użytkownikom tych wersji zaleca się aktualizację jak najszybciej jest to możliwe, ponieważ nie jesteśmy w stanie zagwarantować kontynuacji wydawania łatek bezpieczeństwa dla niewspieranych wydań.

Podziękowania

Dzięki dla Charliego Somerville za zgłoszenie tego problemu!

Historia

  • Oryginalnie opublikowane 2013-11-22 04:00:00 UTC
  • Ponownie opublikowane 2013-11-22 06:46:00 UTC
  • Ponownie opublikowane 2013-11-22 22:46:00 UTC