Rust学术动态 :
来自于 MIT-PDOS 的研究型项目: terra
一个用 Rust 编写的大型地形渲染库,基于 wgpu。
清华大学: 2022 全国大学生操作系统比赛
论文 | 删除(Yanked) Rust crate 注册仓库中已发布包的实证研究
Rust 的软件包管理器 Cargo 提供了一个 yank 机制来支持发布级别的弃用,这可以防止包依赖于 yanked 的版本。大多数先前的研究都集中在代码级(即弃用的 API)和包级弃用(即弃用的包)上。然而,很少有研究关注发布级别的弃用。在这项研究中,调查了 yank 机制的使用频率和方式、其使用背后的基本原理以及在 Cargo 生态系统中采用 yank 发布。我们的研究表明,Cargo 中 9.6% 的包裹至少有一个 yanked release,并且 yanked release 的比例从 2014 年到 2020 年不断增加。包所有者出于其他原因而不是撤回有缺陷的 release,例如修复不遵循语义版本控制的版本或指示已删除或替换包的版本。此外,我们发现 46% 的包直接采用了至少一个 yanked 版本,并且 yanked 版本通过依赖网络传播,这导致生态系统中 1.4% 的版本具有未解决的依赖关系。
论文 | DuVisor:通过委托虚拟化的用户级管理程序
当今的主流虚拟化系统由两个协作组件组成:访问虚拟化硬件的内核驻留驱动程序和提供 VM 管理和 I/O 虚拟化的用户级帮助进程。然而,这种虚拟化架构在安全性(大的攻击面)和性能方面都存在内在问题。虽然通过将函数卸载到用户模式来尝试最小化内核驻留驱动程序的工作很长,但他们面临着安全性和性能之间的基本权衡:更多的卸载可能会减少内核攻击面,但会增加运行时环之间的交叉辅助进程和驱动程序,因此性能成本更高。
本文探索了一种称为委托虚拟化的新设计,它将控制平面(内核驱动程序)与数据平面(辅助进程)完全分离,从而消除了内核驱动程序的运行时干预。一旦内核驱动程序完成初始化,由此产生的用户级管理程序,称为 DuVisor,可以处理所有 VM 操作,而不会陷入内核。DuVisor 使用新的委托虚拟化扩展来改进现有的硬件虚拟化支持,以直接处理 VM 退出、配置虚拟化寄存器、管理第 2 阶段页表和用户模式下的虚拟设备。目前已经在开源 RISC-V CPU 上实现了硬件扩展,并在硬件之上构建了一个基于 Rust 的管理程序。对 FireSim 的评估表明,DuVisor 的性能比 KVM 高 47 倍。
论文 | Minotaur:多资源区块链共识
基于资源的共识是无需许可的分布式账本系统的支柱。此类协议的安全性从根本上依赖于系统中积极参与的资源水平。各种不同的资源(以及相关的证明协议,在文献中有时称为 PoX)提出了一个基本问题,即是否可以串联利用其中的许多资源并构建多资源共识协议。组合不同资源的挑战在于实现它们之间的可替代性,从某种意义上说,只要所有资源的累积对抗性力量有限,安全性就会保持不变。
在这项工作中,论文提出了Minotaur,这是一种多资源区块链共识协议,它结合了工作量证明 (PoW) 和权益证明 (PoS),并证明了它的最佳可替代性。他们用 Rust 实现了客户端。
论文 | 使用多方会话类型(Multiparty Session Types)的 Rust 中的无死锁异步消息重新排序
Rumpsteak 是一个 Rust 框架,用于安全有效地实现 消息传递 异步程序。它使用多方会话类型来静态保证不存在通信错误,例如死锁和异步子类型化,以优化通信。
论文 | Zef:低延迟、可扩展、私人支付
这是第一个支持任意规模匿名数字硬币支付的拜占庭容错 (BFT) 协议。Zef 遵循 FastPay 的通信和安全模型。
WebAssembly学术动态:
卡内基梅隆大学论文:使用 WebAssembly 的可证明安全的多语言沙箱
该论文探索了两种生成可证明wasm代码的方法:
- 传统形式化方法生成数学的、经过机器检查的安全性证明。对应实现为 vWasm 编译器。
- 将 wasm 语义小心地嵌入到安全的 Rust 代码中,以便 Rust 编译器能够以良好的性能emit安全的可执行代码。对应实现为 rWasm 编译器。
本文贡献:
- vWasm 是第一个经过验证的沙盒编译器,通过传统的机器检查证明实现。
- rWasm 是第一个可证明安全的沙箱编译器,具有极具竞争力的运行时性能。通过利用 Rust 的安全保证,rWasm 实现了第一个多语言多平台的沙箱编译器。它是提供了可证明的保证,而无需编写正式的证明。
rWasm 机制:
- 编译策略:
- 通过一个编译前端将wasm编译为 IR
- 包括一个栈和死代码分析器
- 通过一个后端将 IR 打印为 Rust 代码
- 通过 rustc 编译器生成机器代码
- rWasm是通过 Safe Rust 实现的
- rWasm的关键是: 通过将低级代码(Wasm)提升为高级代码(Rust)来完成对低级代码的仿真,从而得到高级语言的保证。因为想要证明的安全沙盒的高级属性本质就是内存安全。
www.jaybosamiya.com/publication…
论文 | 将 C 程序移植到 WebAssembly 的安全风险
WebAssembly 是越来越多地使用的跨平台应用程序的编译目标。在本文中,我们调查是否可以透明地将 C 程序交叉编译到 WebAssembly,如果不能,移植会对它们的安全性产生什么影响。我们编译了 17,802 个程序,这些程序对 64 位 x86 和 WebAssembly 二进制文件存在常见漏洞,我们观察到执行 4,911 个二进制文件会在这些平台上产生不同的结果。通过人工检查,我们确定了造成这种差异的三类根本原因:使用不同的标准库实现、WebAssembly 中缺乏安全措施以及执行环境的不同语义。我们描述了我们的观察结果,并讨论了从安全角度来看至关重要且最需要开发人员关注的观察结果。我们得出结论,将现有的 C 程序编译为 WebAssembly 以进行跨平台分发可能需要修改源代码;否则,WebAssembly 应用程序的安全性可能会受到威胁。