Ditulis oleh nahi tanggal 2013-06-27
Diterjemahkan oleh catcyborg
Sebuah kerentanan di klien SSL Ruby yang dapat memungkinkan Man-in-the-Middle Attack untuk men-spoof server SSL melalui sertifikat sah yang dikeluarkan oleh otoritas sertifikasi terpercaya (trusted certification authority).
Kerentanan ini telah ditetapkan dengan identifier CVE CVE-2013-4073.
Rangkuman
Klien SSL Ruby menerapkan pemeriksaan identitas hostname tapi tidak menangani hostname dalam sertifikat yang berisi null bytes dengan benar.
Rinci
OpenSSL::SSL.verify_certificate_identity
mengimplementasikan pemeriksaan
RFC2818 Server Identity untuk klien SSL Ruby tetapi tidak menangani hostname di
ekstensi subjectAltName X509 yang mengandung null bytes dengan benar.
Kode yang ada di lib/openssl/ssl.rb
menggunakan OpenSSL::X509::Extension#value
untuk mengekstrak identitas dari subjectAltName. Extension#value
bergantung pada
fungsi OpenSSL X509V3_EXT_print()
dan untuk dNSName dari subjectAltName, ia
menggunakan sprintf()
yang diketahui sebagai null byte unsafe. Sebagai hasilnya
Extension#value
mengembalikan ‘www.ruby-lang.org’ jika subjectAltName
‘www.ruby-lang.org\0.example.com’ dan
OpenSSL::SSL.verify_certificate_identity
dengan salah menidentifikasi bahwa
sertifikat tersebut adalah untuk ‘www.ruby-lang.org’.
Ketika CA sebuah trust klien SSL memungkinkan untuk mengeluarkan sertifikat server yang memiliki byte null dalam subjectAltName, penyerang remote dapat memperoleh sertifikat untuk ‘www.ruby-lang.org\0.example.com’ dari CA untuk spoof ‘www.ruby-lang.org’ dan melakukan man-in-the-middle antara klien SSL Ruby dan SSL server.
Versi yang Terkena Dampak
- Semua ruby versi 1.8 sebelum ruby 1.8.7 patchlevel 374
- Semua ruby versi 1.9 sebelum ruby 1.9.3 patchlevel 448
- Semua ruby versi 2.0 sebelum ruby 2.0.0 patchlevel 247
- sebelum trunk revisi 41671
Solusi
Semua pengguna dianjurkan untuk meng-upgrade ke Ruby 2.0.0-p247, 1.9.3-p448 atau 1.8.7-p374.
Ucapan Terima Kasih
Kerentanan ini ditemukan oleh William (B.J.) Snow Orvis dan dikoordinasikan dengan security@ruby-lang.org oleh David Thiel dari iSEC Partners.
History
- Originally published at 2013-06-27 11:00:00 (UTC)