Analisis Kerentanan Serius Sistem Windows Microsoft: Mungkin Mengancam Keamanan Ekosistem Web3
Patches keamanan yang dirilis Microsoft bulan lalu memperbaiki celah eskalasi hak akses Windows yang sedang dimanfaatkan oleh peretas. Celah ini terutama mempengaruhi versi awal sistem Windows, sementara Windows 11 tampaknya tidak terpengaruh.
Artikel ini akan menganalisis bagaimana penyerang terus memanfaatkan jenis kerentanan ini dalam konteks peningkatan perlindungan keamanan saat ini. Analisis kami didasarkan pada Windows Server 2016.
Latar Belakang Kerentanan
Ini adalah celah 0day, yaitu celah yang belum diumumkan dan diperbaiki. Hacker dapat memanfaatkannya untuk menyerang tanpa sepengetahuan pengguna, dan dapat menyebabkan kerusakan yang sangat besar.
Melalui kerentanan tingkat sistem Windows ini, hacker dapat memperoleh kontrol penuh atas sistem. Ini dapat menyebabkan kebocoran informasi pribadi, keruntuhan sistem, kehilangan data, kerugian finansial, dan konsekuensi serius lainnya. Bagi pengguna Web3, kunci privat dan aset digital dapat dicuri. Dari sudut pandang yang lebih luas, kerentanan ini bahkan dapat mempengaruhi seluruh ekosistem Web3 yang berbasis pada infrastruktur Web2.
Analisis Patch
Menganalisis kode patch, masalah tampaknya terletak pada penghitung referensi sebuah objek yang diproses lebih dari sekali. Dengan melihat komentar kode sebelumnya, kami menemukan bahwa kode sebelumnya hanya mengunci objek jendela, tidak mengunci objek menu di dalam jendela, yang dapat menyebabkan objek menu direferensikan dengan salah.
Reproduksi Kerentanan
Menganalisis konteks fungsi kerentanan, kami menemukan bahwa menu yang diteruskan xxxEnableMenuItem() biasanya sudah terkunci di fungsi tingkat atas, di sini ada pertanyaan tentang objek menu mana yang sebenarnya perlu dilindungi.
Analisis lebih lanjut menunjukkan bahwa fungsi MenuItemState di xxxEnableMenuItem mengembalikan dua kemungkinan menu: menu utama jendela atau submenu ( bahkan submenu dari submenu ).
Kami membangun struktur menu empat lapis khusus untuk memicu kerentanan, menu ini harus memenuhi beberapa kondisi tertentu untuk lolos dari deteksi dalam fungsi. Kuncinya adalah saat xxxRedrawTitle mengembalikan lapisan pengguna, menghapus hubungan referensi antara beberapa menu, dan melepaskan objek menu tertentu. Dengan cara ini, saat titik pengembalian fungsi xxxEnableMenuItem, objek menu yang akan dirujuk sudah tidak valid.
Eksploitasi Kerentanan
Dalam mengembangkan eksploit program (exp), kami terutama mempertimbangkan dua skema:
Eksekusi kode shellcode: merujuk pada kerentanan serupa di masa lalu, tetapi mungkin ada beberapa hambatan di versi baru Windows.
Menggunakan primitif baca-tulis untuk mengubah alamat token: Metode ini baru-baru ini masih memiliki eksp terbuka yang dapat dirujuk, dan memiliki generalitas yang baik terhadap tata letak memori tumpukan desktop dan primitif baca-tulis.
Kami memilih opsi kedua, membagi seluruh proses pemanfaatan menjadi dua langkah: bagaimana memanfaatkan kerentanan UAF untuk mengontrol nilai cbwndextra, serta bagaimana secara stabil mewujudkan primitif baca tulis.
Kuncinya adalah menemukan posisi di dalam struktur alamat yang dapat kami bangun yang dapat diisi dengan data secara sembarangan. Akhirnya, kami memilih untuk melakukannya melalui operasi AND pada sebuah flag di dalam fungsi xxxRedrawWindow.
Untuk mencapai tata letak memori yang stabil, kami merancang setidaknya tiga objek HWND berukuran 0x250 byte yang berurutan, melepaskan objek di tengah, dan menggunakan objek HWNDClass. Objek HWND di depan dan belakang digunakan untuk memverifikasi melalui fungsi dan mewujudkan primitif baca tulis yang akhir.
Kami juga menentukan dengan tepat apakah objek diatur seperti yang diharapkan melalui alamat pegangan inti yang bocor. Dalam hal primitif baca-tulis, kami menggunakan GetMenuBarInfo() untuk melakukan pembacaan sembarang, dan menggunakan SetClassLongPtr() untuk melakukan penulisan sembarang.
Kesimpulan
Microsoft sedang mencoba untuk membangun kembali kode terkait win32k menggunakan Rust, di masa depan jenis kerentanan ini mungkin dapat dihindari dalam sistem baru.
Proses pemanfaatan kerentanan jenis ini relatif sederhana, terutama bergantung pada kebocoran alamat pegangan tumpukan desktop. Jika masalah ini tidak diselesaikan secara menyeluruh, sistem lama akan terus menghadapi risiko keamanan.
Penemuan kerentanan ini mungkin berkat teknologi deteksi cakupan kode yang lebih baik.
Untuk deteksi eksploitasi kerentanan, selain memantau fungsi kunci, juga harus memperhatikan tata letak memori yang tidak biasa dan perilaku 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.
8 Suka
Hadiah
8
5
Posting ulang
Bagikan
Komentar
0/400
rekt_but_not_broke
· 9jam yang lalu
Menghasilkan uang tidak bisa ditunda, dompet harus dilindungi terlebih dahulu!
Lihat AsliBalas0
MetaLord420
· 9jam yang lalu
Bermain Windows masih berani menyentuh web3?!
Lihat AsliBalas0
SighingCashier
· 9jam yang lalu
Sistem lama mengalami masalah ini, sudah saatnya diganti.
Lihat AsliBalas0
ForkMaster
· 9jam yang lalu
play people for suckers tidak bisa dilakukan lagi? lari ke celah untuk Penambangan
Ancaman kerentanan sistem Windows terhadap keamanan ekosistem Web3 Analisis mendalam oleh para ahli tentang mekanisme pemanfaatan
Analisis Kerentanan Serius Sistem Windows Microsoft: Mungkin Mengancam Keamanan Ekosistem Web3
Patches keamanan yang dirilis Microsoft bulan lalu memperbaiki celah eskalasi hak akses Windows yang sedang dimanfaatkan oleh peretas. Celah ini terutama mempengaruhi versi awal sistem Windows, sementara Windows 11 tampaknya tidak terpengaruh.
Artikel ini akan menganalisis bagaimana penyerang terus memanfaatkan jenis kerentanan ini dalam konteks peningkatan perlindungan keamanan saat ini. Analisis kami didasarkan pada Windows Server 2016.
Latar Belakang Kerentanan
Ini adalah celah 0day, yaitu celah yang belum diumumkan dan diperbaiki. Hacker dapat memanfaatkannya untuk menyerang tanpa sepengetahuan pengguna, dan dapat menyebabkan kerusakan yang sangat besar.
Melalui kerentanan tingkat sistem Windows ini, hacker dapat memperoleh kontrol penuh atas sistem. Ini dapat menyebabkan kebocoran informasi pribadi, keruntuhan sistem, kehilangan data, kerugian finansial, dan konsekuensi serius lainnya. Bagi pengguna Web3, kunci privat dan aset digital dapat dicuri. Dari sudut pandang yang lebih luas, kerentanan ini bahkan dapat mempengaruhi seluruh ekosistem Web3 yang berbasis pada infrastruktur Web2.
Analisis Patch
Menganalisis kode patch, masalah tampaknya terletak pada penghitung referensi sebuah objek yang diproses lebih dari sekali. Dengan melihat komentar kode sebelumnya, kami menemukan bahwa kode sebelumnya hanya mengunci objek jendela, tidak mengunci objek menu di dalam jendela, yang dapat menyebabkan objek menu direferensikan dengan salah.
Reproduksi Kerentanan
Menganalisis konteks fungsi kerentanan, kami menemukan bahwa menu yang diteruskan xxxEnableMenuItem() biasanya sudah terkunci di fungsi tingkat atas, di sini ada pertanyaan tentang objek menu mana yang sebenarnya perlu dilindungi.
Analisis lebih lanjut menunjukkan bahwa fungsi MenuItemState di xxxEnableMenuItem mengembalikan dua kemungkinan menu: menu utama jendela atau submenu ( bahkan submenu dari submenu ).
Kami membangun struktur menu empat lapis khusus untuk memicu kerentanan, menu ini harus memenuhi beberapa kondisi tertentu untuk lolos dari deteksi dalam fungsi. Kuncinya adalah saat xxxRedrawTitle mengembalikan lapisan pengguna, menghapus hubungan referensi antara beberapa menu, dan melepaskan objek menu tertentu. Dengan cara ini, saat titik pengembalian fungsi xxxEnableMenuItem, objek menu yang akan dirujuk sudah tidak valid.
Eksploitasi Kerentanan
Dalam mengembangkan eksploit program (exp), kami terutama mempertimbangkan dua skema:
Eksekusi kode shellcode: merujuk pada kerentanan serupa di masa lalu, tetapi mungkin ada beberapa hambatan di versi baru Windows.
Menggunakan primitif baca-tulis untuk mengubah alamat token: Metode ini baru-baru ini masih memiliki eksp terbuka yang dapat dirujuk, dan memiliki generalitas yang baik terhadap tata letak memori tumpukan desktop dan primitif baca-tulis.
Kami memilih opsi kedua, membagi seluruh proses pemanfaatan menjadi dua langkah: bagaimana memanfaatkan kerentanan UAF untuk mengontrol nilai cbwndextra, serta bagaimana secara stabil mewujudkan primitif baca tulis.
Kuncinya adalah menemukan posisi di dalam struktur alamat yang dapat kami bangun yang dapat diisi dengan data secara sembarangan. Akhirnya, kami memilih untuk melakukannya melalui operasi AND pada sebuah flag di dalam fungsi xxxRedrawWindow.
Untuk mencapai tata letak memori yang stabil, kami merancang setidaknya tiga objek HWND berukuran 0x250 byte yang berurutan, melepaskan objek di tengah, dan menggunakan objek HWNDClass. Objek HWND di depan dan belakang digunakan untuk memverifikasi melalui fungsi dan mewujudkan primitif baca tulis yang akhir.
Kami juga menentukan dengan tepat apakah objek diatur seperti yang diharapkan melalui alamat pegangan inti yang bocor. Dalam hal primitif baca-tulis, kami menggunakan GetMenuBarInfo() untuk melakukan pembacaan sembarang, dan menggunakan SetClassLongPtr() untuk melakukan penulisan sembarang.
Kesimpulan
Microsoft sedang mencoba untuk membangun kembali kode terkait win32k menggunakan Rust, di masa depan jenis kerentanan ini mungkin dapat dihindari dalam sistem baru.
Proses pemanfaatan kerentanan jenis ini relatif sederhana, terutama bergantung pada kebocoran alamat pegangan tumpukan desktop. Jika masalah ini tidak diselesaikan secara menyeluruh, sistem lama akan terus menghadapi risiko keamanan.
Penemuan kerentanan ini mungkin berkat teknologi deteksi cakupan kode yang lebih baik.
Untuk deteksi eksploitasi kerentanan, selain memantau fungsi kunci, juga harus memperhatikan tata letak memori yang tidak biasa dan perilaku baca/tulis data.