Analisis dan Pemanfaatan Kerentanan 0day Sistem Windows Microsoft
Baru-baru ini, pembaruan keamanan yang dirilis oleh Microsoft mengandung kerentanan eskalasi hak istimewa win32k yang sedang dieksploitasi. Kerentanan ini terutama ada di versi awal sistem Windows, dan tidak dapat dipicu di Windows 11. Artikel ini akan menganalisis bagaimana penyerang terus memanfaatkan kerentanan semacam ini di tengah penguatan perlindungan keamanan saat ini. Proses analisis kami dilakukan di lingkungan Windows Server 2016.
Latar Belakang Kerentanan
0day vulnerability mengacu pada kerentanan keamanan yang belum dipublikasikan dan belum diperbaiki, mirip dengan konsep perdagangan T+0 di pasar keuangan. Kerentanan semacam ini, setelah ditemukan, dapat disalahgunakan tanpa terdeteksi, menyebabkan kerusakan besar.
Kerentanan 0day pada sistem Windows yang ditemukan kali ini memungkinkan penyerang untuk mendapatkan kontrol penuh atas sistem. Ini dapat mengakibatkan kebocoran informasi pribadi, keruntuhan sistem, kehilangan data, kerugian finansial, dan konsekuensi serius lainnya. Dari sudut pandang Web3, kunci pribadi pengguna dapat dicuri, dan aset digital dapat dipindahkan. Dalam skala yang lebih besar, kerentanan ini dapat mempengaruhi seluruh ekosistem Web3 yang berjalan pada infrastruktur berbasis Web2.
Analisis Kerentanan
Dengan menganalisis kode patch, kami menemukan bahwa ini adalah masalah kesalahan penghitungan referensi objek. Komentar dalam kode win32k yang lebih awal menunjukkan bahwa sebelumnya hanya objek jendela yang dikunci, tanpa mengunci objek menu dalam jendela, yang dapat menyebabkan objek menu dirujuk secara salah.
Analisis lebih lanjut menunjukkan bahwa, dalam fungsi xxxEnableMenuItem, objek menu yang dikembalikan bisa jadi adalah menu utama jendela, submenu, atau bahkan menu yang lebih dalam. Ini memberikan ide untuk membangun POC.
Implementasi POC
Kami telah membangun struktur menu bertingkat khusus yang terdiri dari empat objek menu dengan hubungan tertentu. Dengan mengatur atribut dan hubungan menu ini dengan cermat, kita dapat melewati deteksi fungsi xxxEnableMenuItem dan membebaskan objek menu yang penting saat fungsi tersebut kembali. Dengan demikian, saat objek tersebut dirujuk di kemudian hari, akan memicu kerentanan UAF.
Eksploitasi Kerentanan(EXP)
Pemikiran keseluruhan
Kami mempertimbangkan dua jenis eksploitasi: mengeksekusi shellcode dan memodifikasi token menggunakan primitif baca/tulis. Akhirnya, kami memilih yang terakhir karena lebih dapat dilakukan di Windows versi tinggi. Kami membagi seluruh proses eksploitasi menjadi dua langkah: bagaimana mengontrol nilai cbwndextra melalui UAF, dan bagaimana menggunakan cbwndextra yang terkontrol untuk mencapai primitif baca/tulis yang stabil.
Penulisan data awal
Kami menggunakan objek nama kelas jendela WNDClass untuk mengisi memori objek menu yang telah dibebaskan. Dengan menganalisis berbagai kemungkinan titik penulisan, akhirnya dipilih untuk menulis nilai cb-extra HWNDClass dengan menggunakan operasi AND pada flag objek dalam fungsi xxxRedrawWindow.
tata letak memori
Kami merancang tata letak memori yang terdiri dari tiga objek HWND yang berurutan, di mana objek tengah dibebaskan dan ditempati oleh objek HWNDClass. Objek HWND di depan dan belakang digunakan untuk menghindari deteksi dan mewujudkan operasi baca/tulis akhir. Melalui alamat pegangan kernel yang bocor, kami dapat mengontrol dengan tepat susunan objek-objek ini.
Implementasi primitive baca-tulis
Operasi baca sembarang menggunakan fungsi GetMenuBarInfo, sedangkan operasi tulis sembarang menggunakan fungsi SetClassLongPtr. Selain penulisan TOKEN yang bergantung pada objek kelas jendela kedua, operasi tulis lainnya memanfaatkan objek kelas jendela pertama melalui offset untuk diimplementasikan.
Ringkasan
Microsoft sedang mencoba untuk merestrukturisasi kode win32k menggunakan Rust, di masa depan kerentanan semacam ini mungkin dapat diatasi sepenuhnya dalam sistem baru.
Proses pemanfaatan jenis kerentanan ini relatif sederhana, tantangan utamanya adalah bagaimana mengontrol penulisan data pertama.
Penemuan celah mungkin berkat teknologi deteksi cakupan kode yang lebih baik.
Untuk deteksi kerentanan, selain memperhatikan titik kunci dari fungsi pemicu, juga harus memeriksa 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.
7 Suka
Hadiah
7
6
Bagikan
Komentar
0/400
DeFiGrayling
· 2jam yang lalu
Microsoft kali ini benar-benar bermain besar -_-
Lihat AsliBalas0
HackerWhoCares
· 2jam yang lalu
Tidak heran komputer saya sangat lambat!
Lihat AsliBalas0
ResearchChadButBroke
· 2jam yang lalu
Microsoft kali ini benar-benar hancur
Lihat AsliBalas0
GasWrangler
· 2jam yang lalu
secara teknis, kekurangan tata letak memori ini sangat tidak optimal
Kerentanan 0day sistem Windows memicu risiko keamanan Web3, analisis proses pemanfaatan oleh para ahli
Analisis dan Pemanfaatan Kerentanan 0day Sistem Windows Microsoft
Baru-baru ini, pembaruan keamanan yang dirilis oleh Microsoft mengandung kerentanan eskalasi hak istimewa win32k yang sedang dieksploitasi. Kerentanan ini terutama ada di versi awal sistem Windows, dan tidak dapat dipicu di Windows 11. Artikel ini akan menganalisis bagaimana penyerang terus memanfaatkan kerentanan semacam ini di tengah penguatan perlindungan keamanan saat ini. Proses analisis kami dilakukan di lingkungan Windows Server 2016.
Latar Belakang Kerentanan
0day vulnerability mengacu pada kerentanan keamanan yang belum dipublikasikan dan belum diperbaiki, mirip dengan konsep perdagangan T+0 di pasar keuangan. Kerentanan semacam ini, setelah ditemukan, dapat disalahgunakan tanpa terdeteksi, menyebabkan kerusakan besar.
Kerentanan 0day pada sistem Windows yang ditemukan kali ini memungkinkan penyerang untuk mendapatkan kontrol penuh atas sistem. Ini dapat mengakibatkan kebocoran informasi pribadi, keruntuhan sistem, kehilangan data, kerugian finansial, dan konsekuensi serius lainnya. Dari sudut pandang Web3, kunci pribadi pengguna dapat dicuri, dan aset digital dapat dipindahkan. Dalam skala yang lebih besar, kerentanan ini dapat mempengaruhi seluruh ekosistem Web3 yang berjalan pada infrastruktur berbasis Web2.
Analisis Kerentanan
Dengan menganalisis kode patch, kami menemukan bahwa ini adalah masalah kesalahan penghitungan referensi objek. Komentar dalam kode win32k yang lebih awal menunjukkan bahwa sebelumnya hanya objek jendela yang dikunci, tanpa mengunci objek menu dalam jendela, yang dapat menyebabkan objek menu dirujuk secara salah.
Analisis lebih lanjut menunjukkan bahwa, dalam fungsi xxxEnableMenuItem, objek menu yang dikembalikan bisa jadi adalah menu utama jendela, submenu, atau bahkan menu yang lebih dalam. Ini memberikan ide untuk membangun POC.
Implementasi POC
Kami telah membangun struktur menu bertingkat khusus yang terdiri dari empat objek menu dengan hubungan tertentu. Dengan mengatur atribut dan hubungan menu ini dengan cermat, kita dapat melewati deteksi fungsi xxxEnableMenuItem dan membebaskan objek menu yang penting saat fungsi tersebut kembali. Dengan demikian, saat objek tersebut dirujuk di kemudian hari, akan memicu kerentanan UAF.
Eksploitasi Kerentanan(EXP)
Pemikiran keseluruhan
Kami mempertimbangkan dua jenis eksploitasi: mengeksekusi shellcode dan memodifikasi token menggunakan primitif baca/tulis. Akhirnya, kami memilih yang terakhir karena lebih dapat dilakukan di Windows versi tinggi. Kami membagi seluruh proses eksploitasi menjadi dua langkah: bagaimana mengontrol nilai cbwndextra melalui UAF, dan bagaimana menggunakan cbwndextra yang terkontrol untuk mencapai primitif baca/tulis yang stabil.
Penulisan data awal
Kami menggunakan objek nama kelas jendela WNDClass untuk mengisi memori objek menu yang telah dibebaskan. Dengan menganalisis berbagai kemungkinan titik penulisan, akhirnya dipilih untuk menulis nilai cb-extra HWNDClass dengan menggunakan operasi AND pada flag objek dalam fungsi xxxRedrawWindow.
tata letak memori
Kami merancang tata letak memori yang terdiri dari tiga objek HWND yang berurutan, di mana objek tengah dibebaskan dan ditempati oleh objek HWNDClass. Objek HWND di depan dan belakang digunakan untuk menghindari deteksi dan mewujudkan operasi baca/tulis akhir. Melalui alamat pegangan kernel yang bocor, kami dapat mengontrol dengan tepat susunan objek-objek ini.
Implementasi primitive baca-tulis
Operasi baca sembarang menggunakan fungsi GetMenuBarInfo, sedangkan operasi tulis sembarang menggunakan fungsi SetClassLongPtr. Selain penulisan TOKEN yang bergantung pada objek kelas jendela kedua, operasi tulis lainnya memanfaatkan objek kelas jendela pertama melalui offset untuk diimplementasikan.
Ringkasan
Microsoft sedang mencoba untuk merestrukturisasi kode win32k menggunakan Rust, di masa depan kerentanan semacam ini mungkin dapat diatasi sepenuhnya dalam sistem baru.
Proses pemanfaatan jenis kerentanan ini relatif sederhana, tantangan utamanya adalah bagaimana mengontrol penulisan data pertama.
Penemuan celah mungkin berkat teknologi deteksi cakupan kode yang lebih baik.
Untuk deteksi kerentanan, selain memperhatikan titik kunci dari fungsi pemicu, juga harus memeriksa tata letak memori yang tidak biasa dan operasi baca tulis data.