驗證驅動的呼叫者
有很多驅動程式載入後,會在驅動程式入口函式driverentry中建立驅動裝置,並建立符號鏈結,同時還會指定派遣例程。這樣一來,所有使用者態程式都可以通過deviceiocontrol函式,呼叫該驅動的派遣例程。即存在ring3惡意呼叫ring0驅動派遣例程的問題,對於這種呼叫ring0程式應進行驗證和過濾。
作為不夠健壯的第三方驅動程式,更容易因為這種惡意呼叫被干擾,發生邏輯錯誤,甚至觸發可能存在的核心漏洞。因此需要考慮驅動程式的通訊物件和呼叫**,在派遣例程中對此進行必要的安全驗證和過濾。
驗證和過濾的方法有很多,例如檢查呼叫者程序的peprocess,程序檔案的md5,等等。除此之外,還可以考慮使用者態程式和驅動程式的通訊加密,對於解密失敗或非法通訊資料的情況可以不予處理。
本文節選自《0day安全:軟體漏洞分析技術(第2版)》一書。
圖書詳細資訊:
驗證驅動的呼叫者
驗證驅動的呼叫者 有很多驅動程式載入後,會在驅動程式入口函式driverentry中建立驅動裝置,並建立符號鏈結,同時還會指定派遣例程。這樣一來,所有使用者態程式都可以通過deviceiocontrol函式,呼叫該驅動的派遣例程。即存在ring3惡意呼叫ring0驅動派遣例程的問題,對於這種呼叫ri...
編寫安全的驅動程式之驗證驅動的呼叫者
有很多驅動程式載入後,會在驅動程式入口函式driverentry中建立驅動裝置,並建立符號鏈結,同時還會指定派遣例程。這樣一來,所有使用者態程式都可以通過deviceiocontrol函式,呼叫該驅動的派遣例程。即存在ring3惡意呼叫ring0驅動派遣例程的問題,對於這種呼叫ring0程式應進行驗...
編寫安全的驅動程式之驗證驅動的呼叫者
有很多驅動程式載入後,會在驅動程式入口函式driverentry中建立驅動裝置,並建立符號鏈結,同時還會指定派遣例程。這樣一來,所有使用者態程式都可以通過deviceiocontrol函式,呼叫該驅動的派遣例程。即存在ring3惡意呼叫ring0驅動派遣例程的問題,對於這種呼叫ring0程式應進行驗...