Bitcoin-Core

為什麼在比特幣核心中添加系統呼叫沙盒?

  • January 2, 2022

我不明白為什麼要合併這個拉取請求:

<https://github.com/bitcoin/bitcoin/pull/20487>

根據公關:

使用 seccomp-bpf 啟用系統呼叫過濾:僅允許呼叫顯式列入白名單(預期)的系統呼叫。

此 PR 中實現的系統呼叫沙盒是目前僅在 Linux x86-64 下可用的實驗性功能。

有人可以幫助我理解這對作為使用者的範例有什麼幫助嗎?

通常,為了讓執行緒與自身外部的任何資源(例如磁碟 I/O、其他程序、其他執行緒等)進行互動,它通過使用系統呼叫來實現。有很多系統呼叫,很多在正確的上下文中可能是危險的,還有很多是執行緒不會使用的。因此,系統呼叫沙盒限制了允許執行緒使用的系統呼叫。嘗試使用允許列表之外的任何系統呼叫將導致作業系統終止程序,而不是允許繼續執行。

對於比特幣核心,這在正常執行期間不會有太大作用。但是,它可以幫助減輕未知漏洞的影響。例如,假設存在允許攻擊者執行任意 shellcode 的緩衝區溢出漏洞。這樣的 shellcode 可能包含一個execve系統呼叫,它產生一個 ssh 守護程序,允許攻擊者遠端訪問機器。如果啟用了 seccomp-bpf,並且發生此攻擊的執行緒不允許execve系統呼叫,則此類攻擊將失敗,因為一旦execve嘗試該程序就會終止。這會使漏洞更難作為 RCE 被利用,並限制攻擊者可以做的事情。

引用自:https://bitcoin.stackexchange.com/questions/111562