< 返回版块

Mike Tang 发表于 2026-09-22 09:07

Miri 缓存 target 时可能经 GitHub Actions 泄露密钥

Rust 安全响应团队发布公告:Miri 会把全部环境变量写入 target/,以便 cargo miri 多次调用之间保留与构建相关的环境。若 CI 缓存了 target/,且 PR 可读该缓存,密钥就可能被 PR 工作流读出。

典型场景是:main 等分支可写缓存、PR 只读缓存;运行 cargo miri 的步骤能通过 step/env/前序步骤拿到密钥环境变量;再用 actions/cacheswatinem/rust-cache 缓存 target/。曾合并过代码的人可触发 PR CI,从缓存里提取信息,再推第二个 commit 覆盖痕迹。GitHub UI 有时会隐藏被覆盖的 commit,日志也会在数月后删除。

短期修复是让 Miri 只保留 CARGO_*(排除 CARGO_*_TOKEN)和 OUT_DIR。即将到来的 nightly(2026-09-22)Miri 将不再有此问题;该补丁可能尚未进入你当前的 nightly。生态扫描发现 1 个确有问题的仓库、7 个需谨慎的仓库,并已联系维护者。临时措施包括:对该 job 禁用缓存、把密钥限定到不调用 Miri 的 step、暂时关掉 Miri,然后清理缓存并考虑轮换可能泄露的密钥。即使不跑 Miri,也不应让能写公共缓存的 job 接触密钥。问题由 OpenAI 的 Predrag Gruevski 报告。

原文链接:https://blog.rust-lang.org/2026/09/21/github-actions-leaking-secrets-when-miri-output-is-cached/

Steve Klabnik:再谈命名参数与可选参数

Steve Klabnik 发文梳理 Rust 在参数/实参上的设计取舍。他从 Ruby on Rails 的 redirect_to 一类 API 谈起:灵活实参类型、options hash、默认值与类关键字语法合在一起很简洁,但调用方很难一眼看清函数到底接受什么,往往依赖文档质量。

文中区分命名参数、默认参数、可选位置参数、关键字参数等能力,并对照其他语言;也写到 Rust 目前常见的“选项 struct + Default”写法。设计难点包括:trait 方法实现里参数名是否必须与 trait 定义一致、按定义顺序从左到右求值与调用处任意顺序命名实参如何共存(data move 与 data.len() 的编译差异)、是否与 struct 字面量统一,以及参数改名带来的兼容性。作者表示仍不确定命名参数是否适合 Rust,但比过去十年更开放;文中提到当天另有一篇 Pre-RFC 讨论贴,本文是一般性思考而非背书。

原文链接:https://steveklabnik.com/writing/arguing-about-arguments/

Rust 枚举对编译器实现很合适

作者 zk4x 在编写 Rust 机器学习库的过程中,把 enum 列为用得最多的语言特性,并归纳几点:enum 可携带数据(相对 C++/Python 里 tag + 无类型列表更直接),可嵌套(如 Binary { x, y, bop: BOp }),在对齐条件下可把嵌套 tag 压进更小布局(文中示例约 12 字节),以及 match/守卫/match 元组组合便于写编译器 pass。作者称因此能在每核每秒搜索并评估数千种 kernel 变体。相关仓库:https://github.com/zk4x/zyx 。

原文链接:https://www.reddit.com/r/rust/comments/1wm3z5w/rust_enums_are_gold_for_compilers/

用 Loom 尝试抓住无锁 Rust 中的 ABA 问题

作者 Sofia 在上一篇用手动 sleep 调度复现无锁栈 ABA 问题之后,改用 Loom 按 C11 内存模型枚举合法并发交错。做法是通过 RUSTFLAGS="--cfg loom" 与 shim,把 std::sync::atomicthreadArcUnsafeCell 等换成 Loom 对应实现;Cargo.toml 里把 loom 放在 cfg(loom) 目标依赖下,并为 unexpected_cfgs 登记自定义 cfg。文中还说明需用 Loom 的 UnsafeCell 包装裸指针访问,再对有缺陷的无锁栈跑测试,观察 Loom 能否检出 ABA。完整代码见作者 GitHub。

原文链接:https://sofiabelen.github.io/projects/using-loom-to-catch-an-aba-bug/


From Rust中文社区 Mike

社区学习交流平台订阅:

评论区

写评论

还没有评论

1 共 0 条评论, 1 页