BigSig, kelemahan dalam Mozilla NSS yang boleh membenarkan pelaksanaan kod

Berita tentang mengenal pasti kelemahan kritikal (sudah disenaraikan di bawah CVE-2021-43527) en set perpustakaan kriptografi NSS (Perkhidmatan keselamatan rangkaian) daripada Mozilla yang boleh membawa kepada pelaksanaan kod berniat jahat apabila memproses tandatangan digital DSA atau RSA-PSS yang ditentukan menggunakan DER (Peraturan Pengekodan Terbeza).

Masalahnya menunjukkan dirinya dalam aplikasi yang menggunakan NSS untuk mengendalikan tandatangan digital CMS, S / MIME, PKCS # 7 dan PKCS # 12, atau semasa mengesahkan sijil dalam penggunaan TLS, X.509, OCSP dan CRL. Kerentanan boleh timbul dalam pelbagai aplikasi klien dan pelayan dengan sokongan TLS, DTLS dan S / MIME, klien e-mel dan penonton PDF yang menggunakan panggilan NSS CERT_VerifyCertificate () untuk mengesahkan tandatangan digital.

LibreOffice, Evolution dan Evince disebut sebagai contoh aplikasi yang terdedah. Berkemungkinan, masalah itu juga boleh menjejaskan projek seperti Pidgin, Apache OpenOffice, Suricata, Curl, antara lain.

Pada masa yang sama kelemahan tidak muncul dalam Firefox, Thunderbird dan Pelayar Tor, yang menggunakan pustaka mozilla :: pkix yang berasingan untuk pengesahan, yang juga merupakan sebahagian daripada NSS. The pelayar berasaskan Chrome (melainkan jika ia disusun secara khusus dengan NSS), yang menggunakan NSS sehingga 2015, tetapi kemudian dibawa ke BoringSSL, mereka tidak terjejas dengan masalah tersebut.

Kerentanan ini disebabkan oleh pepijat dalam kod pengesahan sijil dalam vfy_CreateContext fungsi fail secvfy.c. Ralat itu nyata apabila pelanggan membaca sijil daripada pelayan seperti apabila pelayan memproses sijil pelanggan.

Apabila mengesahkan tandatangan digital yang dikodkan DER, NSS menyahkod tandatangan menjadi penimbal saiz tetap dan menghantar penimbal ini kepada modul PKCS # 11. Semasa pemprosesan pasca, untuk tandatangan DSA dan RSA-PSS, saiznya tidak disahkan dengan betul, mengakibatkan yang membawa kepada limpahan penimbal yang diperuntukkan untuk struktur VFYContextStr, jika saiz tandatangan digital melebihi 16384 bit (2048 bait diperuntukkan untuk penimbal, tetapi ia tidak disahkan bahawa tandatangan boleh menjadi lebih besar).

Kod yang mengandungi kerentanan bermula pada tahun 2003, tetapi ia bukan ancaman sehingga pemfaktoran semula pada tahun 2012. Pada tahun 2017, kesilapan yang sama telah dilakukan apabila melaksanakan sokongan RSA-PSS. Untuk melakukan serangan, penjanaan intensif sumber bagi kunci tertentu tidak diperlukan untuk mendapatkan data yang diperlukan, kerana limpahan berlaku dalam peringkat sebelum pengesahan kesahihan tandatangan digital. Bahagian luar sempadan data ditulis ke kawasan memori yang mengandungi penunjuk fungsi, menjadikannya mudah untuk membuat eksploitasi kerja.

Kerentanan itu dikenal pasti oleh penyelidik Google Project Zero semasa eksperimen dengan kaedah ujian kabur baharu dan merupakan demonstrasi yang baik tentang bagaimana kelemahan remeh boleh tidak dapat dikesan untuk masa yang lama dalam projek yang diketahui secara meluas.

Bagi yang masalah utama yang masalah itu tidak disedari untuk masa yang lama:

  • Perpustakaan pemacu NSS dan ujian kabur tidak dijalankan secara keseluruhan, tetapi pada peringkat komponen individu.
  • Contohnya, kod untuk menyahkod DER dan memproses sijil telah disahkan secara berasingan; Dalam proses fuzzing, sijil mungkin telah diperolehi, yang membawa kepada manifestasi kelemahan yang dipersoalkan, tetapi pengesahannya tidak mencapai kod pengesahan dan masalahnya tidak didedahkan.
  • Semasa ujian kabur, had ketat telah ditetapkan pada saiz output (10,000 bait) jika tiada had sedemikian dalam NSS (banyak struktur dalam mod biasa boleh lebih besar daripada 10,000 bait, oleh itu, untuk mengenal pasti masalah, lebih banyak data input diperlukan ). Untuk pengesahan penuh, had sepatutnya ialah 2 24 -1 bait (16 MB), yang sepadan dengan saiz maksimum sijil yang dibenarkan dalam TLS.
  • Salah tanggapan tentang liputan kod dengan ujian kabur. Kod yang terdedah telah diuji secara aktif, tetapi menggunakan fuzer, yang tidak dapat menjana data input yang diperlukan. Contohnya, fuzzer tls_server_target menggunakan set sijil luar kotak yang dipratakrif, yang mengehadkan pengesahan kod pengesahan sijil kepada hanya mesej TLS dan perubahan keadaan protokol.

Akhirnya, Perlu dinyatakan bahawa masalah dengan nama kod BigSig telah diperbaiki dalam NSS 3.73 dan NSS ESR 3.68.1 dan kemas kini penyelesaian dalam bentuk pakej telah pun dikeluarkan dalam pengedaran berbeza: Debian, RHEL, Ubuntu, SUSE, Arch Linux, Gentoo, FreeBSD, dsb.

Sekiranya anda ingin mengetahui lebih lanjut mengenainya, anda boleh berjumpa pautan berikut.


Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab untuk data: AB Internet Networks 2008 SL
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.