Eksploitasi XSS dari Dokumentasi RDoc yang Dihasilkan oleh rdoc (CVE-2013-0256)

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:

diff --git darkfish.js darkfish.js
index 4be722f..f26fd45 100644
--- darkfish.js
+++ darkfish.js
@@ -109,13 +109,15 @@ function hookSearch() {
 function highlightTarget( anchor ) {
   console.debug( "Highlighting target '%s'.", anchor );

-  $("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( '<div class="target-section"></div>' );
-    } else {
-      console.debug( "Already wrapped." );
+  $("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( '<div class="target-section"></div>' );
+      } else {
+        console.debug( "Already wrapped." );
+      }
     }
   });
 };

Dan, jika Anda menggunakan ruby 1.9, harap update ruby-1.9.3 patchlevel 385. 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 <corwmh@gmail.com>.

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

History

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