< 返回版块

Mike Tang 发表于 2026-10-23 09:07

Wasmtime 修复 CVSS 9.3 沙箱逃逸

Wasmtime 是 Bytecode Alliance 的 WebAssembly 运行时,用 Rust 编写,用来在浏览器外运行 Wasm 模块和组件,也常被当作不受信任代码的沙箱。作者 Western-Obligation47 2026 年 10 月 22 日把安全公告转到 r/rust,采集时 120 分、8 条评论。公告页面日期对应 2026 年 10 月 2 日发布的 GHSA-32h6-97mm-8q3c,严重级别 Critical,CVSS 9.3。

公告写,component-model-async 回调函数的返回类型没有被正确校验。访客因此可以向宿主进程的原生栈写入最多约 16KB 自选数据,覆盖返回地址,把控制流转到任意宿主代码,或让进程崩溃。公告写,ASLR 和不可执行栈可以挡住简单的任意代码执行尝试,嵌入方仍应按沙箱逃逸处理。

校验错误出在 wasmparser 0.259.0 及更早版本。async-lifted 导出的回调本应接收 3 个 i32 参数并返回 1 个 i32。由于笔误,校验只要求参数是 3 个 i32 或 1 个 i32,没有检查返回类型。Wasmtime 把回调索引记进内部表示时,也没有再断言返回类型和元数。之后生成宿主到访客的 trampoline 时,参数和结果缓冲区没有运行时边界检查。调用回调时,栈上的返回区按预期元数分配,没有按实际签名分配。

受影响版本是 Wasmtime >= 39.0.0 且 < 48.0.4,以及 >= 49.0.0 且 < 49.0.2。修复版本是 48.0.4 和 49.0.2。变通办法是关闭 component-model-async,这时使用 async 特性的组件会被拒绝。也可以先用 wasmparser 1.260.0 或更高版本校验组件,再交给 Wasmtime。

评论里 Feeling_Simple_9371(55 分)提到条件里的 && 和 ||。作者回复,现有 SAST 和 semgrep 这类语义规则也没有抓住这个错误。

原文链接:https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-32h6-97mm-8q3c

Tov 称比 Rust 快,三项基准被复测

https://blog.fyralabs.com/debunking-faster-than-rust-malicious-benchmarks-in-tov/ 是一篇复测 Tov 基准的文章。Tov 是面向 coding agent 的语言,读起来接近 TypeScript,编译时把代码写成 C 再交给 clang,产物是单个原生二进制。官网写这些二进制比 Rust 快。作者 madonuko 2026 年 10 月 22 日把文章发到 r/programming,并被转到 r/rust,采集时 88 分、56 条评论。

Tov 仓库里的基准写,部分项目比 Rust 快 10 倍以上。文章检查了 bigint_fib、dispatch、map_insert。Rust 用 cargo build --release,Tov 用默认 -O3 的 tov build。

bigint_fib 用重复加法计算第 30 万个斐波那契数,Rust 侧使用 num-bigint。Tov 仓库列出的结果是 Rust 501 ms、4.5 MB,Tov 168 ms、3.1 MB。文章在三台机器上用 hyperfine 重跑,没有复现这个差距。PowerEdge R640 容器上,Rust 平均 336.6 ms,Tov 平均 451.3 ms,Rust 快 1.34 倍。Fedora 云主机上,Rust 平均 460.3 ms,Tov 平均 621.5 ms,Rust 快 1.35 倍。笔记本上 Tov 平均 260.5 ms,Rust 平均 285.2 ms,Tov 快 1.09 倍。

dispatch 对 1000 个形状调用 area(),外层循环 5 万次。原 Rust 基准使用 Vec<Box<dyn Shape>>。文章另写了一版 enum,并加上 #[inline(always)]。R640 上这版平均 48.8 ms,比 Tov 快 1.07 倍,比原 Rust 快 6.12 倍。笔记本上 Tov 平均 37.2 ms,改写版平均 38.2 ms,Tov 快 1.03 倍。Fedora 云主机上改写版平均 67.7 ms,Tov 平均 70.8 ms,原 Rust 平均 406.7 ms。文章写,原 Rust 版本和 Tov 版本并不等价。

map_insert 插入 200 万个字符串键。原 Rust 使用 std::collections::HashMap,循环里用 format! 造键。文章改用 ahash 的 AHashMap,并预先生成键。R640 上 AHashMap 版本平均 482.5 ms,Tov 平均 600.9 ms,原 HashMap 平均 1.705 s。AHashMap 比 Tov 快 1.25 倍,比原 HashMap 快 3.53 倍。笔记本上 AHashMap 平均 210.2 ms,比 Tov 的 411.1 ms 快 1.96 倍。Fedora 云主机上 AHashMap 平均 767.8 ms,比 Tov 的 918.3 ms 快 1.20 倍。

原文链接:https://blog.fyralabs.com/debunking-faster-than-rust-malicious-benchmarks-in-tov/

Gitoxide 对象库快了约 1.33 倍

Gitoxide 是用 Rust 实现的 Git。维护者 Sebastian Thiel(ByronBates)2026 年 10 月 22 日发布了 10 月进展,采集时 32 分、1 条评论。讨论标题写对象数据库快 30%。

本月的加速来自 Sam Reis 的纯 Rust 解压库 Sirocco。它针对非流式解压优化,这是解 pack 条目时的常见路径。只扫描 DEFLATE 流的结束位置、不保留输出时更快。ein t hours -p 测得的提交遍历速度从 18.7 万次/秒升到 25.9 万次/秒,约 1.33 倍。pack 索引大约快 1.27 倍。读取对象的操作,包括 diff 和 merge,也会跟着变快。启用方式是给 gix 依赖加上 zlib-sirocco feature。作者在评论里写,对象数据库大约快 30%,M4 上约 26 万 commits/s。

同一篇还写了接口进展。gix::Repository 现在可以创建和删除 linked worktree。创建沿用克隆时的多线程检出,并带上新的 sparse index 支持。删除使用多线程文件发现和删除,这套能力已经在 dua-cli 里用过。锁定和解锁也已实现。稳定 gix API 的前置改动在 PR 3061,尚未合入。做法是把长期不稳定的 plumbing 类型放到 unstable feature 后面,核心操作可以先稳定。tix 开始用 Kitten 协议在终端画真实线条和像素图,并支持鼠标高亮 lane。Git3 计划使用 reftable,帖子写目标时间是 3 月。Tyler Smith 和 Christoph Rüßler 继续改 diff,帖子写合并结果会更接近 Git,不必要的冲突更少。Cargo 里的 gix 依赖正在更新。GitButler 计划用 gitoxide 里定制的 reset 驱动检出,帖子写这对 Cargo 也同样适用,并提到约 7 倍的检出加速。

原文链接:https://github.com/GitoxideLabs/gitoxide/discussions/3084

Freya 重写同一计算器

Freya 是 Rust 的 retained-mode GUI 框架。作者 avinthakur080 2026 年 10 月 22 日发帖,比较同一款图形计算器在 egui 和 Freya 里的实现,采集时 63 分、25 条评论。

作者先用 egui 写,依赖是 eframe 和 peg。帖子写,immediate mode 下组件常常不知道后续兄弟节点或父子节点的布局需求。需要弹性增长的控件要么最后创建,要么手工计算尺寸。状态可以放在组件结构体的可变字段里,也可以用 get_temp、get_persisted 交给 egui。作者最后用了结构体字段。输入框上的 Enter 检测写成 input_resp.lost_focus() && ui.input(|s| s.key_pressed(Key::Enter))。嵌套很深的键盘按钮要把计算送到另一个线程,再由别的组件渲染时,需要把 channel 传到组件深处。学习材料里还有人在用已经移除的 App::update,当前接口是 App::logic 和 App::ui。

同一应用随后用 Freya 重写。作者写,文档除了模块说明,还写了状态管理的常见模式,函数文档带用法示例。retained mode 下布局更直接。增长控件要求父级也写成 .content(Flex)。use_state 和 use_memo 去掉了不少样板,状态默认是响应式的。作者写,到达和 egui 版相同进度大概少用了 80% 时间。release 模式下 egui 版占用 320 MB 以上,Freya 版低于 270 MB。

原文链接:https://www.reddit.com/r/rust/comments/1xcicvw/freya_is_more_impressive_than_i_thought/


From Rust中文社区 Mike

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页