seccomp介紹

什麼是seccomp

seccomp(全稱securecomputing mode)是linuxkernel2.6.23版本開始所支持的一種安全機制。

Linux系統裏,大量的系統調用(systemcall)直接暴露給用戶態程序。但是,並不是所有的系統調用都被需要,而且不安全的代碼濫用系統調用會對系統造成安全威脅。通過seccomp,我們限制程序使用某些系統調用,這樣可以減少系統的暴露面,同時是程序進入一種“安全”的狀態。

詳細介紹可參考seccomp內核文檔


如何使用seccomp

seccomp可以通過系統調用ptrctl(2)或者通過系統調用seccomp(2)開啓,前提是內核配置中開啓了CONFIG_SECCOMPCONFIG_SECCOMP_FILTER

seccomp支持兩種模式:SECCOMP_MODE_STRICTSECCOMP_MODE_FILTER。在SECCOMP_MODE_STRICT模式下,進程不能使用read(2)write(2)_exit(2)sigreturn(2)以外的其他系統調用。在SECCOMP_MODE_FILTER模式下,可以利用BerkeleyPacket Filter配置哪些系統調用及它們的參數可以被進程使用。


如何查看是否使用了seccomp

通常有兩種方法:

  1. 利用prctl(2)PR_GET_SECCOMP的參數獲取當前進程的seccomp狀態。返回值0表示沒有使用seccomp;返回值2表示使用了seccomp並處於SECCOMP_MODE_FILTER模式;其他情況進程會被SIGKILL信號殺死。

  2. Linux3.8開始,可以利用/proc/[pid]/status中的Seccomp字段查看。如果沒有seccomp字段,說明內核不支持seccomp

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