Ditulis oleh usa tanggal 2013-02-22
Diterjemahkan oleh catcyborg
Ekspansi entity yang tak dibatasi dapat menyebabkan kerentanan DoS pada REXML. Kelemahan ini telah di-assign ke CVE dengan identifier CVE-2013-1821. Kami sangat menyarankan untuk meng-upgrade Ruby.
Rincian
Ketika membaca teks node dari dokumen XML, parser REXML dapat dipaksa untuk mengalokasikan objek string yang sangat besar yang dapat mengkonsumsi semua memori pada mesin, menyebabkan serangan denial of service.
Kode yang dapat menyebabkan masalah di atas terlihat seperti di bawah ini.
Ketika method `text` dipanggil, entitas akan diperluas. Penyerang dapat mengirimkan dokumen XML yang relatif kecil. Ketika entitas diresolusikan, sistem target akan mengkonsumsi sejumlah memori sangat besar.
Perhatikan bahwa serangan ini mirip dengan, tetapi berbeda dari serangan Billion Laughs. Hal ini juga terkait dengan CVE-2013-1664 dari Python.
Semua pengguna menjalankan rilis yang terkena dampak ini harus segera meng-upgrade atau menggunakan solusi lain.
Solusi-Solusi Lain
Jika Anda tidak dapat meng-upgrade Ruby, gunakan patch di bawah ini sebagai solusi lain.
Monkey patch ini akan membatasi ukuran penggantian entity hingga 10 ribu per node. REXML already defaults to only allow 10000 entity substitutions per document, so the maximum amount of text that can be generated by entity substitution will be around 98 megabytes.
Versi yang Terkena Dampak
- Semua ruby versi 1.9 sebelum ruby 1.9.3 patchlevel 392
- Semua ruby versi 2.0 sebelum ruby 2.0.0 patchlevel 0
- Sebelum trunk revisi 39384
Ucapan Terima Kasih
Terima kasih kepada Ben Murphy untuk melaporkan masalah ini.
History
- Menambah nomor CVE pada 2013-03-11 07:45:00 (UTC)
- Awalnya diterbitkan pada 2013-02-22 12:00:00 (UTC)