Dokumentasi RDoc yang dihasilkan oleh rdoc yang dibundel dengan ruby rentan terhadap
eksploitasi XSS. Semua pengguna Ruby dianjurkan untuk meng-update Ruby ke versi yang
lebih baru yang meliputi perbaikan keamanan RDoc. Jika Anda mempublikasikan dokumentasi
RDoc yang dihasilkan oleh rdoc, Anda disarankan untuk menerapkan patch untuk dokumentasi
atau menghasilkan ulang dokumentasi itu menggunakan RDoc yang sudah diperbaiki.

## Dampak

Dokumentasi RDoc dihasilkan oleh rdoc 2.3.0 hingga rdoc 3.12 dan
prerilis hingga rdoc 4.0.0.preview2.1 rentan terhadap eksploitasi XSS.
Eksploitasi ini dapat menyebabkan cookie terungkap kepada pihak ketiga.

## Rincian

Eksploitasi tersebut terdapat pada darkfish.js yang dikopi dari lokasi
instalasi RDoc ke dokumentasi yang dihasilkan.

RDoc adalah alat generasi dokumentasi statis. Mem-patch library itu
sendiri tidak cukup untuk memperbaiki eksploitasi ini. Mereka yang meng-host
dokumentasi rdoc akan perlu menerapkan patch berikut.

## Solusi

Harap terapkan patch berikut pada dokumentasi rdoc. Apabila diterapkan dengan
mengabaikan spasi, patch berikut akan memperbaiki semua versi yang terkena dampak:

<figure class="highlight"><pre><code class="language-diff" data-lang="diff"><span class="gh">diff --git darkfish.js darkfish.js
index 4be722f..f26fd45 100644
</span><span class="gd">--- darkfish.js
</span><span class="gi">+++ darkfish.js
</span><span class="p">@@ -109,13 +109,15 @@</span> function hookSearch() {
 function highlightTarget( anchor ) {
   console.debug( "Highlighting target '%s'.", anchor );
<span class="err">
</span><span class="gd">-  $("a[name=" + anchor + "]").each( function() {
-    if ( !$(this).parent().parent().hasClass('target-section') ) {
-      console.debug( "Wrapping the target-section" );
-      $('div.method-detail').unwrap( 'div.target-section' );
-      $(this).parent().wrap( '&lt;div class="target-section"&gt;&lt;/div&gt;' );
-    } else {
-      console.debug( "Already wrapped." );
</span><span class="gi">+  $("a[name]").each( function() {
+    if ( $(this).attr("name") == anchor ) {
+      if ( !$(this).parent().parent().hasClass('target-section') ) {
+        console.debug( "Wrapping the target-section" );
+        $('div.method-detail').unwrap( 'div.target-section' );
+        $(this).parent().wrap( '&lt;div class="target-section"&gt;&lt;/div&gt;' );
+      } else {
+        console.debug( "Already wrapped." );
+      }
</span>     }
   });
 };</code></pre></figure>

Dan, jika Anda menggunakan ruby 1.9, harap update [ruby-1.9.3 patchlevel
385] [1]. Jika Anda menggunakan ruby 2.0.0 rc1 atau sebelumnya atau Ruby trunk, silakan
update ke ruby 2.0.0 rc2 atau trunk revisi 39102 atau yang lebih baru. Anda juga bisa
memperbarui RDoc sendiri dengan rubygems ke RDoc 3.12.1 atau RDoc 4.0.0.rc.2.

## Versi yang Terkena Dampak

* Semua Ruby versi 1.9 sebelum Ruby 1.9.3 patchlevel 383
* Semua Ruby versi 2.0 sebelum Ruby 2.0.0 rc2 or sebelum trunk
  revisi 39102

## Ucapan Terima Kasih

Eksploitasi ini ditemukan oleh Evgeny Ermakov &lt;corwmh@gmail.com&gt;.

Kerentanan ini telah di-assign pada CVE dengan identifier CVE-2013-0256.

## History

* Awalnya diterbitkan pada 2013-02-06 13:30:00 (UTC)



[1]: https://www.ruby-lang.org/en/news/2013/02/06/ruby-1-9-3-p385-is-released/
