BigSig, kerentanan di Mozilla NSS yang memungkinkan eksekusi kode

Berita tentang mengidentifikasi kerentanan kritis (sudah terdaftar di bawah CVE-2021-43527) en kumpulan perpustakaan kriptografi NSS (Layanan keamanan jaringan) dari Mozilla yang dapat menyebabkan eksekusi kode berbahaya saat memproses tanda tangan digital DSA atau RSA-PSS yang ditentukan menggunakan DER (Distinguished Encoding Rules).

Masalahnya memanifestasikan dirinya dalam aplikasi yang menggunakan NSS untuk menangani tanda tangan digital CMS, S/MIME, PKCS#7 dan PKCS#12, atau saat memverifikasi sertifikat dalam penerapan TLS, X.509, OCSP dan CRL. Kerentanan dapat muncul di berbagai aplikasi klien dan server dengan dukungan TLS, DTLS, dan S / MIME, klien email, dan penampil PDF yang menggunakan panggilan NSS CERT_VerifyCertificate () untuk memverifikasi tanda tangan digital.

LibreOffice, Evolution, dan Evince disebutkan sebagai contoh aplikasi yang rentan. Berpotensi, masalah juga dapat mempengaruhi proyek-proyek seperti Pidgin, Apache OpenOffice, Suricata, Curl, antara lain.

Pada saat bersamaan, kerentanan tidak muncul di Firefox, Thunderbird dan Tor Browser, yang menggunakan perpustakaan mozilla :: pkix terpisah untuk verifikasi, yang juga merupakan bagian dari NSS. NS Browser berbasis Chrome (kecuali jika secara khusus dikompilasi dengan NSS), yang menggunakan NSS hingga 2015, tetapi kemudian dibawa ke BoringSSL, mereka tidak terpengaruh oleh masalah.

Kerentanan ini disebabkan oleh bug dalam kode verifikasi sertifikat di vfy_CreateContext fungsi dari file secvfy.c. Kesalahan memanifestasikan dirinya baik ketika klien membaca sertifikat dari server seperti ketika server memproses sertifikat klien.

Saat memverifikasi tanda tangan digital yang dikodekan DER, NSS menerjemahkan tanda tangan ke dalam buffer ukuran tetap dan meneruskan buffer ini ke modul PKCS # 11. Selama pasca-pemrosesan, untuk tanda tangan DSA dan RSA-PSS, ukurannya salah diverifikasi, sehingga di mana menyebabkan meluapnya buffer yang dialokasikan untuk struktur VFYContextStr, jika ukuran tanda tangan digital melebihi 16384 bit (2048 byte dialokasikan untuk buffer, tetapi tidak diverifikasi bahwa tanda tangan dapat lebih besar).

Kode yang berisi kerentanan tersebut berasal dari tahun 2003, tetapi tidak menjadi ancaman sampai refactoring pada tahun 2012. Pada tahun 2017, kesalahan yang sama dilakukan ketika menerapkan dukungan RSA-PSS. Untuk melakukan serangan, generasi kunci tertentu yang membutuhkan banyak sumber daya tidak diperlukan untuk mendapatkan data yang diperlukan, karena overflow terjadi pada tahap sebelum verifikasi validitas tanda tangan digital. Bagian data yang berada di luar batas ditulis ke area memori yang berisi penunjuk fungsi, membuatnya mudah untuk membuat eksploitasi yang berfungsi.

Kerentanan diidentifikasi oleh peneliti Google Project Zero selama percobaan dengan metode pengujian fuzzing baru dan merupakan demonstrasi yang baik tentang bagaimana kerentanan sepele dapat tidak terdeteksi untuk waktu yang lama dalam proyek terkenal yang telah teruji dengan baik.

Adapun masalah utama yang masalahnya tidak diperhatikan untuk waktu yang lama:

  • Pustaka drive NSS dan uji fuzzing tidak dilakukan secara keseluruhan, tetapi pada tingkat komponen individual.
  • Misalnya, kode untuk memecahkan kode DER dan sertifikat proses diverifikasi secara terpisah; Selama fuzzing, sertifikat bisa saja diperoleh, yang mengarah ke manifestasi kerentanan yang dimaksud, tetapi verifikasinya tidak mencapai kode verifikasi dan masalahnya tidak terungkap.
  • Selama pengujian fuzzing, batasan ketat ditetapkan pada ukuran output (10,000 byte) tanpa adanya batasan seperti itu di NSS (banyak struktur dalam mode normal bisa lebih besar dari 10,000 byte, oleh karena itu, untuk mengidentifikasi masalah, diperlukan lebih banyak data input ). Untuk verifikasi penuh, batasnya seharusnya 2 24 -1 byte (16 MB), yang sesuai dengan ukuran maksimum sertifikat yang diizinkan di TLS.
  • Kesalahpahaman tentang cakupan kode dengan tes fuzzing. Kode rentan diuji secara aktif, tetapi menggunakan fuzer, yang tidak dapat menghasilkan data input yang diperlukan. Misalnya, fuzzer tls_server_target menggunakan seperangkat sertifikat siap pakai, yang membatasi verifikasi kode verifikasi sertifikat hanya pada pesan TLS dan perubahan status protokol.

Akhirnya, Perlu disebutkan bahwa masalah dengan nama kode BigSig telah diperbaiki di NSS 3.73 dan NSS ESR 3.68.1 dan pembaruan solusi dalam bentuk paket telah dirilis di berbagai distribusi: Debian, RHEL, Ubuntu, SUSE, Arch Linux, Gentoo, FreeBSD, dll.

Jika Anda ingin tahu lebih banyak, Anda bisa berkonsultasi link berikut.


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Bertanggung jawab atas data: AB Internet Networks 2008 SL
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.