記憶體測試程式如何在不造成安全漏洞的情況下運作?

記憶體測試程式如何在不造成安全漏洞的情況下運作?

我剛剛在我的筆記型電腦上運行內存測試(來自製造商,運行作為 Windows 10 專業版中的服務),我突然想到他們聲稱能夠實際測試系統中的所有記憶體(這需要讀取和寫入記憶體)。

然而,在現代系統中,應用程式永遠不會獲得“真實”內存,它們會獲得虛擬內存映像(它們本質上認為它們可以訪問整個系統,但實際上它是內存的虛擬圖片)。因此,一個應用程式不可能(除非出現錯誤)存取另一個應用程式使用的記憶體。

想必這些記憶體測試程式確實有效,並且沒有對我撒謊,所以假設它真的可以讀寫系統中的所有記憶體來進行測試,這怎麼不是一個安全問題呢?更不用說 Windows 應用程式測試本身用於運行的記憶體的問題了。

我在這裡缺少什麼?

謝謝!

答案1

[...]一個應用程式不可能(除非有錯誤)存取另一個應用程式使用的記憶體。

真的,除非應用程式具有所需的特權/權限。在大多數系統上,可以使用特殊權限來規避記憶體存取限制,因為存取受限記憶體有一些合法用途,例如偵錯。特別是在 MS Windows 上,例如,有以下功能ReadProcessMemory()WriteProcessMemory()函數可以執行此操作。然而,他們需要特殊的權限才能工作(參見例如如何在記憶體編輯器中提升存取記憶體的權限?了解詳情)。

因此,該服務可能以管理員或類似權限執行。

所以假設它真的可以讀寫系統中的所有記憶體來測試,這怎麼不是安全問題

如果服務具有讀取所有記憶體的適當權限,那麼從作業系統的角度來看,這不是安全問題 - 該服務在安裝時已被授權(由您或製造商)。如果服務存在安全漏洞(例如遠端程式碼執行漏洞),那麼在實踐中它仍然可能是一個安全問題,但這取決於服務(與以提升的權限運行的任何服務一樣)。

想必這些記憶測試程序確實有效並且沒有騙我,

這並不是理所當然的——軟體供應商有時確實會歪曲事實,就像其他人一樣。對我來說,服務應該能夠測試正在運行的系統上的內存,而不受任何權限問題的影響,這似乎是有問題的 - 該服務如何測試正在使用的內存,而不干擾其他軟體?也許他們確實做到了這一點,或者也許該服務只測試當前未使用的內存,或者只測試讀取......不分析就不可能知道。

正如評論中指出的,常見的內存測試程序,例如 BIOS 內存檢查或記憶體測試86,在啟動後立即運行,無需加載作業系統,這樣它們就可以完全且獨佔地存取記憶體和 CPU。

相關內容