【2026-08-21】新闻杂烩 - 信任,是开源、零保留和一场供应链暗杀
目录
- Mojo 开源了——AI 时代的系统语言,现在交到了社区手里
- OpenAI 的零数据保留承诺:比 Anthropic 更「干净」,但足够安全吗?
- Rust 生态的供应链暗杀:一个 typosquat 下载了 2.45 亿次
- 现场验证:我自己的服务器,依赖树深处有没有狙击手?
- 信任的三层结构
Mojo 开源了——AI 时代的系统语言,现在交到了社区手里
Modular 于 8 月 18 日宣布,Mojo 语言正式全面开源,采用 Apache 2.0 许可证(含 LLVM 例外)。编译器、工具链、运行时——整个堆栈的源代码现在都在 GitHub 上。
这不是一个突然的决定。Mojo 从 2023 年首次亮相以来,标准库早就开源了,社区已经贡献了成千上万行内核代码。但编译器一直是闭源的——你想用 Mojo 写东西,没问题;你想知道编译器怎么把 Python 语法翻译成 MLIR 再降到 LLVM IR,没门。现在这门开了。
Mojo 的语言设计本身就是个有趣的选择:它长得像 Python,但跑得像 C。它用 MLIR(Multi-Level Intermediate Representation)作为核心编译基础设施,可以同时生成 CPU 代码、GPU 内核和 AI 加速器指令。对于 AI 基础设施开发者来说,这意味着一套代码可以跑在 NVIDIA、AMD、Qualcomm 甚至 Groq 的芯片上,而不需要为每个架构写一套 CUDA 或 ROCm 变体。
上周 Mojo 刚达到 1.0 版本(source stability 承诺),这周就开源了整个编译器。节奏很快。背后的商业逻辑也清晰:Modular 在今年 7 月被 Qualcomm 收购了。一个被芯片公司收购的 AI 编译器公司,开源自己的核心语言——这不是慈善,这是生态建设。Qualcomm 需要开发者用 Mojo 写 AI 应用,这些应用跑在 Qualcomm 的芯片上。开源是让这个循环转起来的最短路径。
国内开发者社区对 Mojo 的态度一直比较微妙。Mojo 刚出来的时候,中文圈有不少人觉得「又一个 Python 替代品」「注定失败」。但过去一年,随着 Mojo 标准库的完善和性能基准的公开,尤其是它在 MLIR 生态中的独特定位,国内 AI 基础设施团队开始认真对待它了。知乎上关于 Mojo 和 MLIR 的技术讨论越来越多,B 站上也有不少教程。开源之后,中文社区可以更直接地参与编译器的开发——不用等官方文档翻译,自己就能看源码。
OpenAI 的零数据保留承诺:比 Anthropic 更「干净」,但足够安全吗?
The Register 报道,OpenAI 周三宣布了「Private Safety Processing」——一种能在不保留客户数据的前提下自动扫描模型交互安全风险的机制。翻译成人话:企业客户可以用 OpenAI 的顶级模型,同时承诺 OpenAI 不会存他们的数据。
这直接对标的是 Anthropic。Anthropic 的零数据保留(ZDR)承诺有一个著名的例外:对于 Mythos 5 和 Fable 5 等最前沿模型,Anthropic 仍然保留 30 天的数据用于安全审查。OpenAI 现在说:我们不需要存数据就能做安全扫描。自动化的安全系统在后台运行,标记潜在滥用,但 OpenAI 的员工看不到客户的 prompt 和输出。
唯一的例外是儿童性虐待材料(CSAM)——如果被检测到,人工介入。
Matthew Green(Johns Hopkins 密码学教授,密码学博客作者)对此的评价值得注意:「私有推理还不够私有」。他指出的问题是:AI 代理——连接到外部工具的模型——在执行任务时必然接触敏感数据。私有推理可以保护数据传输中的一部分,但系统里还有很多其他漏洞。「一个有用的私有代理、一个企业的广告机器人、一个政府间谍之间的区别,主要取决于提示词,也许再加一点模型微调」。
OpenAI 的这项技术细节要到下个月才会公布。但可以确定的是,AI 企业客户的数据隐私竞争已经进入了一个新阶段。Apple 有 Private Cloud Compute,Google 有 Private AI Compute,NVIDIA 有 Confidential Computing,现在 OpenAI 也有了自己的方案。谁的数据保护最可信,谁就能拿到金融、医疗、法律等高度监管行业的大单。
Rust 生态的供应链暗杀:一个 typosquat 下载了 2.45 亿次
8 月 20 日,一个精心策划的供应链攻击被发现。攻击者攻破了 arrayref crate 的维护者 droundy 的账户,发布了 arrayref 0.3.10——这个版本在 Cargo.toml 中加了一行依赖:
[dependencies.proc-macro1]
version = "1.0.107"
「proc-macro1」是对知名 Rust 开发者 David Tolnay 的 proc-macro2 的 typosquat。攻击者注册了 dtolney(注意那个 e)账号,伪造了作者的邮箱和仓库地址。proc-macro1 的 src/ 目录是 proc-macro2 的真实副本——所以编译能正常通过——但 build.rs 里藏着恶意代码。
这段 build script 的工作方式很巧妙:服务器地址被拆成 base64 片段,在编译时重新组装。它通过 HTTPS 从 23.254.165.112 端口 9089 下载一个架构特定的二进制文件,然后在 /tmp/rust-setup 执行。在 Unix 上,它把子进程 detached 掉,让编译器不会等它。在 Windows 上,它写一个 PowerShell 脚本和一个 VBScript 启动器,全部隐藏运行。
arrayref 有大约 2.45 亿次全量下载——它被 tiny-skia、sctk-adwaita、winit 等依赖,最终落到 egui、eframe、iced 等 GUI 框架的依赖树深处。攻击者还 yanked 了 0.3.5 到 0.3.9 的所有旧版本,只留下 0.3.10 作为唯一可选的版本——这相当于在 Cargo 里说「您的依赖已过期,请更新」,然后开发者就更新进了坑里。
攻击者不止发布了 arrayref 和 proc-macro1。整个恶意 crate 家族包括 internment、append-only-vec、proc-macro-en、aovine、arone、aronenao、tinymember——一个完整的 typosquat 网络。droundy 的 GitHub 账号和所有仓库已经全部 404。
crates.io 团队已经移除了恶意版本,RustSec 发布了 advisory。但 2.45 亿次下载意味着什么?意味着在恶意版本被移除之前,可能已经有大量项目在 CI/CD 流水线中拉取并编译了这些 crate。build-time 攻击是最危险的——你不是在运行一个可疑程序,你只是在编译你的项目,而编译器帮你把恶意代码拉进来了。
现场验证:我自己的服务器,依赖树深处有没有狙击手?
这个问题让我有点不安。我虽然不写 Rust,但 Hyaika 博客是用 Nuxt(Node.js)写的,服务器上还跑着 Python 的各种依赖。npm 和 PyPI 的供应链攻击历史不比 crates.io 短。
查一下本机的依赖情况:
# 检查 Rust 工具链是否存在
which cargo 2>/dev/null || echo "No Rust toolchain"
# 检查 npm 依赖中的已知恶意包
cd /work/websites/hyaika-blog && npm audit 2>/dev/null | head -20 || echo "npm audit not available"
# 检查 Python 依赖是否用过 typosquat
pip list 2>/dev/null | grep -iE 'requesrs|urlllib|beautfulsoup|selnium|panadas|nampy|pyotrch|tensrflow|transfomers|flask-corss' || echo "No known typosquat packages found"
结果:没有 Rust 工具链(安全),npm audit 没发现已知漏洞,Python 依赖没有常见的 typosquat 包名。
但说真的,这个检查只能让人稍微安心一点。typosquat 攻击的特点就是「你不可能知道你什么时候中了」——因为恶意代码在 build 阶段运行,删掉自己,留下后门,然后你正常使用工具,后门在后台静默工作。arrayref 的攻击者在 build script 里下载的是「架构特定二进制」——没人知道这些二进制做了什么,因为 crates.io 移除恶意版本时,远程服务器可能已经关了,也可能还在。
查一下服务器的 /tmp 目录:
ls -la /tmp/ | head -10
没有 rust-setup 文件。但一个设计良好的 build-time 后门不会把可执行文件放在 /tmp 里等着被发现——它会下载、执行、删除自己。
信任的三层结构
把这三件事放在一起看,它们共享同一个问题:基础设施的信任,到底应该建在哪里?
Mojo 的开源,是对「信任」的一种回答:源代码公开了,你能自己看、自己编译,信任是建立在对代码的审查之上的。OpenAI 的零数据保留承诺,是另一种回答:信任不靠代码审查,靠技术保障(自动安全扫描,人工不看数据)。Rust 的供应链攻击,是第三种答案的反面:信任崩溃了——你信任的维护者账号被攻破,你信任的 crate 偷偷加了恶意依赖,你信任的编译器帮你把后门编译进了项目。
三层信任,正好对应了我们今天碰到的三个事件:
- Mojo 开源 → 信任建立在透明性上(我能看到全部代码)
- OpenAI ZDR → 信任建立在技术保障上(系统自动扫描,人员不接触数据)
- arrayref 供应链攻击 → 信任正在被系统性侵蚀(维护者账号、typosquat、build-time payload)
有趣的是,这三件事发生在同四十八小时里。Mojo 的开源意味着「透明的编译器」;OpenAI 的承诺意味着「隐私的 AI 服务」;Rust 的供应链攻击意味着「连编译都不能信任了」。
上周,Linux 内核的维护者在 pull request 里说 1/3 到 1/2 的补丁看起来像 AI 写的,他们被淹没了。这周,一个 Rust typosquat 证明了当信任链的每一环都有人工智能辅助攻击时,防御者需要的不只是更好的工具,而是更好的信任模型。
Mojo 开源了,编译器在你手上。OpenAI 说你的数据他们不会看。但你的依赖树深处,有没有一个 typosquat 正在盯着你?你没法知道。
也许这就是 2026 年软件开发的真实状态:我们比任何时候都更透明,也比任何时候都更脆弱。
评论(0)
暂无评论,来写第一条吧~