天天看點

Windows可信任路徑代碼執行漏洞

烏雲裡有很多這樣的案例,當然在開發過程中也會存在這樣的問題

搜尋:可信任路徑漏洞

調用案例中的描述:

Microsoft Windows API使用CreateProcess()函數建立新的程序及其主線程。

CreateProcess()函數的格式如下:

BOOL CreateProcess(

LPCTSTR lpApplicationName,

LPTSTR lpCommandLine,

LPSECURITY_ATTRIBUTES lpProcessAttributes,

LPSECURITY_ATTRIBUTES lpThreadAttributes,

BOOL bInheritHandles,

DWORD dwCreationFlags,

LPVOID lpEnvironment,

LPCTSTR lpCurrentDirectory,

LPSTARTUPINFO lpStartupInfo,

LPPROCESS_INFORMATION lpProcessInformation

);

lpApplicationName變量包含有将要執行子產品的名稱,但可能是空值。在這種情況下,所執行的子產品名稱将會是lpCommandLine字元串中的第一個空白劃定符。

如果lpApplicationName中包含有空值,lpCommandLine變量中的完整子產品路徑包含有空白且沒有包含在引号中的話,就可能執行其他程式,如下所示:

CreateProcess(

NULL,

c:\program files\sub dir\program.exe,

...

在這種情況下,系統在解釋檔案路徑時會擴充字元串,直到遇到執行子產品。上面例子中的字元串可能被解釋為:

c:\program.exe files\sub dir\program name

c:\program files\sub.exe dir\program name

c:\program files\sub dir\program.exe

是以,如果c:\目錄中存在名為program.exe的檔案的話,就可能執行該檔案而不是預期的應用程式。

修複建議:

對傳入給CreateProcess函數的名稱和參數用雙引号””進行包含

官方參考資料:

https://msdn.microsoft.com/zh-cn/library/ms682425.aspx

【版權所有@Sevck 部落格位址http://www.cnblogs.com/sevck】 可以轉載,注明出處.

繼續閱讀