Mereka adalah di antara kita: menjelajahi kerentanan dan kode berbahaya di Zoom untuk Windows

Siapa yang menambahkan "kismis" ini ke Zoom?


Baru-baru ini, seseorang sering mendengar pernyataan berikut:

"Kami / saya tidak menggunakan Zoom untuk percakapan rahasia"



Tetapi bagaimana jika orang lain selain privasi sesi Zoom peduli dengan integritas data pada perangkatnya? Dan tidak sia-sia, karena, ternyata, ada alasan untuk ini. Tidak hanya data konferensi Zoom dipertaruhkan, tetapi juga integritas dan kerahasiaan segala sesuatu yang disimpan oleh peserta konferensi di komputernya.

Jadi, saya menghabiskan dua malam (total sekitar 5-6 jam) membedah Zoom untuk Windows (versi 4.6.11 (20559.0413)). Saya hanya terlibat dalam analisis statis, tidak mengamati aplikasi secara real time. Tapi itu sudah cukup bagiku. Semua yang saya temukan dijelaskan dalam artikel ini. Tapi saya yakin ini hanyalah puncak gunung es. Bayangkan apa yang bisa digali analis keamanan dengan waktu dan anggaran yang cukup ... Dan saya sengaja mencari kerentanan yang dapat digunakan untuk mengungkapkan informasi rahasia kepada pihak ketiga (misalnya, kebocoran informasi di Facebook).

Saya melakukan studi yang sangat dangkal dan tidak merinci. Saya melakukan ini di waktu luang dan saya tidak ingin melakukan ini lagi. Saya menetapkan tujuan yang jelas - untuk menilai kualitas kode dalam hal keamanan dan keberadaan (atau tidak adanya) dukungan untuk perangkat lunak yang termasuk dalam aplikasi Zoom (yang sangat diperlukan saat menggunakan sejumlah besar perpustakaan pihak ketiga).

Aplikasi 32-bit kuno


Serius? Tapi kenapa?! Microsoft menambahkan dukungan untuk aplikasi 64-bit dan berbagai peningkatan keamanan untuk prosesor 64-bit, dimulai dengan Windows 7. Ini terjadi pada tahun 2009, sebelas tahun yang lalu. Dan Windows 7 sendiri telah lama usang (sejak 14 Januari 2020, OS ini tidak lagi didukung). Tapi tidak, pada tahun 2020 Zoom masih hanya merilis aplikasi Windows 32-bit.

zData.dll


zData.dll menggunakan komponen dengan kerentanan. Pustaka OpenSSL 1.0.2 yang sudah usang (tanggal 27 Maret 2018) dikenal karena kerentanannya yang tidak akan diperbaiki oleh siapa pun.

Sejak Desember 2019, pekerjaan pada OpenSSL 1.0.2 telah dihentikan. Berikut adalah apa yang ditulis oleh pengembangnya:

β€œMenurut rilis saat ini dan masa depan, proyek OpenSSL membuat keputusan berikut:

  • Versi OpenSSL berikutnya adalah 3.0.0.
  • Versi 1.1.1 akan didukung hingga 2023-09-11 (LTS).
  • Versi 1.0.2 tidak lagi didukung. Dukungan berbayar yang ditingkatkan sekarang tersedia .
  • Versi 1.1.0, 1.0.1, 1.0.0 dan 0.9.8 tidak lagi didukung. "

Atau di sini :



Menggabungkan Pernyataan SQL


  • CWE-89 : Netralisasi elemen-elemen khusus dari perintah SQL (injeksi SQL)

Di zData.dll, backend digunakan untuk menyimpan berbagai sesi dan data konfigurasi dalam database SQLite terenkripsi. Dalam beberapa kasus, pernyataan SQL dalam kode tampaknya hanya digabungkan, seperti yang ditunjukkan di bawah ini:

Contoh 1:



Contoh 2:



Bergantung pada implementasi operator + =, zData.dll berpotensi membuat kerentanan injeksi SQL yang dapat menyebabkan pengungkapan informasi atau eksekusi kode arbitrer pada perangkat pengguna akhir Zoom.

Oh, permisi ... tapi ini, kebetulan, bukan kunci untuk dekripsi kriptografi dari database SQLite terenkripsi?



Saya tidak tahu pasti, sebenarnya :-) Namun, enkripsi database, pada prinsipnya, tidak mengganggu akses ke data rahasia yang disimpan di sana. Tampaknya Zoom menggunakan database SQLite untuk menyimpan catatan riwayat, log, dan mungkin juga untuk menyimpan data sensitif seperti kata sandi dan / atau kunci kriptografi. Saya tidak menggunakan SQLite sebagai wadah data, saya meninggalkan kesenangan ini untuk pembaca yang lebih penasaran.

Zzhost.dll


Ancaman Kelebihan Buffer


Melihat melalui tabel impor biner, saya menemukan panggilan ke sprintf (). Tetapi Anda tahu bahwa sprintf () adalah fungsi yang berpotensi berbahaya, dan kompiler memberikan peringatan jika Anda menggunakannya. Tampaknya peringatan seperti itu tidak mengganggu pengembang Zoom.

  • CWE-120 : menyalin isi buffer tanpa terlebih dahulu memeriksa ukuran data input (dalam fungsi logging)
  • CWE-676 : Menggunakan Fungsi yang Berpotensi Berbahaya (sprintf)



Untuk berhasil mengeksploitasi kerentanan ini, perlu untuk mengontrol konten buffer sumber. Saya belum mencoba melakukan ini sendiri. Namun, karena ini adalah fungsi pencatatan (mis. Pencatatan), penyerang secara teoritis dapat memengaruhi konten buffer asli. Sekali lagi, saya sendiri tidak memeriksa apakah ini benar-benar mungkin. Tetapi bahkan fakta terjadinya kesempatan seperti itu dan mengabaikan peringatan tentang bahaya penggunaan fungsi adalah praktik yang sangat buruk. Pengembang! Jangan lakukan itu!

zCrashReport.exe


Menyimpan kunci registri Windows


Registri Windows berisi informasi yang sangat penting - terutama ketika kita mengaksesnya melalui proses dengan hak istimewa.

Saya menemukan ini:



"Kunci registri pembuangan" terdengar seperti fungsi jahat bagi saya, jadi saya mencoba mencari tahu apakah itu benar-benar menyimpan kunci dan nilai-nilai registri Windows. Ya, itu, saya menemukan fragmen yang sesuai dalam kode:



Tangkapan layar di Crash Reporter


zCrashReport.dll menawarkan kepada kami fungsi-fungsi berikut:



Di crashReport.exe, fungsi Windows API digunakan untuk menangkap layar dan jendela.



Apakah Anda pikir Zoom mengirim data yang diambil dari layar ke servernya? Jika demikian, maka ini dapat dianggap sebagai kode berbahaya.

Airhost.exe


Komponen dengan Kerentanan


Airhost.exe menggunakan libcurl 7.36.0 (dirilis 26 Maret 2014), di mana 52 kerentanan ditemukan . Nah, ikal, pada gilirannya, termasuk libssh2, yang juga dicatat oleh sejumlah kerentanan:




Kerentanan ini, untungnya, tidak menimbulkan ancaman khusus bagi pengguna Zoom. Namun, mengapa menggunakan pustaka yang usang dan rentan jika Anda peduli dengan kode Anda sama sekali? Lebih mudah menggunakan versi terbaru daripada menebak jika kerentanan berikutnya yang ditemukan akan memengaruhi aplikasi Anda, bukan?

Enkripsi / Dekripsi Hard Key


Airhost.exe menggunakan konstanta sebagai kunci enkripsi simetris: Garis keluaran SHA256 β€œ0123425234234fsdfsdr3242” digunakan untuk mengenkripsi / mendekripsi AES-256 melalui OpenSSL.



Dan garis "3423423432325249" digunakan sebagai inisialisasi vektor IV.



Kerentanan zWebService.dll dan tp.dll


zWebService.dll dan tp.dll menggunakan libcurl 7.55.1. Meskipun perpustakaan ini tidak setua libcurl 7.36.0 (yang digunakan di airhost.exe), masih sedikit ketinggalan jaman. Jika keamanan pengguna akhir benar-benar penting bagi pengembang, mereka akan memeriksa daftar kerentanan ini:



Kerentanan turbojpeg.dll


Turbojpeg.dll menggunakan libjpeg-turbo 2.0.0 (build 20190715). Berikut adalah daftar kerentanan di kelas eksekusi kode jauh turbojpeg / libjpeg-turbo:



Apa berikutnya?


Pada titik ini, saya berhenti menggali bagian dalam Zoom untuk Windows. Bagi mereka yang ingin melanjutkan, saya dengan senang hati menyerahkan tongkat:

sha256 checksum dari Zoom 4.6.11 (20559.0413) file yang dapat dieksekusi


All Articles