["Entity expansion DoS vulnerability in REXML (XML bomb, CVE-2013-1821)"](https://www.ruby-lang.org/en/news/2013/02/22/rexml-dos-2013-02-22/)과
["CVE-2014-8080: XML 확장의 서비스 거부공격(DoS)"](https://www.ruby-lang.org/ko/news/2014/10/27/rexml-dos-cve-2014-8080/)처럼, REXML에서 제한되지 않은 엔티티 확장이
DoS 취약점으로 이어질 수 있습니다.
이 취약점은 CVE ID
[CVE-2014-8090](http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-8090)에
할당되었습니다.
루비를 업그레이드하시길 강력히 권합니다.

## 상세

이 수정은
[CVE-2013-1821](https://www.ruby-lang.org/en/news/2013/02/22/rexml-dos-2013-02-22/)과
[CVE-2014-8080](https://www.ruby-lang.org/ko/news/2014/10/27/rexml-dos-cve-2014-8080/)을 위한 추가 수정입니다.
이전 패치가 여러 곳에서 반복적 확장과 생성된 문자열의 전체 크기를 제한했습니다.
그러나 엔티티 확장 이전에 사용 제한을 고려하지 않았습니다.
따라서 빈 문자열을 재귀적으로 확장시킴으로써 CPU 리소스를 100% 소비할 수 있는 상태로 만들 수 있습니다.
또한, XML 문서로부터 텍스트 노드를 판독할 때, REXML 파서는, 시스템에서의 모든 메모리를 소비할 수 있는 매우 큰 문자열 객체를 할당하는 서비스 거부 공격을 당할 수 있습니다.

이런 코드가 영향을 받습니다.

<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>

영향받는 릴리스를 사용하시는 모든 분은 즉시 업그레이드하시거나 해결 방법 중
하나를 사용하셔야 합니다.

## 영향받는 버전

* 루비 1.9.3 패치레벨 551 이전의 모든 루비 1.9 버전
* 루비 2.0.0 패치레벨 598 이전의 모든 루비 2.0 버전
* 루비 2.1.5 이전의 모든 루비 2.1 버전
* 리비전 48402 이전의 트렁크

## 해결 방법

만약 루비를 업그레이드할 수 없다면 이 몽키패치를 사용하세요.

<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>

## 참여자

이 이슈를 보고해주신 Tomas Hoger 님께 감사드립니다.

## 수정 이력

* 2014-11-13 12:00:00 UTC 최초 공개
