連結器與載入器與執行檔格式
藉由不讓記憶體分頁同時具備「可寫入」與「可執行」(W^X,寫入與執行分離),較容易防禦的攻擊為下列何者?
- A以暴力法逐一嘗試密碼的攻擊
- B傳送大量通訊使伺服器停擺的攻擊
- C將攻擊用的機器碼寫入堆疊等資料區域,並跳到那裡執行的攻擊
查看答案與解析
正確答案:C. 將攻擊用的機器碼寫入堆疊等資料區域,並跳到那裡執行的攻擊
以往的攻擊常利用緩衝區溢位將機器碼寫入堆疊,並讓返回位址指向那裡來執行。CPU的分頁表中有禁止執行的位元(NX位元等),只要作業系統將堆疊、堆積、.data設為禁止執行,並將.text設為禁止寫入,這種方法就行不通了。像JIT編譯器那樣在執行中產生程式碼的情況,則是切換寫入與執行的權限來使用。
- A. 密碼的暴力破解與記憶體權限無關。
- B. 通訊量造成的攻擊無法以記憶體權限來防禦。
- C. 正確。可寫入的地方就不能執行。