2015-10-25 53 views
3

用這種方式來入侵Linux:1. malloc一個空間。 2.將二進制代碼寫入該區域。 3.跳轉到此代碼。在Linux中如何禁止代碼在堆中執行

我想禁止這種方式來運行代碼。只能在.text部分運行代碼。我應該怎樣做Linux內核?謝謝!

+2

我相信,malloc(大多數情況下)應該返回內存區域沒有exec權限。你檢查過了嗎? –

回答

0

Linux的PaX安全補丁通過確保RAM中沒有內存既可寫又可執行來解決這個問題。這確保了不能將內存分配到RAM中,編寫代碼,然後執行它(這看起來正是你想要阻止的)。

https://en.wikipedia.org/wiki/PaX#Executable_space_protections

請注意,您可能需要編譯定製的內核安裝此補丁。或者,嘗試查看您的發行版是否提供了安裝了該修補程序的Linux內核。 (搜索linux-grsec或linux-pax)。