Pemburu insect Tavis Ormandy dari Project Zero Google baru saja menemukan insect berbahaya di tim Penjaga Privasi GNU libgcrypt
perangkat lunak enkripsi.
Itu libgcrypt
perpustakaan adalah perangkat sumber terbuka yang dapat digunakan siapa saja, tetapi mungkin paling dikenal sebagai pustaka enkripsi yang digunakan oleh tim Penjaga Privasi GNU yang digunakan secara luas GnuPG perangkat lunak (yaitu paket yang Anda gunakan saat menjalankan perintah gpg
atau gpg2
).
GnuPG disertakan dan digunakan untuk keamanan electronic di banyak distribusi Linux:
gpg adalah versi khusus OpenPGP dari GNU Privacy Guard (GnuPG). Ini adalah alat untuk menyediakan enkripsi electronic dan layanan penandatanganan menggunakan standar OpenPGP. gpg menghadirkan manajemen kunci lengkap dan semua fitur yang dapat Anda harapkan dari implementasi OpenPGP yang layak.
Secara teori, kerentanan ini dapat menyebabkan apa yang dikenal sebagai RCE, kependekan dari Eksekusi kode jarak jauh, karena insect dapat dipicu hanya dengan mengirim libgcrypt
blok data mengirim dijebak untuk didekripsi.
Dengan kata lain, app yang digunakan libgcrypt
untuk mendekripsi dan memeriksa integritas data yang dikirimkan dari luar jaringan – ironisnya, sesuatu yang mungkin Anda lakukan untuk melihat apakah Anda harus memercayai info tersebut – dapat ditipu untuk menjalankan fragmen sembarang kode malware memercayai disembunyikan di dalam info tersebut.
Ormandy tidak menemukan eksploitasi bukti konsep RCE yang berfungsi untuk insect ini, karena dia tidak perlu melakukannya pada kesempatan ini.
Seperti yang dia tunjukkan dalam laporan bugnya:
Ada heap buffer overflow di libgcrypt karena asumsi yang salah dalam kode manajemen buffer blok. Hanya mendekripsi beberapa information dapat melimpah buffer pile dengan information yang dikendalikan penyerang, tidak ada verifikasi atau tanda tangan yang divalidasi sebelum kerentanan terjadi. (…)
Saya yakin ini mudah dieksploitasimudah dieksploitasi meluap langsung berbatasan dengan penunjuk fungsi yang segera dipanggil setelah overflow.
Hanya menunjukkan bahwa dia bisa memancing kecelakaan sudah cukup untuk membuktikan maksudnya, dan Ormandy mampu melakukan ini melalui gpg
application, yang mengandalkan libgcrypt
perpustakaan untuk fungsi kriptografinya.
Jangan lewat GO
Dalam terminologi pemrograman C, penunjuk fungsi adalah istilah jargon untuk “alamat memori tersimpan yang memberi tahu perangkat lunak ke mana harus pergi selanjutnya”.
Bug yang dapat disalahgunakan untuk meluap buffer memori yang ditentukan dan dengan demikian mengubah penunjuk fungsi terdekat hampir pasti akan memengaruhi perilaku program yang sedang berjalan di masa mendatang dan mengalihkan eksekusinya, biasanya menyebabkannya macet.
Namun, dengan trial and error yang memadai, penyerang mungkin dapat mengetahui cara mengubah aliran eksekusi dalam app buggy sehingga alih-alih mengalami crash secara tidak terkendali, kode tersebut ditipu untuk menjalankan instruksi kode mesin yang disediakan oleh penyerang itu sendiri.
Data yang terperangkap booby yang mengalihkan application buggy untuk memperlakukan beberapa info tersebut sebagai kode untuk dieksekusi dikenal sebagai shellcode, kata jargon yang berarti”kode application berbahaya yang disusupi dengan menyamar sebagai information tidak berbahaya”.
Pikirkan penunjuk fungsi seperti kartu PELUANG dalam permainan Monopoli yang menginstruksikan Anda untuk melakukannya Maju ke GO, kumpulkan $ 200. Bayangkan Anda mengambil kartu dan dengan senang hati bersiap untuk melakukan langkah yang ditentukan, tetapi ketika Anda menunjukkan kartu kepada sesama pemain, kartu tersebut secara misterius telah ditukar oleh beberapa tipu daya. Yang membuat Anda heran, kata itu sekarang Pergi langsung ke Penjara – Jangan lewat Pergi, jangan kumpulkan $ 200, dan justru itulah yang terjadi.
Pelatih lambat mungkin aman
Ironisnya, mungkin, sistem operasi, produk, dan tim sysadmin yang lambat dalam hal pembaruan mungkin telah melewatkan insect ini sepenuhnya.
Kerentanan diperkenalkan pada versi 1.9.0 pustaka, yang hanya keluar pada 2021-01-19, kurang dari dua minggu sebelum Ormandy mengajukan laporan bugnya.
Tetapi kabar baik bagi kita yang mendapatkan 1.9.0 dalam beberapa hari terakhir adalah tim Penjaga Privasi GNU memperbaiki insect ini. hampir seketika, merilis versi 1.9.1.
Jika distribusi Steam Anda cukup bagus untuk ditingkatkan ke 1.9.0 dalam dua minggu terakhir, kemungkinan besar itu juga telah diperbarui ke 1.9.1 – periksa log perubahan distro Anda untuk detailnya.
Distro kami, misalnya, memiliki entri terbaru ini:
(Slackware-current) ChangeLog for x86_64 Fri Jan 29 20:26:57 UTC 2021 n/libgcrypt-1.9.1-x86_64-1. Txz: Updated. This upgrade fixes a critical security problem present just at libgcrypt-1.9.0. Everyone ought to make certain to upgrade this package whenever possible. To Learn More, visit: https://lists.gnupg.org/pipermail/gnupg-announce/2021q1/000456.html (* Security fix *)
Kabar baik kedua adalah itu libgcrypt
tidak banyak digunakan seperti pustaka kriptografi sumber terbuka lainnya seperti OpenSSL dan LibreSSL, jadi lebih sedikit app pihak ketiga yang mengandalkannya.
Kabar baik ketiga adalah sebagian besar perangkat lunak pihak ketiga yang menggunakan libgcrypt
tampaknya menggunakan pustaka bersama (yang disebut Windows sebagai DLL) yang disediakan oleh distro Anda, daripada mengumpulkan salinan libgcrypt
kode ke dalam produk itu sendiri.
Dengan kata lain, meskipun Anda telah mempengaruhi perangkat lunak di komputer Anda, cukup tingkatkan versi salinan pusat libgcrypt
di direktori sistem distro Anda mungkin cukup untuk menetralkan insect.
Namun demikian, rata-rata sistem Linux hampir pasti menyertakan banyak aplikasi yang berpotensi terpengaruh oleh insect ini.
Daftar singkat namun tidak lengkap dari perangkat lunak pada sistem kami yang menggunakan libgcrypt
termasuk: Akonadi, Audacity, FFmpeg, Geeqie, GPG package itu sendiri, berbagai alat KDE, Qemu, RPM Package Manager dan Wireshark. (Sebagian besar mengandalkan document libgcrypt
perpustakaan bersama, dan oleh karena itu sekarang dapat secara implisit dianggap ditambal di komputer kita.)
Memeriksa versi Anda
Dengan asumsi Anda telah menginstal alat GPG, termasuk gpg2
dan libgcrypt
, coba ini:
$ gpg2 --variant gpg (GnuPG) 2.2. 27 libgcrypt 1.9.1 <-- SHARED LIBRARY VERSION IS SHOWN HERE Copyright (C) 2021 Free Software Foundation, Inc.. Permit GNU GPL-3.0-or-later This is free softwarethat you're free to alter and redistribute it. There's absolutely no WARRANTY, to the extent allowed by law. House: /home/yourname/. gnupg Supported algorithms: Pubkey: RSA, (...) Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES (...) Hash: SHA1, RIPEMD160, SHA256 (...) Compression: Uncompressed, ZIP, ZLIB (...) $
Kerentanan. (tagsToTranslate) cryptography (t) exploit (t) gnu privacy guard (t) gnupg (t) gpg (t) ormandy (t) rce (t)