gpt4 book ai didi

concurrency - Rust 中的进程隔离

转载 作者:行者123 更新时间:2023-11-29 08:00:32 26 4
gpt4 key购买 nike

我想为一个协议(protocol)实现一个服务器。出于安全原因,解析器应在其自己的线程中与程序的其余部分隔离,并且应仅打开双向 channel 以进行通信。

解析器线程应该失去修改其他线程内存的任何可能性,并失去执行系统调用(使用 seccomp)的能力。

有没有一种简单的方法可以在 Rust 中为解析器线程实现这种行为?

最佳答案

如果您担心的问题超出了 Rust 强大的安全性和类型系统可以防止的范围(例如,这些问题或第三方库中的错误等),那么您真的需要单独的进程而不仅仅是线程;即使您在不受信任的线程上使用 seccomp,在 OS/CPU 级别它仍然具有对同一进程中其他线程内存的完全写入访问权限。

无论哪种方式,您都需要仔细编写旨在在 seccomp 中运行的代码(例如,分配额外的堆内存可能行不通)——但好消息是 Rust 是一种拥有这种控制权的好语言!

有一个相当有用的 discussion on seccomp in Rust其中有一些建议。

最好的选择看起来像 gaol来自 Servo 项目,这是一个更通用的进程沙箱(包括 seccomp)。还有一些其他较低级别的 seccomp 包装器,如 this one .

我还没有尝试过这些,所以我很想听听任何其他观点/经验。

关于concurrency - Rust 中的进程隔离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39319835/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com