---
title: "【Rust日报】2026-10-23 Wasmtime 修复 CVSS 9.3 沙箱逃逸 - Angryecho"
description: "Wasmtime 修复 CVSS 9.3 沙箱逃逸 Wasmtime 是 Bytecode Alliance 的 WebAssembly 运行时，用 Rust 编写，用来在浏览器外运行 Wasm 模块和组件，也常被当作不受信任代码的沙箱。"
canonical_url: "https://www.angryecho.com/c/rustcc/p/P2TBBgwg6b4g2yeiMhfeH"
meta:
  "og:description": "Wasmtime 修复 CVSS 9.3 沙箱逃逸 Wasmtime 是 Bytecode Alliance 的 WebAssembly 运行时，用 Rust 编写，用来在浏览器外运行 Wasm 模块和组件，也常被当作不受信任代码的沙箱。"
  "og:image": "https://www.angryecho.com/_og/d/c_Post%2Ctitle_~5ZCQ5qe9572R%2Cdescription_~5ZCQ5qe95LiA5LiL77yM5bCx5LiK5ZCQ5qe9572R44CC%2CpostId_P2TBBgwg6b4g2yeiMhfeH%2Crevision_~MjAyNi0xMC0yNVQwMjo1Nzo1MC4xODM3Nzla%2Cp_Ii9jL3J1c3RjYy9wL1AyVEJCZ3dnNmI0ZzJ5ZWlNaGZlSCI%2Cs_t7_uBue3dC0S6hyl.png"
  "og:image:height": "630"
  "og:image:type": image/png
  "og:image:width": "1200"
  "og:title": "【Rust日报】2026-10-23 Wasmtime 修复 CVSS 9.3 沙箱逃逸"
---

> Index of every page on this site: [llms.txt](https://www.angryecho.com/llms.txt)

# **【Rust日报】2026-10-23 Wasmtime 修复 CVSS 9.3 沙箱逃逸**

## 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/](<https://www.reddit.com/r/rust/comments/1xcicvw/freya\\_is\\_more\\_impressive\\_than\\_i\\_thought/>)

---

From Rust中文社区 Mike

社区学习交流平台订阅：

- [Rustcc论坛: 支持rss](https://rustcc.cn/)
- [微信公众号：Rust语言中文社区](https://rustcc.cn/article?id=ed7c9379-d681-47cb-9532-0db97d883f62)

排序方式 :

### **成为第一条评论！**

Nobody's responded to this post yet. Add your thoughts and get the conversation going.

```json
{"@context":"https://schema.org","@graph":[{"@id":"https://www.angryecho.com/c/rustcc/p/P2TBBgwg6b4g2yeiMhfeH#post","@type":"DiscussionForumPosting","commentCount":0,"dateModified":"2026-10-25T02:57:50.183Z","datePublished":"2026-10-23T01:07:00.000Z","description":"Wasmtime 修复 CVSS 9.3 沙箱逃逸 Wasmtime 是 Bytecode Alliance 的 WebAssembly 运行时，用 Rust 编写，用来在浏览器外运行 Wasm 模块和组件，也常被当作不受信任代码的沙箱。","headline":"【Rust日报】2026-10-23 Wasmtime 修复 CVSS 9.3 沙箱逃逸","isPartOf":"https://www.angryecho.com/c/rustcc","mainEntityOfPage":"https://www.angryecho.com/c/rustcc/p/P2TBBgwg6b4g2yeiMhfeH","text":"Wasmtime 修复 CVSS 9.3 沙箱逃逸\n\nWasmtime 是 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。\n\n公告写，component-model-async 回调函数的返回类型没有被正确校验。访客因此可以向宿主进程的原生栈写入最多约 16KB 自选数据，覆盖返回地址，把控制流转到任意宿主代码，或让进程崩溃。公告写，ASLR 和不可执行栈可以挡住简单的任意代码执行尝试，嵌入方仍应按沙箱逃逸处理。\n\n校验错误出在 wasmparser 0.259.0 及更早版本。async-lifted 导出的回调本应接收 3 个 i32 参数并返回 1 个 i32。由于笔误，校验只要求参数是 3 个 i32 或 1 个 i32，没有检查返回类型。Wasmtime 把回调索引记进内部表示时，也没有再断言返回类型和元数。之后生成宿主到访客的 trampoline 时，参数和结果缓冲区没有运行时边界检查。调用回调时，栈上的返回区按预期元数分配，没有按实际签名分配。\n\n受影响版本是 Wasmtime >= 39.0.0 且 \u003C 48.0.4，以及 >= 49.0.0 且 \u003C 49.0.2。修复版本是 48.0.4 和 49.0.2。变通办法是关闭 component-model-async，这时使用 async 特性的组件会被拒绝。也可以先用 wasmparser 1.260.0 或更高版本校验组件，再交给 Wasmtime。\n\n评论里 Feeling_Simple_9371（55 分）提到条件里的 && 和 ||。作者回复，现有 SAST 和 semgrep 这类语义规则也没有抓住这个错误。\n\n原文链接：https://github.com/bytecodealliance/wasmtime/security/advisories/GHSA-32h6-97mm-8q3c\n\nTov 称比 Rust 快，三项基准被复测\n\nhttps://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 条评论。\n\nTov 仓库里的基准写，部分项目比 Rust 快 10 倍以上。文章检查了 bigint_fib、dispatch、map_insert。Rust 用 cargo build --release，Tov 用默认 -O3 的 tov build。\n\nbigint_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 倍。\n\ndispatch 对 1000 个形状调用 area()，外层循环 5 万次。原 Rust 基准使用 Vec\u003CBox\u003Cdyn 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 版本并不等价。\n\nmap_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 倍。\n\n原文链接：https://blog.fyralabs.com/debunking-faster-than-rust-malicious-benchmarks-in-tov/\n\nGitoxide 对象库快了约 1.33 倍\n\nGitoxide 是用 Rust 实现的 Git。维护者 Sebastian Thiel（ByronBates）2026 年 10 月 22 日发布了 10 月进展，采集时 32 分、1 条评论。讨论标题写对象数据库快 30%。\n\n本月的加速来自 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。\n\n同一篇还写了接口进展。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 倍的检出加速。\n\n原文链接：https://github.com/GitoxideLabs/gitoxide/discussions/3084\n\nFreya 重写同一计算器\n\nFreya 是 Rust 的 retained-mode GUI 框架。作者 avinthakur080 2026 年 10 月 22 日发帖，比较同一款图形计算器在 egui 和 Freya 里的实现，采集时 63 分、25 条评论。\n\n作者先用 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。\n\n同一应用随后用 Freya 重写。作者写，文档除了模块说明，还写了状态管理的常见模式，函数文档带用法示例。retained mode 下布局更直接。增长控件要求父级也写成 .content(Flex)。use_state 和 use_memo 去掉了不少样板，状态默认是响应式的。作者写，到达和 egui 版相同进度大概少用了 80% 时间。release 模式下 egui 版占用 320 MB 以上，Freya 版低于 270 MB。\n\n原文链接：https://www.reddit.com/r/rust/comments/1xcicvw/freya\\_is\\_more\\_impressive\\_than\\_i\\_thought/\n\n\n\nFrom Rust中文社区 Mike\n\n社区学习交流平台订阅：\n\n\n\n\n\nRustcc论坛: 支持rss\n\n\n\n微信公众号：Rust语言中文社区","url":"https://www.angryecho.com/c/rustcc/p/P2TBBgwg6b4g2yeiMhfeH","author":{"@type":"Person","name":"Mike Tang","url":"https://www.angryecho.com/u/R4C0f2182c9-dfd5-4d6"},"interactionStatistic":[{"@type":"InteractionCounter","interactionType":"https://schema.org/LikeAction","userInteractionCount":0},{"@type":"InteractionCounter","interactionType":"https://schema.org/DislikeAction","userInteractionCount":0},{"@type":"InteractionCounter","interactionType":"https://schema.org/ViewAction","userInteractionCount":0},{"@type":"InteractionCounter","interactionType":"https://schema.org/ShareAction","userInteractionCount":0}]}]}
```

## Sitemap

See the full [sitemap](https://www.angryecho.com/sitemap.md) for all pages.
