宣布活泼的橡木——活泼研究所

这是 Daphne Preston-Kendal 关于为 Spritely 工作的内容分享,主要介绍了开发新的安全 Scheme 子语言用于安全运行不可信代码的相关工作:

  • 背景与问题:通常加载第三方代码存在安全风险,如游戏等应用程序可通过添加代码进行修改,但常出现安全灾难,如分享 Minecraft 模组窃取信息等。这引发对可部署在重要服务器系统上的可修改应用程序的安全性担忧。
  • 可信任代码的判断:简单的 Scheme 代码如(lambda (x) (+ x 1))无安全问题,因其为纯函数,不访问系统资源。但复杂代码难以人工仔细审查是否恶意。若能自动审核代码确保不做坏事,可避免人为错误。
  • 以 Christine 的平方根程序为例:原本的平方根程序(library (dustyweb square-root) (export square-root) (import (rnrs base (6)) (rnrs io ports (6)))...存在问题,它通过(rnrs io ports (6))获得了对文件系统的完全访问权限,可能导致数据泄露等问题。改进后的版本(library (dustyweb square-root) (export square-root) (import (rnrs base (6)))...通过make-debug-log-procedure来控制 I/O,只在有限方式下访问资源,从而可信任。
  • 驯服库以防止资源滥用:利用语言特性将不安全库转化为更安全的库称为“驯服”,如人类驯服狼为狗。在编程安全研究中,可通过关闭库以限制对资源的访问来防止安全问题,如限制文件系统访问为单个目录等,但完全驯服文件系统访问较难。对于网络访问,需思考更好的机制。还需防止定时攻击和耗尽攻击,前者需确保库仅在明确授权时访问系统时钟,后者需限制未信任程序的计算量,Guile 的(ice-9 sandbox)存在限制。
  • 能力衰减:目前设计的库系统在支持多层次委托信任方面仍处于早期阶段,如一个程序给予库一定数据存储权限,库再将其细分给其他库,这一过程较难设计。
  • 展望与后续工作:期待在接下来几个月继续开发 Oaken,它将与 Spritely 的其他项目一起实现诸如安全的电子表格宏、安全的游戏模组、在聊天程序中发送新的多人游戏等功能,还介绍了相关的参考资料,如 Jonathan Rees 的博士论文及其他相关语言的理念。
阅读 27
0 条评论