Hasty Briefsbeta

双语

Software Sandboxing: The Basics

3 hours ago
  • 沙盒被定义为可选择的权限降级:在没有管理权限的情况下通过编程方式限制权限。
  • 程序化权限降级需要操作系统特定的接口,如FreeBSD的Capsicum和Linux的Seccomp,因为传统的UNIX权限不足。
  • 避免依赖超级用户机制(如suid二进制文件)进行沙盒化;Linux命名空间引入安全风险,更适合容器化。
  • Actor模型(将进程作为角色)与基于能力的安全性(将文件描述符作为能力)相结合,为分隔的沙盒提供了健壮的框架。
  • Capsicum(FreeBSD)被强调为一种优越的沙盒机制,只需约100行代码即可集成,而其他系统则需要数千行。
  • UNIX上的非阻塞I/O带来挑战;需要小心处理文件描述符并使用前摄器或io_uring以避免DoS漏洞。
  • 现有代码可以通过libc拦截(例如LD_PRELOAD)使用Super Capsicumizer 9000或Emilua的libc_service模块进行沙盒化。
  • Seccomp(Linux)由于多架构问题和系统调用编号的复杂性而复杂且容易出错;Kafel帮助定义系统调用策略但存在局限性。
  • 与Emilua的实际示例展示了如何生成沙盒化的actor、限制文件访问以及通过动态策略强制执行处理遗留代码。
  • 必须批判性地评估威胁模型:沙盒并非总是必要的,但对于处理敏感数据的软件(如Telegram的tdlib)至关重要。