Bitcoin-Core
為什麼在比特幣核心中添加系統呼叫沙盒?
我不明白為什麼要合併這個拉取請求:
<https://github.com/bitcoin/bitcoin/pull/20487>
根據公關:
使用 seccomp-bpf 啟用系統呼叫過濾:僅允許呼叫顯式列入白名單(預期)的系統呼叫。
此 PR 中實現的系統呼叫沙盒是目前僅在 Linux x86-64 下可用的實驗性功能。
有人可以幫助我理解這對作為使用者的範例有什麼幫助嗎?
通常,為了讓執行緒與自身外部的任何資源(例如磁碟 I/O、其他程序、其他執行緒等)進行互動,它通過使用系統呼叫來實現。有很多系統呼叫,很多在正確的上下文中可能是危險的,還有很多是執行緒不會使用的。因此,系統呼叫沙盒限制了允許執行緒使用的系統呼叫。嘗試使用允許列表之外的任何系統呼叫將導致作業系統終止程序,而不是允許繼續執行。
對於比特幣核心,這在正常執行期間不會有太大作用。但是,它可以幫助減輕未知漏洞的影響。例如,假設存在允許攻擊者執行任意 shellcode 的緩衝區溢出漏洞。這樣的 shellcode 可能包含一個
execve
系統呼叫,它產生一個 ssh 守護程序,允許攻擊者遠端訪問機器。如果啟用了 seccomp-bpf,並且發生此攻擊的執行緒不允許execve
系統呼叫,則此類攻擊將失敗,因為一旦execve
嘗試該程序就會終止。這會使漏洞更難作為 RCE 被利用,並限制攻擊者可以做的事情。