Analisis Kerentanan Serius Sistem Windows Microsoft: Dapat Mengontrol Sistem Sepenuhnya dan Mengancam Keamanan Web3
Patch keamanan yang dirilis oleh Microsoft bulan lalu memperbaiki kerentanan eskalasi hak akses pada sistem Windows yang sedang dieksploitasi oleh peretas. Kerentanan ini terutama ada di versi Windows yang lebih awal dan tidak dapat dipicu di Windows 11.
Kerentanan dasar sistem Windows seperti ini telah ada sejak lama, artikel ini akan menganalisis bagaimana peretas mungkin terus memanfaatkan kerentanan ini di tengah latar belakang perlindungan keamanan yang semakin diperkuat saat ini. Lingkungan analisis kami adalah Windows Server 2016.
Kerentanan ini adalah kerentanan zero-day, yaitu kerentanan yang belum dipublikasikan dan belum diperbaiki. Kerentanan zero-day dapat dimanfaatkan oleh pihak jahat tanpa pengetahuan pengguna, dan memiliki tingkat kerusakan yang sangat besar. Melalui kerentanan sistem Windows ini, peretas dapat mendapatkan kendali penuh atas sistem.
Konsekuensi dari sistem yang dikendalikan oleh peretas sangat serius, termasuk pencurian informasi pribadi, keruntuhan sistem dan kehilangan data, kerugian finansial, serta penanaman perangkat lunak jahat. Bagi pengguna individu, kunci pribadi cryptocurrency dapat dicuri dan aset digital dapat dipindahkan. Dari sudut pandang yang lebih luas, celah ini dapat mengancam proyek Web3 yang bergantung pada infrastruktur Web2.
Analisis kode patch, masalahnya tampaknya adalah bahwa penghitung referensi dari suatu objek telah diproses terlalu banyak kali. Berdasarkan komentar sumber win32k sebelumnya, kode asli hanya mengunci objek jendela, tidak mengunci objek menu di dalam objek jendela, yang mengakibatkan objek menu mungkin direferensikan secara tidak benar.
Saat melakukan bukti konsep kerentanan ( PoC ), kami menemukan bahwa ada masalah dalam penanganan objek menu pada fungsi xxxEnableMenuItem. Menu yang dikembalikan bisa jadi adalah menu utama jendela, menu anak, atau bahkan sub-menu dari menu anak. Kami membangun struktur menu khusus dengan empat lapisan untuk memicu kerentanan.
Sebelum membangun (Exp), kami terutama mempertimbangkan dua arah: mengeksekusi kode shellcode dan menggunakan primitif baca/tulis untuk mengubah alamat token. Mengingat kelayakan, kami memilih yang terakhir. Seluruh proses pemanfaatan dibagi menjadi dua langkah: memanfaatkan celah UAF untuk mengendalikan nilai cbwndextra, lalu membangun primitif baca/tulis yang stabil.
Untuk mewujudkan penulisan data pertama, kami menggunakan objek nama jendela dalam kelas WNDClass untuk menggunakan objek menu yang dibebaskan. Dengan menyusun tata letak memori dengan cermat, kami dapat mengontrol data memori objek yang berdekatan, sehingga dapat memodifikasi nilai cb-extra dari HWNDClass.
Kami merancang tata letak memori untuk tiga objek HWND secara berurutan, dan setelah melepaskan objek tengah, kami menggunakan objek HWNDClass. Objek HWND sebelumnya digunakan untuk memeriksa melalui fungsi, dan objek terakhir digunakan untuk operasi baca/tulis akhir. Dengan alamat handle kernel yang bocor, kami dapat mengontrol urutan penyusunan objek secara akurat.
Dalam hal membaca dan menulis primitif, kami menggunakan GetMenuBarInfo() untuk membaca sembarang, SetClassLongPtr() untuk menulis sembarang. Selain penulisan token, semua penulisan lainnya menggunakan offset objek kelas dari objek jendela pertama.
Secara keseluruhan, meskipun versi pratinjau Windows 11 telah mulai membangun kembali kode win32k dengan Rust, kerentanan semacam ini tetap menjadi ancaman keamanan untuk sistem lama. Proses eksploitasi kerentanan ini relatif sederhana, terutama bergantung pada kebocoran alamat pegangan tumpukan desktop. Penemuan kerentanan ini mungkin berkat deteksi cakupan kode yang lebih baik. Untuk deteksi kerentanan, selain memperhatikan titik penting fungsi pemicu, juga harus memperhatikan tata letak memori yang tidak biasa dan operasi baca/tulis data.
Halaman ini mungkin berisi konten pihak ketiga, yang disediakan untuk tujuan informasi saja (bukan pernyataan/jaminan) dan tidak boleh dianggap sebagai dukungan terhadap pandangannya oleh Gate, atau sebagai nasihat keuangan atau profesional. Lihat Penafian untuk detailnya.
16 Suka
Hadiah
16
6
Bagikan
Komentar
0/400
FlashLoanLord
· 5jam yang lalu
Saatnya untuk mengganti apel lagi.
Lihat AsliBalas0
LightningSentry
· 6jam yang lalu
Tidak mau upgrade ke win11 masih berani jadi suckers? Harus dicabut!
Kerentanan serius Windows mengancam keamanan Web3, Hacker dapat sepenuhnya mengendalikan sistem
Analisis Kerentanan Serius Sistem Windows Microsoft: Dapat Mengontrol Sistem Sepenuhnya dan Mengancam Keamanan Web3
Patch keamanan yang dirilis oleh Microsoft bulan lalu memperbaiki kerentanan eskalasi hak akses pada sistem Windows yang sedang dieksploitasi oleh peretas. Kerentanan ini terutama ada di versi Windows yang lebih awal dan tidak dapat dipicu di Windows 11.
Kerentanan dasar sistem Windows seperti ini telah ada sejak lama, artikel ini akan menganalisis bagaimana peretas mungkin terus memanfaatkan kerentanan ini di tengah latar belakang perlindungan keamanan yang semakin diperkuat saat ini. Lingkungan analisis kami adalah Windows Server 2016.
Kerentanan ini adalah kerentanan zero-day, yaitu kerentanan yang belum dipublikasikan dan belum diperbaiki. Kerentanan zero-day dapat dimanfaatkan oleh pihak jahat tanpa pengetahuan pengguna, dan memiliki tingkat kerusakan yang sangat besar. Melalui kerentanan sistem Windows ini, peretas dapat mendapatkan kendali penuh atas sistem.
Konsekuensi dari sistem yang dikendalikan oleh peretas sangat serius, termasuk pencurian informasi pribadi, keruntuhan sistem dan kehilangan data, kerugian finansial, serta penanaman perangkat lunak jahat. Bagi pengguna individu, kunci pribadi cryptocurrency dapat dicuri dan aset digital dapat dipindahkan. Dari sudut pandang yang lebih luas, celah ini dapat mengancam proyek Web3 yang bergantung pada infrastruktur Web2.
Analisis kode patch, masalahnya tampaknya adalah bahwa penghitung referensi dari suatu objek telah diproses terlalu banyak kali. Berdasarkan komentar sumber win32k sebelumnya, kode asli hanya mengunci objek jendela, tidak mengunci objek menu di dalam objek jendela, yang mengakibatkan objek menu mungkin direferensikan secara tidak benar.
Saat melakukan bukti konsep kerentanan ( PoC ), kami menemukan bahwa ada masalah dalam penanganan objek menu pada fungsi xxxEnableMenuItem. Menu yang dikembalikan bisa jadi adalah menu utama jendela, menu anak, atau bahkan sub-menu dari menu anak. Kami membangun struktur menu khusus dengan empat lapisan untuk memicu kerentanan.
Sebelum membangun (Exp), kami terutama mempertimbangkan dua arah: mengeksekusi kode shellcode dan menggunakan primitif baca/tulis untuk mengubah alamat token. Mengingat kelayakan, kami memilih yang terakhir. Seluruh proses pemanfaatan dibagi menjadi dua langkah: memanfaatkan celah UAF untuk mengendalikan nilai cbwndextra, lalu membangun primitif baca/tulis yang stabil.
Untuk mewujudkan penulisan data pertama, kami menggunakan objek nama jendela dalam kelas WNDClass untuk menggunakan objek menu yang dibebaskan. Dengan menyusun tata letak memori dengan cermat, kami dapat mengontrol data memori objek yang berdekatan, sehingga dapat memodifikasi nilai cb-extra dari HWNDClass.
Kami merancang tata letak memori untuk tiga objek HWND secara berurutan, dan setelah melepaskan objek tengah, kami menggunakan objek HWNDClass. Objek HWND sebelumnya digunakan untuk memeriksa melalui fungsi, dan objek terakhir digunakan untuk operasi baca/tulis akhir. Dengan alamat handle kernel yang bocor, kami dapat mengontrol urutan penyusunan objek secara akurat.
Dalam hal membaca dan menulis primitif, kami menggunakan GetMenuBarInfo() untuk membaca sembarang, SetClassLongPtr() untuk menulis sembarang. Selain penulisan token, semua penulisan lainnya menggunakan offset objek kelas dari objek jendela pertama.
Secara keseluruhan, meskipun versi pratinjau Windows 11 telah mulai membangun kembali kode win32k dengan Rust, kerentanan semacam ini tetap menjadi ancaman keamanan untuk sistem lama. Proses eksploitasi kerentanan ini relatif sederhana, terutama bergantung pada kebocoran alamat pegangan tumpukan desktop. Penemuan kerentanan ini mungkin berkat deteksi cakupan kode yang lebih baik. Untuk deteksi kerentanan, selain memperhatikan titik penting fungsi pemicu, juga harus memperhatikan tata letak memori yang tidak biasa dan operasi baca/tulis data.