今天的话题从英伟达的权力交接和 Anthropic 的上市路演,到 Apache 的一个严重漏洞和 GitHub Actions 的锁定方案。这是 Agili 的 Hacker Podcast 的每日整理。
黄仁勋辞任英伟达 CEO,董事会启动继任遴选
辞职与临时安排
英伟达 CEO 黄仁勋周四辞职。此前他与两名女性的关系曝光,其中一段涉及公司直接下属,董事会压力迅速升级。英伟达任命 CFO Colette Kress 为临时 CEO,并任命 1993 年就加入董事会的风险投资人 Harvey C. Jones 担任公司历史上第一位董事长。消息公布当天股价开盘跌 14%,收盘跌幅收窄至约 4%。
63 岁的黄仁勋是英伟达最大个人股东,《福布斯》估计其身家超过 1500 亿美元。董事会表示会考虑内部和外部候选人。Kress 2013 年出任 CFO,此前在思科工作三年、在微软工作十三年。
董事会治理的缺口
HN 讨论里,一位自称律师的评论者说,与直接下属的关系通常本身就构成解雇理由,否则公司可能面对性骚扰和治理责任。更让董事会紧张的是信息是否被隐瞒:如果第二段关系是从别的渠道得知,性质就从私德变成信任崩塌。
用户 matwood 说,一家四万亿美元市值的公司没有像样的继任计划,说明治理长期缺位。也有评论认为 CFO 临时接管是危机中的标准做法,负责稳住财务和华尔街,直到永久 CEO 到位。
CUDA 的长期赌注
对黄仁勋领导力的评价分成两半。有人反驳“换谁都一样”:他在 CUDA(英伟达的并行计算平台)上持续投入十多年,把图形处理器(GPU)计算做成生态,这类长期赌注不常见,AlexNet 用的就是英伟达的卡。用户 lexarflash8g 提醒 Brian Krzanich 的先例,担心把创始人工程师换成 CFO 出身的继任者,会把公司带向下一个 Intel。评论里被议论的永久 CEO 人选包括 ARM CEO Rene Haas 和 CUDA 创造者 Ian Buck。
Anthropic 启动 IPO,招股书里写着 12 倍增长
招股书里的数字
Anthropic 把 IPO 信息放在 ipo.anthropic.com。路演 11 月 10 日开始,发行价预计 11 月 18 日确定,11 月 19 日在纳斯达克挂牌,代码 ANT。2026 年第三季度营收 170 亿美元,同比增长超过 12 倍;过去 12 个月付费超过 10 万美元的客户超过 11,900 家。调整后营业利润率 15%,营业利润率 -3%。净亏损 233 亿美元,其中 219 亿是非现金支出,来自可转换票据、衍生品负债和 SAFE(未来股权简单协议)的公允价值变动,估值上涨在账面上记成了亏损。
客户案例给了五家。Legora 服务 1500 多家律所,一项独立研究显示每位律师每周省下 4.3 小时非计费时间;礼来 5 万多名员工可用 Claude Enterprise;乐天新功能上市时间从 24 天缩到 5 天;Salesforce 每位开发者有效产出同比 +151%;沃尔玛通过 Sparky 下单的客单价高出约 35%。
为什么是现在
HN 的讨论基本没在聊这些数字,而在追问:如果模型真的接近递归自我改进(RSI,指模型自主改进下一代模型),为什么现在上市?
用户 panarky 摆了一串先例:Apple、Amazon、Intel、Google、NVIDIA、Tesla 都是在拿到改变世界的产品之后不久就上市,没有等主导地位。用户 aeternum 说得更直接:模型好 20% 但算力只有对手一半,照样输,时间和资本都算数。还有一层更人性的解释:IPO 的决策者们在挂牌那天会变成千万或亿万富翁,把这件事尽早做成、避开崩盘或丑闻的风险,符合他们的利益。
护城河之争
用户 plaidfuji 认为模型是商品,但公司级切换没那么容易,最终形态更像 AWS 或 GCP。这条判断被大量反例顶了回来:有人说 LiteLLM 这类网关已经能让 Claude CLI 指向任何模型,有人说自家财富 500 强公司 30 天内把一万名员工的 Claude 换成了 Copilot。反方指出,很多大企业的流量走内部网关到 Bedrock,Anthropic 在那套生态里存在感很弱。
递归自我改进的定义分歧
讨论的分歧落在定义上。有人引一篇文章区分“弱递归”(用软件造软件)和“强递归”(把模型研发整个交给 AI),认为目前只发生了前者:模型把实验成本压得很低,但设计不了实验。有用户说自己试过让 LLM 循环自我改进代码,最后都退化成一团垃圾,问题在于目标要能被清晰度量。也有人认为关键是反馈回路,给模型“理论、改动、测试、评估、回滚重试”的闭环,它就能在机器速度上解决问题。
Apache HTTP Server 的 HTTP/2 模块曝出远程代码执行漏洞
漏洞与影响范围
Wiz 披露 Apache HTTP Server 的 mod_http2 存在严重竞态条件漏洞,编号 CVE-2026-119618。问题出在 assign_headers() 函数处理共享资源时的同步缺陷:并发线程可能破坏堆内存,远程未认证攻击者由此可以执行任意代码(RCE,远程代码执行)。Anthropic 和 Google Cloud 的漏洞研究团队各自独立发现了它。影响范围是 2.4.55 至 2.4.70,修复版本为 2.4.71 及更新版本,从 GitHub 单独获取的 mod_h2 模块 2.0.8 至 2.0.42 同样受影响。Wiz 的云环境数据是 64% 的云环境包含受影响的资源,51% 有公开暴露的实例,这组数字没考虑具体配置。
一行补丁
补丁改动只有一行:把 apr_table_setn(req->headers, ...) 改成 apr_table_setn(r->headers_in, ...)。评论指出 req 在这个函数里以 const h2_request * 传入,本意是只读共享,代码却通过它写了数据。有人翻出四年前的一次重构,当时 Transfer-Encoding 那一行改对了,Content-Length 这一行漏了。同一个函数里 r 和 req 两个变量都代表请求的不同表示,命名本身就在制造混淆。
暴露面比数字温和
多条评论指出 HTTP/2 在 Apache 里默认并不启用:Ubuntu 22 LTS 的打包版本没开 http2 模块,RHEL 8/9 也没开。用 mpm_prefork(PHP 部署常见的选择,cPanel 和 WordPress 官方 Docker 镜像都默认用它)的实例同样碰不到这个竞态。不过 event MPM 从 2.4 起就是默认,不能一概而论。Debian 已经发布修复包 apache2 2.4.71-1~deb13u1。
披露节奏与工具
有人问为什么各发行版还没出包就公开了。评论提到 Linux 内核维护者 Greg KH 的说法:现在一个 LLM 报出漏洞,同一天常有另外几个模型报到同一个 bug,延迟披露的意义在下降。另有评论说用 deepseek 花了 7 分钟、0.02 美元就让模型找出这个 h2 竞态,再对修补后的版本跑一遍则失败。
GitHub Actions 有了工作流锁文件
从哈希钉死到锁文件
GitHub Actions 的工作流锁文件(workflow lockfile)在 2026 年 10 月 28 日转为正式可用。过去的标准建议是把 action 钉到完整的 commit SHA,原因是 tag 可变,攻击者可以把一个安全的 tag 指向恶意代码。新流程是先给 gh CLI 装扩展(gh extension install github/gh-actions-lock),在仓库里跑 gh actions-lock,工作流里的引用变回 v7.0.1 这种可读的 tag,同时生成 .github/workflows/actions.lock。锁文件里记录了每个 owner/repo@tag 对应的 ref、commit、owner_id 和 repo_id。Renovate 和 Dependabot 都已支持。
锁文件没覆盖的地方
zizmor 的维护者 woodruffw 指出几个缺口:只锁普通的 action 调用,可复用工作流(reusable workflow)仍需手动哈希钉死;composite action(复合 action)通过调用它的工作流被间接锁定,gh actions-lock 的默认行为会删掉它自身的哈希钉死;uses: 里的 Docker 镜像形式不在覆盖范围内;action 内部再去 npx ... 或 docker pull abc:latest 这种内部可变性,GitHub 管不到。结论是一套“全都锁上”的配置,不等于 100% 不可变。另一位用户提醒 runs-on: ubuntu-latest 同样指向一个会变的镜像。
要不要让 tag 不可变
评论区对“干脆让 tag 不可变”意见很集中。有人认为哈希钉死只是把“信任仓库所有者不移动 tag”换成了“信任合并那个 commit 的人核对过它是正式发布”。也有人建议 GitHub 强制要求发布到 Marketplace 的 action 使用不可变 tag。还有人说自己继续用 pinact run -u 加 Dependabot 提醒,或者干脆自建 Jenkins,但立刻被反驳 Jenkins 的漏洞密度不比 GHA 低。
Jane Street 开源了一份苏格拉底式导师提示词
它怎么工作
Jane Street 在 GitHub 的 agent_skills 仓库里发布了一份 socratic-tutor/SKILL.md,约 100 行 Markdown,让 LLM 按苏格拉底式(通过连续提问让学习者自己推理)方法做私人导师。它先把主题拆成 4 到 10 个子技能,用 3 到 5 个由易到难的诊断问题定位,之后用 0 到 5 级标注技能地图,等级每变一次就重画。教学时一次只问一个问题,问完立即结束消息,不附提示或答案。答错时追问更窄的问题,连续 2 到 3 次失败才直接解释。等级要通过实际表现获得,跨 2 次以上独立检查,其中至少一次是无提示回忆。全部子技能达到目标等级后,再跑一场覆盖所有子技能的综合评估。
用起来怎么样
HN 上最常见的反应是“这不新”,有人说 GitHub 上搜“socratic tutor skill”能返回 92 个仓库。实际使用反馈偏正面:有人拿它读一本密集的哲学书,15 分钟就精疲力尽,但认为效果不错;有人说这个 skill 最大的作用是阻止模型习惯性地手把手喂答案,核心效果用一句话就能复现:“当用户答错时,不要给答案,问一个更窄的问题,暴露其推理中的矛盾。”
学习效率的争论
批评集中在课程和状态。做过课程的人指出,LLM 从零搭渐进课程很差,经常把后面才解释的概念提前塞进来,课程越大越乱。也有人提醒上下文会退化,提示词再细,模型也会跑偏或开始幻觉。关于学习效率,有评论搬出 Bjork 实验室关于“合意困难”(desirable difficulties)的文献,认为让 AI 代写、代想、代总结,等于跳过思考;另一些用户说 LLM 的价值是随时补上卡住你的那块背景知识,比如学数字信号处理时补数学,比翻书快得多。
为什么写正确的软件这么难
从停机问题到 Rice 定理
这篇文章从可计算性与复杂度理论出发,给了一个强硬的回答:程序与“完全理解”在本质上冲突。停机定理说不存在一个算法能判定任意程序是否终止,证明使用对角化。Rice 定理更进一步:对部分函数的任何非平凡性质,都不存在算法判定一个程序计算的部分函数是否具有该性质。文章举了一个很小的程序:2016 年 Adam Yedidia 和 Scott Aaronson 构造了一个图灵机,其行为独立于 ZFC 公理系统,Stefan O'Rear 后来把状态数减到 1919。几百行代码的程序,就可能无法用现有数学证明其行为,不是分析太复杂,而是数学本身不够强。
验证方法的取舍
文章把验证方法归成几类:模型检查器自动、通用,适合硬件和嵌入式实时系统,但受状态爆炸制约;演绎证明精确,所以复杂度不低,实际项目通常边写程序边证明;抽象解释放弃精度,换取自动化和可处理性,代价是可能回答“不知道”;类型系统可以看作抽象解释的一种。结论不是放弃验证,而是把验证放回成本与收益的框架里。
经验主义的方向
作者主张借鉴物理学:基本方程简单,三体相互作用却混沌。既然无法验证所有程序的所有性质,就应该经验性地研究人类实际写出的程序。内存安全是好例子。多伦多大学 2014 年对分布式系统的研究发现,92% 的灾难性故障来自对非致命错误的错误处理,58% 的故障本可以通过简单测试错误处理代码发现,一个简单的 linter 本可预防 Cassandra、HBase、HDFS 和 MapReduce 中 33% 的灾难性故障。
讨论里的补充
有读者从金融行业经验出发,认为强学术背景的团队有时把形式证明推到阻碍进展的程度。也有人指出,传感器数据本质上是概率性的,形式证明只能保证给定输入后的行为。关于 AI 和 LLM,一派认为 LLM 基于符号推理,受同样的理论限制;另一派认为 LLM 能帮助生成程序,形式化成本会下降。比较一致的是:即使工具变强,理解问题、界定规范和选择验证目标仍然需要人。
技术性修正值得记下:1919 个状态的图灵机直接编码需要 6237 字节,超过 4KB 挑战的限制,后续搜索已把独立于 ZFC 的图灵机状态数降到 215。忙碌海狸 BB(6) 的下界已从文章中的 7.4×10^36534 更新到 10↑↑10↑↑10↑↑8。关于哥德尔,有读者提醒:不完备定理说的是单一有效形式系统无法解决所有可表达的问题,而不是每个数学问题都永远无解。
把 systemd 启动过程画成一棵实时生长的树
它做了什么
bootvine 把 systemd(Linux 的初始化系统与服务管理器)的启动过程画成一棵实时生长的树,显示在开机控制台上。作者 Willem Vanhulle 把它托管在 Codeberg,主体用 Rust 写成(占 85%),终端界面基于 ratatui,仓库有 158 个星标、101 次提交,最新版本 v0.1.3。它占用一个专用的虚拟终端(VT),在独立线程里通过 libdbus 订阅 systemd 的作业状态,按启动阶段分节,用珠链式的时间线展示依赖和先后顺序。某个 unit 失败时,界面会给出失败原因和它在 journal 里的最后几行日志。
社区反应
有用户说这个界面漂亮,一眼就能看清 systemd units 的状态,应该成为所有发行版的默认开机画面。讨论很快转向 systemd 本身:有人恨得咬牙切齿,但认为这是第一次觉得它也许能稍微被赎回一点;有人列了部件太多、做太多事、和其他服务抢地盘等问题。反方认为部件数量正好,现代操作系统要覆盖的东西本来就比 1970 年代的 Unix 多得多。具体分歧落在 cron 和 systemd timer 上:一位资深同行说三十年里没见过 cron 自己死掉,而 systemd 的 timer 死过,systemd 还没去重启它。
93% 的颜料飞溅是合法的 Perl 程序
研究方法
2019 年 4 月 1 日,一篇题为《93% 的颜料飞溅是合法的 Perl 程序》的论文发表在 SIGBOVIK 上。SIGBOVIK 是卡内基梅隆大学每年愚人节前后举办的恶搞学术会议,论文的起点是 Jake Archibald 在 Twitter 上的一个玩笑回复。作者收集 100 张颜料飞溅图片,用光学字符识别(OCR,把图片里的文字转成字符串的软件)读出每张图上的字符,再交给 Perl 解释器判断。结果显示 93% 的飞溅能被解析为合法 Perl 程序,作者还列出了 7 个反例。论文获得了当届的“不知情参与丝带”,官方评语称其“推动了开放科学与富有成果的拖延”。
为什么这么多飞溅合法
大部分飞溅之所以合法,靠的是 Perl 的无引号字符串(unquoted strings):一串字母数字字符不加引号也会被当作字符串解析。比如一张图被 OCR 读成 ME,在 Perl 里就是字符串 “ME”,换作其他语言多半会报语法错误。论文正文里还埋了彩蛋:Figure −3 这个编号本身就是个玩笑,对应的图片在 Perl 里求值为数字 −3。
讨论与延伸
评论区的分歧集中在“这到底说明了什么”。有读者认为结论完全取决于用哪个 OCR,如果换更准的 OCR,数字会大不一样;另一些人指出这正是笑点所在:空文件 touch temp.pl 本身就是合法 Perl,争论 OCR 精度反而绕开了重点。技术侧的讨论延伸到别的语言:Java 的 properties 文件只有在包含非法 Unicode 转义序列时才无效;PHP 5 和 7 有无引号字符串,PHP 8 取消了。也有怀旧:有人 2003 到 2004 年用 Perl 写过一个约 20 万行的网络管理系统,听说那家公司还在用。
Microsoft 365 大面积服务降级
现场细节
微软 365 状态页显示服务降级:用户可能无法连接多个 Microsoft 365 服务。页面特别说明,信息之所以发布在这里,是因为管理员可能连不上管理中心(admin center)去查服务健康状态。同一时间 Azure 状态显示未检测到问题。
HN 讨论补上了现场细节:Outlook 本身没问题,是 Exchange 出了状况;URL 扫描完全停摆,SharePoint 有间歇性失败;Teams 还在工作,或者说它表现得和平时一样。有用户贴出实际的 SMTP 退信:451 4.3.2 Temporary server error. Please try again later。技术侧有人解释:新版 Outlook 访问被弃用的本地服务器要靠 IMAP,却强制经 outlook.com 云端代理,于是一批以为在自托管邮件的客户也一起下线。
状态页本身也挂了
有用户说这篇公告也打不开。有人评论,做不出一个在被监控服务宕机时扛得住高负载的状态页,这恰恰是状态页存在的唯一理由。也有人提醒 Downdetector 这类服务在大范围云故障时总是显示“几乎全挂”,一部分原因是用户并不清楚自己实际在用哪家服务。
播客全文
女:Hello 大家好,欢迎收听 Agili 的 Hacker Podcast,我是莓莓。 男:大家好,我是阿迪。 女:今天咱们聊几个串在一起的话题。英伟达换帅、Anthropic 的 IPO、Jane Street 那份苏格拉底导师提示词、Apache HTTP/2 的一个竞态漏洞,还有 GitHub Actions 的锁文件。最后留一点时间给一篇关于颜料和 Perl 的论文。 男:听起来像从公司治理一路滑到恶搞学术。 女:先从英伟达开始。阿迪,黄仁勋辞职这件事,新闻里卷进很多安全调查和政治追问,咱们今天不碰那部分,只看公司治理和继任。 男:好。11 月 12 日董事会宣布他辞职,CFO Colette Kress 做临时 CEO,董事会启动内外部遴选。同时任命 Harvey C. Jones 做公司历史上第一位董事长,他是 1993 年就加入的董事,风险投资人,也做过芯片设计高管。消息当天股价跌 4.34%。 女:一家四万亿美元市值的公司,之前没有像样的继任计划,这点挺扎眼。 男:HN 上有人直接说治理长期缺位,换掉 CEO 之后董事们也该换血。也有人认为 CFO 临时接管是危机中的标准做法,先稳住财务和华尔街,直到永久 CEO 到位。被议论的永久人选包括 ARM CEO Rene Haas 和 CUDA 创造者 Ian Buck。 女:与直接下属的关系这条线,讨论里怎么看? 男:有自称律师的人说,与直接下属的关系通常本身就构成解雇理由,因为权力不对等和性骚扰风险。向董事会隐瞒又让信任崩塌。有人用“厨房里看到两只蚂蚁,总数不会是两只”形容董事会担心还有更多未披露关系。 女:回到技术,黄仁勋留下的真正资产是什么? 男:CUDA。他在深度学习爆发之前就押注可编程 GPU 和 CUDA,AlexNet 用的就是 Nvidia 的卡。有人反驳“换谁都一样”:这种长期赌注不常见。HN 上从 2000 年代初起 Nvidia 就在大学里推 GPGPU,为那个时刻等了二十年。 女:也有游戏玩家担心,财务出身的 CEO 会把芯片产能几乎全部分给服务器。 男:对。有人提到 RTX 5090 的裸片面积约 750 平方毫米,B200 由两个裸片封装,合计 1628 平方毫米。产能给谁,不是抽象问题。 女:英伟达这条先放这儿。Anthropic 的 IPO 材料里,数字很猛,但 HN 上基本没聊数字。 男:对,大家在追问:如果模型真接近递归自我改进,为什么现在上市?递归自我改进,RSI,指模型自主改进下一代模型。 女:招股书里 2026 年第三季度营收 170 亿美元,同比增长超过 12 倍;过去 12 个月付费超过 10 万美元的客户超过 11900 家。调整后营业利润率 15%,营业利润率 -3%。净亏损 233 亿美元,其中 219 亿是非现金支出,来自可转换票据、衍生品负债和 SAFE 的公允价值变动。 男:估值上涨在账面上记成亏损。有人说真有 RSI,VC 会压着公司推迟 IPO 直到拿下明显市场主导权,而不是今天拿 1000 亿美元、付出稀释代价。另一个人摆先例:Apple、Amazon、Intel、Google、NVIDIA、Tesla 都是在拿到改变世界的产品之后不久就上市,没有等主导地位。 女:还有一层更人性的解释:挂牌那天决策者会变成千万或亿万富翁。 男:对,尽早做成、避开崩盘或丑闻的风险,符合他们的利益。也有人提到中国开源权重模型的压力,以及最近 NVIDIA 动向对 ANT 有利:东南亚的中转数据中心拿卡变难,中国实验室蒸馏最新前沿模型也不顺。 女:护城河呢?企业换模型到底难不难? 男:分歧很大。有人说模型是商品,但公司级切换没那么容易,员工把它接进 GitHub、IDE 之后,迁移得由 CIO 层面推动,最终形态更像 AWS 或 GCP。反例也很多:LiteLLM 这类网关已经能让 Claude CLI 指向任何模型;一家上万人公司用一个下拉菜单就能切换;一家财富 500 强公司 30 天内把一万名员工的 Claude 换成了 Copilot;成本一旦到量级,Datadog 一个月就下掉了、Slack 一个季度。 女:这让我想到 Jane Street 那份 socratic-tutor 技能。它也是把一套流程写成可复用的 Markdown,放进不同的 agent 工具里跑。 男:对,约 100 行。触发条件限定得很死:只有用户明确说“教我”“考我”“训练我到掌握”才启动;如果只是问“解释一下 X”,就正常回答。意图不明确时先问一句“要快速答案,还是认真教你”。 女:里面最有用的是哪几条规则? 男:开课前把主题拆成 4 到 10 个具体子技能,宽泛主题做成两级树。用 3 到 5 个由易到难的诊断问题定位,诊断结束前不教任何内容。之后用 0 到 5 级标注技能地图,0 是没意识到,5 是能教别人并处理边界情况。地图用 ASCII 进度条渲染,等级每变一次就重画。 女:教学循环一次只问一个问题,问完立即结束消息,不附提示、示例答案或讲解。答错时不给答案,追问更窄的问题,把矛盾暴露出来;连续 2 到 3 次失败才直接解释,解释完马上换角度重测。 男:评估规则很严。等级要通过实际表现获得,跨 2 次以上独立检查,至少一次是无提示回忆;模糊或部分正确的答案不算对;不能把用户没表达过的见解算在他头上。还会无预警插入间隔复习,复习失败就降级重学。 女:HN 上有人拿它读一本密集的哲学书,15 分钟就精疲力尽,但认为效果不错。也有人说核心效果一句话就能复现:“当用户答错时,不要给答案,问一个更窄的问题,暴露其推理中的矛盾。” 男:批评集中在课程从哪来。做过课程的人指出,LLM 从零搭渐进课程很差,经常把后面才解释的概念提前塞进来,课程越大越乱。人类先给大纲,它才能教得好。跨会话状态也麻烦:每次重新诊断、重新确认已掌握的内容会让人烦。 女:学习效率的争论也很集中。有人搬出 Bjork 实验室关于学习错觉和合意困难的文献,说学习需要自己费力产出,让 AI 代写、代想、代总结,等于跳过思考。 男:另一派说 LLM 的价值是随时补上卡住你的那块背景知识,比如学数字信号处理时补数学,比翻书快得多。还有人说苏格拉底式提问的核心是让学习者在某个具体时刻真正意识到自己不知道,这依赖关系和时机;LLM 容易顺着提示词说“很好,你现在懂了”,但未必真的判断得了。 女:咱们从 AI 辅导切到安全。Apache HTTP Server 的 mod_http2 有一个竞态条件漏洞,编号 CVE-2026-119618。 男:问题出在 assign_headers 函数处理共享资源时的同步缺陷。并发线程可能破坏堆内存,远程未认证攻击者由此可以执行任意代码,也就是 RCE,远程代码执行。Anthropic 和 Google Cloud 的漏洞研究团队各自独立发现了它。博客发布时没有公开的利用代码,也没有在野利用报告。 女:补丁只有一行? 男:对。把 apr_table_setn(req->headers, "Content-Length", "0") 改成 apr_table_setn(r->headers_in, "Content-Length", "0")。req 在这个函数里以 const h2_request * 传入,本意是只读共享,代码却通过它写了数据,于是并发路径上产生了数据竞争。有人翻出四年前的一次重构提交,当时 Transfer-Encoding 那一行改对了,Content-Length 这一行漏了。 女:影响范围是 Apache HTTP Server 2.4.55 到 2.4.70,修复版本是 2.4.71 及更新版本;从 GitHub 单独获取的 mod_h2 模块 2.0.8 到 2.0.42 同样受影响。Wiz 的云环境数据是 64% 的云环境包含受影响的资源,51% 的云环境有公开暴露的实例。 男:这组数字没考虑具体配置,实际风险取决于 HTTP/2 是否启用。很多评论指出 HTTP/2 在 Apache 里默认并不启用:Ubuntu 22 LTS 的打包版本没开 http2 模块,RHEL 8/9 也没开。用 mpm_prefork 的实例同样碰不到这个竞态。不过 event MPM 从 2.4 起就是默认,不能一概而论。 女:临时缓解办法是在 httpd.conf 里把协议限制到 HTTP/1.1,去掉 h2 和 h2c 引用。评论提醒 certbot 的 cron 任务或 systemd timer 可能在禁用之后又把 Apache 拉起来,所以单纯 systemctl disable --now apache2 不一定够;sudo a2dismod http2 再重启通常就足够;更彻底的是 systemctl mask apache2,或者在防火墙上封掉 80/443。 男:RCE 的说法有争议。Wiz 的博客没有给出可利用的证明,有人认为把内存损坏直接称为 RCE 属于夸大。另一条线索是 Red Hat 的安全公告给出 9.8 的 CVSS 评分,并写道公开研究已经针对默认配置、启用 mod_http2 的服务器演示了可靠利用;Apache 基金会的官方报告也写 RCE 可行。NIST 的数据库当时还没给出评分。 女:还有个细节,博客正文标题写的是 What is CVE-2026-111497?,而实际编号是 119618。有人认出 111497 是之前 Brotli 漏洞的页面,复用模板时忘了改。 男:对,表格把已修复的 mod_h2 版本写成 2.0.42 及更新,与受影响区间重叠,有人指出应为 2.0.43;把 GitHub 列为供应商也让人困惑,实际维护者是模块作者,GitHub 只是托管地。有评论直言这是从补丁和官方公告里挤出来的 slop。 女:这条和 GitHub Actions 的锁文件可以放在一起看,都是供应链安全。 男:GitHub Actions 在 2026 年 10 月 28 日把 workflow lockfile 转为正式可用。过去的标准建议是把 action 钉到完整的 commit SHA,而不是 tag,因为 tag 可变:攻击者可以把一个原本安全的 tag 指向恶意代码。新流程是先给 gh CLI 装扩展:gh extension install github/gh-actions-lock,然后在仓库里跑 gh actions-lock。工作流里的引用会从 SHA 变回 v7.0.1 这种可读的 tag,同时在 .github/workflows/actions.lock 生成锁文件。 女:锁文件里记录了什么? 男:记录了每个工作流用到哪些 action,以及每个 owner/repo@tag 对应的 ref、commit、owner_id 和 repo_id。把改动和新文件一起提交即可。Renovate 和 Dependabot 都已经支持锁文件,定期更新依赖时会顺带更新它。作者提醒使用 cooldown,别在发布当天就跟上。GitHub 也建议在 CI 里校验锁文件是否与工作流同步、有没有被破坏。 女:zizmor 的维护者 woodruffw 在讨论里指出几个缺口:只锁普通的 action 调用,可复用工作流仍需手动哈希钉死;composite action 本身不被锁,而是通过调用它的工作流被间接锁定,这意味着 gh actions-lock 的默认行为会删掉 composite action 自身的哈希钉死,任何外部调用者都会因此失去传递性的保护,默认并不安全;uses 里的 Docker 镜像形式同样不在锁文件覆盖范围内;action 内部再去 npx 或 docker pull abc:latest 这种“内部可变性”,GitHub 根本管不到。 男:结论是一套“全都锁上”的配置,不等于 100% 不可变。锁文件的一个实际好处是拒绝锁定冒名 commit——如果有人把某个 fork 里的 commit 哈希塞进你的工作流,锁文件会拦住它,而单纯的哈希钉死做不到这一点。runs-on 也被点了名:它同样指向一个镜像,但现实中大量人写 ubuntu-latest,接受 GitHub 当天给什么就是什么。 女:有评论说,如果 GitHub 真在乎安全,宣布跟 action 绑定的 tag 一律不可变就能解决。 男:对,也有人干脆不用 GitHub Actions,建议能避开就避开,宁可自建 Jenkins。反驳说 Jenkins 像瑞士奶酪,几乎天天有漏洞,即使只在内网跑也危险。树莓派做不了 Windows 和 macOS 构建,跑五百个依赖的 Rust 编译器也很痛苦。 女:今天最后一个话题轻松一点。2019 年 4 月 1 日,一篇题为《93% 的颜料飞溅是合法的 Perl 程序》的论文发表在 SIGBOVIK 上。SIGBOVIK 是卡内基梅隆大学每年愚人节前后举办的恶搞学术会议。 男:论文的起点是 Jake Archibald 在 Twitter 上的一个玩笑回复:Adrienne Porter Felt 说不愿过早教孩子编程、想让孩子在泥坑里蹦跳、往墙上抹颜料、躲在被窝里读小说,Jake 接了一句“但往墙上抹颜料能不产生合法的 Perl 程序吗?”作者把这句话当成了真正的研究问题。 女:方法很直接:收集 100 张颜料飞溅图片,用光学字符识别,也就是 OCR,把图片里的文字转成字符串,再交给 Perl 解释器判断。结果显示 93% 的飞溅能被解析为合法 Perl 程序,作者还专门列出了 7 个反例,证明“抹颜料而不产生合法 Perl”在理论上确实可能。 男:大部分飞溅之所以合法,靠的是 Perl 的无引号字符串:一串字母数字字符不加引号也会被当作字符串解析。比如一张图被 OCR 读成 ME,在 Perl 里就是字符串 "ME",换作其他语言多半会报语法错误。用 -w 开启警告时,Perl 还会提示某个无意义字符串“未来可能成为保留字”。 女:论文正文里还埋了彩蛋。Figure −3 这个编号本身就是个玩笑,对应的图片在 Perl 里求值为数字 −3。勘误部分补充了几个提交截止后才被发现的例子:OCR 读成 lersfijglpFiji-j 的飞溅求值为 0,-*? 也求值为 0,;i;c;;#?z{;?;;fn':.; 求值为字符串 "c",;E,'' 求值为 "E"。 男:讨论里的分歧集中在“这到底说明了什么”。有读者认为结论完全取决于用哪个 OCR,作者还试了多种 OCR 设置、挑出“最有趣”的结果,如果换更准的 OCR,数字会大不一样,而且论文没有给出随机输入下的 OCR 通过率作为基线。另一些人指出这正是笑点所在:OCR 只是通往奇怪字符串的一种有趣方式,真正的问题是 Perl 接受荒谬输入的能力。 女:而且更准的 OCR 会识别出图片里根本没有文字,空文件 touch temp.pl 本身就是合法 Perl。那张带 Stitch & Shutter 水印的图,stitch & shutter 拿去跑也是合法程序,所以争论 OCR 精度反而绕开了重点。 男:还有人顺着这个思路反过来提议:应该看看有多少画作能被写成可执行的 Perl,以及这些程序跑起来会做什么。技术侧的讨论延伸到别的语言:Java 的 properties 文件只有在包含非法 Unicode 转义序列时才无效,其余任何字符序列都合法。PHP 5 和 7 有无引号字符串,PHP 8 取消了。 女:也有怀旧和自嘲。有人 2003 到 2004 年用 Perl 写过一个约 20 万行的网络管理、统计和告警系统,听说那家公司还在用,向接手的人致哀。有人提到前几天一个大模型不声不响地选了 Perl 而不是 Python 来写简单脚本,觉得世界还有希望。 男:还有人感叹 Perl 终于凉到可以不被嘲笑了,回复引了一篇文章的标题:Perl 没死,它的流行度只是降到了互联网泡沫时期的水平。 女:今天就聊到这儿。英伟达换帅背后是治理和继任,Anthropic 的招股书把增长和 RSI 的叙事放在同一张桌上,Jane Street 的导师提示词把教学流程写成了可复用的文本,Apache 和 GitHub Actions 提醒我们依赖和供应链还在长。最后那篇颜料论文,算是给这些沉重话题收个尾。 男:谢谢大家陪我们聊到这儿。用泛用型播客客户端订阅 Agili 的 Hacker Podcast,下次见。 女:下次见。
参考链接
- Jensen Huang resigns
- Nvidia is preparing to oust Jensen Huang
- 93% of paint splatters are valid Perl programs (2019)
- Anthropic IPO
- Socratic Tutor
- Critical RCE Vulnerability in Apache HTTP Server
- Lock Your GitHub Actions
- A live tree of systemd jobs on the boot console
- Why writing correct software is hard and why math (alone) won’t help us (2016)
- Service degradation on Microsoft 365
