Ekspansi entitas yang tidak dilarang dapat menyebabkan sebuah celah *DoS* pada REXML, seperti
["Kerentanan DoS Ekspansi Entity pada REXML (Bom XML, CVE-2013-1821)"](https://www.ruby-lang.org/id/news/2013/02/22/rexml-dos-2013-02-22/)
dan ["CVE-2014-8080: Parameter Entity expansion DoS vulnerability in REXML"](https://www.ruby-lang.org/en/news/2014/10/27/rexml-dos-cve-2014-8080/).
Celah ini telah ditetapkan dalam *CVE identifier*
[CVE-2014-8090](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-8090).
Kami sangat merekomendasikan untuk memperbarui Ruby.

## Detil

Ini adalah perbaikan tambahan untuk
[CVE-2013-1821](https://www.ruby-lang.org/id/news/2013/02/22/rexml-dos-2013-02-22/)
dan [CVE-2014-8080](https://www.ruby-lang.org/en/news/2014/10/27/rexml-dos-cve-2014-8080/).
*patches* sebelumnya memperbaiki ekspansi rekursif di beberapa tempat dan
jumlah dari ukuran *Strings* yang dibuat. Namun demikian, mereka tidak dapat mengambil akun resmi
yang digunakan untuk ekspansi entitas. 100% utilitas CPU dapat terjadi sebagai hasil
ekspansi rekursif dengan sebuah *string* kosong.
Ketika membaca ujung teks dari sebuah dokumen *XML*, REXML *parser* dapat dipaksa
mengalokasikan objek *string* yang sangat besar yang mana dapat mengonsumsi semua
memori dalam sebuah mesin, menyebabkan sebuah *denial of service*.

Imbas tersebut akan terlihat dari kode berikut:

<figure class="highlight"><pre><code class="language-ruby" data-lang="ruby"><span class="nb">require</span> <span class="s1">'rexml/document'</span>

<span class="n">xml</span> <span class="o">=</span> <span class="o">&lt;&lt;</span><span class="no">XML</span><span class="sh">
&lt;!DOCTYPE root [
  # ENTITY expansion vector
]&gt;
&lt;cd&gt;&lt;/cd&gt;
</span><span class="no">XML</span>

<span class="nb">p</span> <span class="no">REXML</span><span class="o">::</span><span class="no">Document</span><span class="p">.</span><span class="nf">new</span><span class="p">(</span><span class="n">xml</span><span class="p">)</span></code></pre></figure>

Semua pengguna yang terkena imbas rilis ini seharusnya memperbarui atau menggunakan salah satu
solusi di bawah ini segera.

## Versi yang Terkena Imbas

* Semua Ruby versi 1.9 hingga 1.9.3 patchlevel 551
* Semua Ruby versi 2.0 hingga 2.0.0 patchlevel 598
* Semua Ruby versi 2.1 hingga 2.1.5
* sebelum revisi *trunk* 48402

## Solusi

Jika Anda tidak dapat memperbarui Ruby, gunakan *monkey patch* di bawah ini sebagai solusi lain:

<figure class="highlight"><pre><code class="language-ruby" data-lang="ruby"><span class="k">class</span> <span class="nc">REXML::Document</span>
  <span class="k">def</span> <span class="nf">document</span>
    <span class="nb">self</span>
  <span class="k">end</span>
<span class="k">end</span></code></pre></figure>

## Credits

Terima kasih Tomas Hoger telah melaporkan masalah ini.

## Histori

* Semula dipublikasikan pada 2014-11-13 12:00:00 UTC
