Zamieszczone przez usa 2013-02-22
Tłumaczone przez crabonature
Nieograniczony rozrost encji może prowadzić do podatności na DoS w REXML. Tej podatności został przypisany identyfikator CVE-2013-1821. Zdecydowanie zalecamy aktualizację Rubiego.
Szczegóły
Podczas czytania węzłów tekstu z dokumentu XML, parser REXML może zostać zmuszony do alokowania bardzo dużych napisów, które mogą zająć całą dostępną pamięć maszyny, powodując odmowę usługi.
Przykładowy kod ilustrujący lukę będzie wyglądać mniej więcej tak:
Kiedy jest wołana metoda `text` , encje będą się rozrastać. Atakujący może wysłać relatywnie mały dokument XML, który kiedy encje są wiązane, będzie zajmował całą dostępną pamięć docelowego systemu.
Zauważ, że ten atak jest podobny do, ale różny od ataku Billion Laughs. Jest to też powiązane z CVE-2013-1664 dla Pythona.
Wszyscy użytkownicy używający podatnej wersji powinni natychmiast zaktualizować ją lub użyć obejścia problemu.
Obejście problemu
Gdy nie możesz zaktualizować Rubiego, ta łatka - monkey patch - może być użyta jako obejście problemu:
Ta łatka wprowadzi limit na rozmiar podstawianej encji do 10k na węzeł. Obecnie REXML domyślnie dopuszcza jedynie 10000 podstawień encji na dokument, więc maksymalna ilość tekstu, który może być wygenerowany będzie wynosił około 98 megabajtów.
Dotyczy wersji
- Dla 1.9 wszystkie wcześniejsze wersje od 1.9.3 patchlevel 392
- Dla 2.0 wszystkie wcześniejsze wersje od 2.0.0 patchlevel 0
- Wcześniej niż rewizja trunk 39384
Podziękowania
Podziękowania dla Bena Murphy’ego za zgłoszenie tego problemu.
Historia
- Dodano numer CVE 2013-03-11 07:45:00 (UTC)
- Oryginalnie opublikowane 2013-02-22 12:00:00 (UTC)