Analisis dan Pemanfaatan Kerentanan 0day Sistem Windows Microsoft
Baru-baru ini, patch keamanan yang dirilis oleh Microsoft telah memperbaiki kerentanan eskalasi hak akses win32k yang sedang aktif dieksploitasi. Kerentanan ini terutama mempengaruhi versi awal sistem Windows, dan tampaknya tidak dapat dipicu di Windows 11. Artikel ini akan menganalisis bagaimana penyerang mungkin terus mengeksploitasi kerentanan semacam ini dalam lingkungan keamanan saat ini. Analisis berikut dilakukan di lingkungan Windows Server 2016.
Latar Belakang Kerentanan
Kerentanan 0day merujuk pada kerentanan keamanan yang belum dipublikasikan dan belum diperbaiki, mirip dengan konsep perdagangan T+0 di pasar keuangan. Kerentanan semacam ini, jika dimanfaatkan secara jahat, dapat menyebabkan kerusakan serius. Kerentanan 0day yang ditemukan pada sistem Windows ini memungkinkan penyerang untuk mendapatkan kendali penuh atas sistem, yang kemudian dapat digunakan untuk melakukan pencurian informasi, penghancuran sistem, penanaman perangkat lunak berbahaya, dan serangan lainnya. Dari sudut pandang Web3, ini dapat menyebabkan pencurian kunci pribadi, pemindahan aset digital, bahkan membahayakan seluruh ekosistem Web3 yang berbasis pada infrastruktur Web2.
Analisis Patch
Analisis kode patch menemukan bahwa, perbaikan utama adalah masalah pengelolaan hitungan referensi objek. Berdasarkan komentar sumber kode win32k sebelumnya, diketahui bahwa kode asli hanya mengunci objek jendela, tetapi tidak mengunci objek menu di dalam jendela, yang dapat menyebabkan objek menu dirujuk secara tidak benar.
Pembuktian Konsep Eksploitasi ( PoC )
Analisis menunjukkan bahwa fungsi xxxEnableMenuItem dapat mengembalikan MenuItemState dari menu utama atau submenu jendela. Kami telah membangun struktur menu khusus dengan empat lapisan, yang mencakup fitur-fitur berikut:
ID menu tingkat terendah D harus berupa jenis menu sistem.
Menu tingkat atas A juga harus merupakan menu sistem, tetapi harus menghapus item dengan ID yang sama dengan menu D.
Hapus referensi menu C di menu B.
Keberadaan Menu B tampaknya membantu peluncuran Menu C.
Saat memicu kerentanan, hapus asosiasi menu C dan B saat xxxRedrawTitle mengembalikan lapisan pengguna, dan lepaskan menu C. Ini menyebabkan referensi objek menu C yang tidak valid setelah fungsi xxxEnableMenuItem.
Eksploitasi Kerentanan(Exp)
Pemikiran keseluruhan
Pertimbangkan dua arah pemanfaatan yang mungkin:
Eksekusi shellcode: merujuk pada kerentanan awal seperti CVE-2017-0263, namun mungkin menghadapi banyak hambatan di versi baru Windows.
Menggunakan primitif baca-tulis untuk memodifikasi token: Dalam beberapa tahun terakhir, masih ada eksp terbuka yang dapat dijadikan referensi, terutama perlu menyelesaikan masalah bagaimana mengontrol nilai cbwndextra untuk pertama kalinya.
Kami mengadopsi skema kedua, membagi exp menjadi dua langkah yaitu mengontrol nilai cbwndextra dan membangun primitif baca-tulis yang stabil.
Penulisan data pertama kali
Menggunakan objek nama kelas jendela WNDClass untuk mengalokasikan dan membebaskan memori objek menu. Temukan lokasi yang dapat ditulis data dalam fungsi xxxRedrawWindow, dengan mengontrol data memori objek sebelumnya untuk memenuhi pemeriksaan tanda dalam fungsi.
tata memori yang stabil
Rancang tata letak memori untuk tiga objek HWND berukuran 0x250 byte secara berurutan, bebaskan objek tengah dan gunakan objek HWNDClass untuk mengisi. Objek HWND di depan dan belakang digunakan untuk memeriksa dan menerapkan primitif baca/tulis melalui fungsi. Lokasi penyusunan objek ditentukan secara tepat melalui kebocoran alamat pegangan kernel.
Implementasi primitif baca-tulis
Baca sembarangan menggunakan fungsi GetMenuBarInfo, tulis sembarangan menggunakan fungsi SetClassLongPtr. Kecuali penulisan TOKEN, operasi tulis lainnya dilakukan melalui objek class dari objek jendela pertama.
Kesimpulan
Microsoft sedang menggunakan Rust untuk merombak kode win32k, yang mungkin dapat sepenuhnya menyelesaikan kerentanan semacam ini di masa depan.
Eksploitasi jenis ini terutama bergantung pada kebocoran alamat pegangan tumpukan desktop, yang masih menjadi ancaman keamanan bagi sistem lama.
Penemuan kerentanan ini mungkin berkat deteksi cakupan kode yang lebih baik.
Pemantauan terhadap tata letak memori yang tidak biasa dan pembacaan serta penulisan data jendela membantu dalam menemukan kerentanan yang serupa.
Lihat Asli
This page may contain third-party content, which is provided for information purposes only (not representations/warranties) and should not be considered as an endorsement of its views by Gate, nor as financial or professional advice. See Disclaimer for details.
11 Suka
Hadiah
11
6
Bagikan
Komentar
0/400
TestnetNomad
· 13jam yang lalu
Apa yang kamu bicarakan tentang Rust?
Lihat AsliBalas0
StealthDeployer
· 13jam yang lalu
Sudah lama beralih ke linux, bijak.
Lihat AsliBalas0
CryptoMotivator
· 13jam yang lalu
Sekali lagi ada masalah, bug Microsoft ini memang sudah tradisional.
Lihat AsliBalas0
LiquidatedDreams
· 13jam yang lalu
Selalu menggunakan Microsoft itu hanya jebakan.
Lihat AsliBalas0
MondayYoloFridayCry
· 14jam yang lalu
Saya adalah investor ritel terburuk di Web3
Komentar untuk artikel:
Apakah rust bisa menyelamatkan win? Itu membuat saya tertawa.
Analisis kerentanan 0day sistem Windows: dari eskalasi hak istimewa win32k hingga risiko keamanan Web3
Analisis dan Pemanfaatan Kerentanan 0day Sistem Windows Microsoft
Baru-baru ini, patch keamanan yang dirilis oleh Microsoft telah memperbaiki kerentanan eskalasi hak akses win32k yang sedang aktif dieksploitasi. Kerentanan ini terutama mempengaruhi versi awal sistem Windows, dan tampaknya tidak dapat dipicu di Windows 11. Artikel ini akan menganalisis bagaimana penyerang mungkin terus mengeksploitasi kerentanan semacam ini dalam lingkungan keamanan saat ini. Analisis berikut dilakukan di lingkungan Windows Server 2016.
Latar Belakang Kerentanan
Kerentanan 0day merujuk pada kerentanan keamanan yang belum dipublikasikan dan belum diperbaiki, mirip dengan konsep perdagangan T+0 di pasar keuangan. Kerentanan semacam ini, jika dimanfaatkan secara jahat, dapat menyebabkan kerusakan serius. Kerentanan 0day yang ditemukan pada sistem Windows ini memungkinkan penyerang untuk mendapatkan kendali penuh atas sistem, yang kemudian dapat digunakan untuk melakukan pencurian informasi, penghancuran sistem, penanaman perangkat lunak berbahaya, dan serangan lainnya. Dari sudut pandang Web3, ini dapat menyebabkan pencurian kunci pribadi, pemindahan aset digital, bahkan membahayakan seluruh ekosistem Web3 yang berbasis pada infrastruktur Web2.
Analisis Patch
Analisis kode patch menemukan bahwa, perbaikan utama adalah masalah pengelolaan hitungan referensi objek. Berdasarkan komentar sumber kode win32k sebelumnya, diketahui bahwa kode asli hanya mengunci objek jendela, tetapi tidak mengunci objek menu di dalam jendela, yang dapat menyebabkan objek menu dirujuk secara tidak benar.
Pembuktian Konsep Eksploitasi ( PoC )
Analisis menunjukkan bahwa fungsi xxxEnableMenuItem dapat mengembalikan MenuItemState dari menu utama atau submenu jendela. Kami telah membangun struktur menu khusus dengan empat lapisan, yang mencakup fitur-fitur berikut:
Saat memicu kerentanan, hapus asosiasi menu C dan B saat xxxRedrawTitle mengembalikan lapisan pengguna, dan lepaskan menu C. Ini menyebabkan referensi objek menu C yang tidak valid setelah fungsi xxxEnableMenuItem.
Eksploitasi Kerentanan(Exp)
Pemikiran keseluruhan
Pertimbangkan dua arah pemanfaatan yang mungkin:
Eksekusi shellcode: merujuk pada kerentanan awal seperti CVE-2017-0263, namun mungkin menghadapi banyak hambatan di versi baru Windows.
Menggunakan primitif baca-tulis untuk memodifikasi token: Dalam beberapa tahun terakhir, masih ada eksp terbuka yang dapat dijadikan referensi, terutama perlu menyelesaikan masalah bagaimana mengontrol nilai cbwndextra untuk pertama kalinya.
Kami mengadopsi skema kedua, membagi exp menjadi dua langkah yaitu mengontrol nilai cbwndextra dan membangun primitif baca-tulis yang stabil.
Penulisan data pertama kali
Menggunakan objek nama kelas jendela WNDClass untuk mengalokasikan dan membebaskan memori objek menu. Temukan lokasi yang dapat ditulis data dalam fungsi xxxRedrawWindow, dengan mengontrol data memori objek sebelumnya untuk memenuhi pemeriksaan tanda dalam fungsi.
tata memori yang stabil
Rancang tata letak memori untuk tiga objek HWND berukuran 0x250 byte secara berurutan, bebaskan objek tengah dan gunakan objek HWNDClass untuk mengisi. Objek HWND di depan dan belakang digunakan untuk memeriksa dan menerapkan primitif baca/tulis melalui fungsi. Lokasi penyusunan objek ditentukan secara tepat melalui kebocoran alamat pegangan kernel.
Implementasi primitif baca-tulis
Baca sembarangan menggunakan fungsi GetMenuBarInfo, tulis sembarangan menggunakan fungsi SetClassLongPtr. Kecuali penulisan TOKEN, operasi tulis lainnya dilakukan melalui objek class dari objek jendela pertama.
Kesimpulan
Microsoft sedang menggunakan Rust untuk merombak kode win32k, yang mungkin dapat sepenuhnya menyelesaikan kerentanan semacam ini di masa depan.
Eksploitasi jenis ini terutama bergantung pada kebocoran alamat pegangan tumpukan desktop, yang masih menjadi ancaman keamanan bagi sistem lama.
Penemuan kerentanan ini mungkin berkat deteksi cakupan kode yang lebih baik.
Pemantauan terhadap tata letak memori yang tidak biasa dan pembacaan serta penulisan data jendela membantu dalam menemukan kerentanan yang serupa.
Komentar untuk artikel:
Apakah rust bisa menyelamatkan win? Itu membuat saya tertawa.