某軟件驅動任意地址寫任意數據漏洞

感覺現在這種漏洞比較突出。METHOD_NEITHER中的輸出buf爲什麼長度爲0的時候要開發者自己去檢查buf長度合不合理。

雖然沒去看windows源碼,但是,個人感覺一個正常的用戶有兩種情況:

1、buf長度爲0,對應的驅動例程確實也沒有輸出

2、buf長度不爲0,對應的驅動例程確實有輸出。

當一個惡意的ring 3程序,朝2發DeviceIoControl(。。。,OutputBuffer,OutputBufferLength = 0,。。。)的時候,

假設原來2中的代碼應該是:
*(ULONG*)(OutputBuffer) = 1;

IoStatus.information = 4;


IoCompleteRequest();

那麼上面的代碼中用戶自己沒有判斷此次的輸出buf長度,而系統也不檢測長度,系統認爲用戶自己會去判斷,所以,系統就直接寫了。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章