Pemverifikasi Aplikasi - Gambaran Umum
Ringkasan
Application Verifier (AppVerifier) adalah alat verifikasi runtime untuk kode tidak terkelola yang membantu menemukan kesalahan pemrograman yang halus, masalah keamanan, dan masalah hak istimewa akun pengguna terbatas yang dapat sulit diidentifikasi dengan teknik pengujian aplikasi normal.
Gambaran Umum
Salah satu tantangan terbesar yang dihadapi oleh programmer, arsitek perangkat lunak, penguji, dan konsultan keamanan adalah memahami jalur eksekusi variabel aplikasi mereka ketika disebarkan ke dalam produksi. Bahkan dengan akses ke kode sumber, sulit untuk memahami semua yang akan terjadi selama eksekusi karena berbagai dependensi (misalnya. beberapa grup berkontribusi pada kode atau memanfaatkan komponen eksternal). Microsoft AppVerifier dapat memainkan peran yang berguna dalam membantu mengelola kompleksitas ini dan potensi efek samping bug. AppVerifier membantu menemukan kesalahan pemrograman, masalah keamanan, dan masalah hak istimewa akun pengguna yang dapat sulit diidentifikasi selama lulus pengujian umum.
Application Verifier (AppVerif.exe) adalah alat verifikasi dinamis untuk aplikasi mode pengguna. Alat ini memantau tindakan aplikasi saat aplikasi berjalan, membuat aplikasi mengalami berbagai stres dan pengujian, dan menghasilkan laporan tentang potensi kesalahan dalam eksekusi atau desain aplikasi.
Pemverifikasi Aplikasi dapat mendeteksi kesalahan dalam aplikasi mode pengguna apa pun yang tidak didasarkan pada kode terkelola, termasuk driver mode pengguna. Ini menemukan kesalahan pemrograman halang yang mungkin sulit dideteksi selama pengujian aplikasi standar atau pengujian driver.
Ketika digunakan di seluruh siklus hidup pengembangan perangkat lunak, AppVerifier dapat membawa manfaat biaya untuk upaya pengembangan karena memfasilitasi mengidentifikasi masalah sejak dini ketika lebih mudah dan lebih murah untuk diperbaiki. Ini juga membantu mendeteksi kesalahan yang mungkin tidak diperhatikan dan memastikan bahwa aplikasi akhir dapat dijalankan di lingkungan terbatas (misalnya, non-admin).
Dukungan ARM64EC
Pemverifikasi Aplikasi tidak mendukung ARM64EC.
Menginstal AppVerifier
Pemverifikasi Aplikasi disertakan dalam Windows Software Development Kit (SDK). Untuk menginstal Pemverifikasi Aplikasi, centang kotak untuk itu, selama penginstalan SDK.
Anda dapat menggunakan Pemverifikasi Aplikasi sendiri atau bersama dengan debugger mode pengguna. Pengguna saat ini harus menjadi anggota grup Administrator pada komputer.
Apa yang diperiksa AppVerifier?
AppVerifier adalah alat yang dirancang untuk mendeteksi dan membantu men-debug kerusakan memori, kerentanan keamanan penting, dan masalah hak istimewa akun pengguna terbatas. AppVerifier membantu dalam pembuatan aplikasi yang andal dan aman dengan memantau interaksi aplikasi dengan sistem operasi Microsoft Windows, dan membuat profil penggunaan objek, registri, sistem file, dan API Win32 (termasuk timbunan, handel, dan kunci). AppVerifier juga menyertakan pemeriksaan untuk memprediksi seberapa baik performa aplikasi di lingkungan non-admin.
Masalah yang diidentifikasi AppVerifier
AppVerifier membantu menentukan:
Ketika aplikasi menggunakan API dengan benar:
- API TerminateThread tidak aman.
- Penggunaan API Thread Local Storage (TLS) yang benar.
- Penggunaan manipulasi ruang virtual yang benar (misalnya, VirtualAlloc, MapViewOfFile).
- Apakah aplikasi menyembunyikan pelanggaran akses menggunakan penanganan pengecualian terstruktur.
- Apakah aplikasi mencoba menggunakan handel yang tidak valid.
- Apakah ada kerusakan memori atau masalah dalam tumpukan.
- Apakah aplikasi kehabisan memori di bawah sumber daya rendah.
- Apakah penggunaan bagian penting yang benar terjadi.
- Apakah aplikasi yang berjalan di lingkungan administratif akan berjalan dengan baik di lingkungan dengan hak istimewa yang lebih sedikit.
- Apakah ada potensi masalah ketika aplikasi berjalan sebagai pengguna terbatas.
- Apakah ada variabel yang tidak diinisialisasi dalam panggilan fungsi di masa mendatang dalam konteks utas.
Pengujian AppVerifier
AppVerifier terdiri dari serangkaian pengujian yang disebut "lapisan verifikasi." Ini dapat diaktifkan atau dinonaktifkan untuk setiap aplikasi yang sedang diuji. Dengan memperluas lapisan verifikasi dalam area pengujian, pengujian tertentu ditampilkan. Untuk mengaktifkan pengujian aplikasi, pilih kotak centang di sampingnya. Untuk mengaktifkan seluruh lapisan verifikasi, seperti Dasar, pilih kotak centang di tingkat atas.
Ada tiga belas jenis pengujian yang dapat dilakukan AppVerifier.
Dasar - Minimal, Anda harus menjalankan Pemverifikasi Aplikasi dengan pengaturan Dasar yang dipilih. Masing-masing akan menguji area yang akan menyebabkan crash atau skenario negatif lainnya, yang memiliki dampak langsung dan signifikan dari pengalaman pelanggan. Untuk detail selengkapnya, lihat Pemverifikasi Aplikasi- Pengujian dalam Pemverifikasi Aplikasi
Kompatibilitas - Pengujian Lapisan Verifikasi Kompatibilitas membantu mengidentifikasi aplikasi yang mungkin memiliki masalah dengan sistem operasi Microsoft Windows. Banyak dari pemeriksaan ini juga dapat digunakan untuk menguji persyaratan logo. Untuk detail selengkapnya, lihat Pemverifikasi Aplikasi- Pengujian dalam Pemverifikasi Aplikasi
Cuzz - Lapisan verifikasi Concurrency Fuzzing (Cuzz) mendeteksi bug konkurensi dan kondisi perlombaan data. Cuzz menyesuaikan penjadwalan utas dengan menyuntikkan penundaan acak pada titik kunci dalam kode aplikasi. Untuk detail selengkapnya, lihat Pemverifikasi Aplikasi- Pengujian dalam Pemverifikasi Aplikasi
Simulasi Sumber Daya Rendah - Simulasi sumber daya rendah mencoba mensimulasikan lingkungan di bawah sumber daya rendah, seperti kehabisan memori. Simulasi ini akan mengidentifikasi bug yang terjadi dalam kondisi memori rendah. Ini juga disebut sebagai Injeksi Kesalahan.Untuk detail selengkapnya, lihat Pemverifikasi Aplikasi- Pengujian dalam Pemverifikasi Aplikasi
LuaPriv - Uji Prediktor Hak Istimewa Akun Pengguna Terbatas (LuaPriv) adalah prediktif dan diagnostik dan bekerja untuk memunculkan masalah yang terkait dengan menjalankan aplikasi dengan hak istimewa admin, dan apakah aplikasi tersebut juga akan berfungsi jika dijalankan dengan lebih sedikit hak istimewa (umumnya, sebagai pengguna normal). Untuk detail selengkapnya, lihat Pemverifikasi Aplikasi- Pengujian dalam Pemverifikasi Aplikasi
Lain-lain - Lain-lain terdiri dari pengujian untuk berbagai pengujian seperti untuk API berbahaya yang mengambil tindakan yang tidak aman. Untuk detail selengkapnya, lihat Pemverifikasi Aplikasi- Pengujian dalam Pemverifikasi Aplikasi
Jaringan - Pengujian jaringan mencari penggunaan API WinSock yang tidak tepat. Misalnya, jika API Jaringan dipanggil sebelum WSAStartup() yang berhasil atau setelah panggilan WSACleanup() yang berhasil diseimbangkan dilakukan. Untuk detail selengkapnya, lihat Pemverifikasi Aplikasi- Pengujian dalam Pemverifikasi Aplikasi
NTLM - Memantau penggunaan API autentikasi AcquireCredentialsHandle dan InitializeSecurityContext untuk mendeteksi penggunaan protokol NTLM. NTLM adalah protokol autentikasi yang kedaluarsa dengan kelemahan yang berpotensi membahayakan keamanan aplikasi dan sistem operasi. Untuk detail selengkapnya, lihat Pemverifikasi Aplikasi- Pengujian dalam Pemverifikasi Aplikasi
Pencetakan - Pemverifikasi Cetak membantu menemukan dan memecahkan masalah yang dapat mengakibatkan aplikasi memanggil subsistem cetak. Print Verifier menargetkan dua lapisan subsistem cetak, lapisan PrintAPI dan lapisan PrintDriver. Untuk detail selengkapnya, lihat Pemverifikasi Aplikasi- Pengujian dalam Pemverifikasi Aplikasi
Webservices - Lapisan Verifikasi Windows Webservices API (WWSAPI) berfungsi untuk memeriksa penggunaan WWSAPI yang tepat, seperti WWSAPI yang dipanggil yang mereferensikan objek WWSAPI intrinsik yang tidak valid atau WWSAPI yang dipanggil dengan referensi ke objek utas tunggal yang sudah digunakan. Untuk detail selengkapnya, lihat Pemverifikasi Aplikasi- Pengujian dalam Pemverifikasi Aplikasi
Layanan - Layanan menguji, memeriksa penggunaan Layanan Windows yang tepat. Misalnya, layanan sedang dimulai dan dihentikan dengan benar. Untuk informasi tentang pengecualian kode berhenti yang dihasilkan oleh pengujian ini, lihat Pemverifikasi Aplikasi - Hentikan Kode dan Definisi.
Perf - Uji Perf memeriksa penggunaan API yang efisien yang memengaruhi performa sistem dan konsumsi energi, seperti memanggil fungsi Windows yang menggunakan periode tunggu yang salah. Untuk informasi tentang pengecualian kode berhenti yang dihasilkan oleh pengujian ini, lihat Pemverifikasi Aplikasi - Hentikan Kode dan Definisi.
Hangs - Tes Hang untuk penggunaan API yang menyebabkan sistem menjadi tidak responsif, misalnya ketika utas DllMain menunggu utas lain yang diblokir. Untuk informasi tentang pengecualian kode berhenti yang dihasilkan oleh pengujian ini, lihat Pemverifikasi Aplikasi - Hentikan Kode dan Definisi.
Bagaimana Cara Kerja AppVerifier?
AppVerifier bekerja dengan memodifikasi Tabel Metode DLL yang tidak dikelola sehingga pemeriksaan yang diperlukan dilakukan sebelum fungsi nyata dijalankan (ini juga disebut "Function Hooking"). Misalnya, alamat metode CreateFileA API Win32 diganti dengan metode AppVerifier internal yang akan memicu serangkaian pengujian yang, ketika positif, akan dicatat.
Ketika proses baru dimulai, penggunaan teknik Method Table Hooking AppVerifier dikendalikan oleh entri yang dibuat dalam kunci registri tertentu. Jika entri registri ada, maka DLL AppVerifier akan dimuat dalam proses yang baru dibuat yang akan menangani penggantian Tabel Metode di DLL yang ada dan kemudian dimuat. Karena kait ini dibuat ketika DLL dimuat, Tidak mungkin untuk menggunakan AppVerifier pada proses yang sudah berjalan.
Antarmuka pengguna (UI) AppVerifier digunakan untuk mengontrol pengaturan Kunci Registri dan untuk memberikan informasi tentang log yang ada. Setelah aplikasi dan pengujian diatur dalam UI dan tombol "Simpan" diklik, pengaturan Registri dibuat. Aplikasi kemudian perlu dimulai ulang, yang akan memulai pemantauan. Penting untuk dicatat bahwa pengaturan akan bertahan sampai aplikasi dihapus dari AppVerifier.
Ketika masalah diidentifikasi, penghentian pemverifikasi akan terjadi. Jumlah yang disediakan digunakan untuk mengidentifikasi sifat dan alasan yang tepat untuk kemunculannya.
Penggunaan Pemverifikasi Aplikasi dalam Siklus Hidup Pengembangan Perangkat Lunak
Anda harus menggunakan Pemverifikasi Aplikasi di seluruh siklus hidup pengembangan perangkat lunak Anda.
Fase Persyaratan - AppVerifier harus direncanakan dan waktu dialokasikan untuk eksekusi dan tindak lanjutnya.
Fase Desain - Rencanakan penggunaan Pemverifikasi Aplikasi dan tentukan komponen mana (modul, DLL, atau EXEs) yang akan diuji.
Fase Implementasi - Jalankan Pemverifikasi Aplikasi pada build yang stabil (dari Alpha ke RTM) dari berbagai komponen yang sedang dikembangkan (penting untuk menguji komponen secara individual dan kolektif).
Fase Verifikasi - Penguji harus menjalankan semua pengujian mereka (manual dan otomatis) dengan Pemverifikasi Aplikasi karena ini akan menjadi pertama kalinya aplikasi akan didorong ke batas dan perilaku dan data yang tidak terduga akan dikirimkan. AppVerifier juga merupakan alat yang ampuh untuk konsultan keamanan yang melakukan audit (kotak hitam dan kotak putih) karena akan memungkinkan enumerasi cepat serangan/eksploitasi vektor nyata (atau potensial).
Fase Rilis - Klien dan konsultan keamanan dapat menggunakan AppVerifier pada biner yang dirilis untuk mengidentifikasi potensi kerentanan keamanan.
Fase Dukungan dan Layanan - Gunakan Pemverifikasi Aplikasi untuk memastikan bahwa perubahan kode (misalnya pembaruan, paket layanan) tidak memperkenalkan regresi.
Topik bagian
Bagian ini berisi topik berikut.
Pemverifikasi Aplikasi - Fitur
Pemverifikasi Aplikasi - Aplikasi Pengujian
Pemverifikasi Aplikasi - Pengujian dalam Pemverifikasi Aplikasi
Pemverifikasi Aplikasi - Hentikan Kode dan Definisi
Pemverifikasi Aplikasi - Debugging Pemverifikasi Aplikasi Berhenti