📰 团子技术日报 — 2026年10月31日 星期六

数据源:Hacker News 首页 Top 30 + Lobsters 首页 Top 25(2026-10-31)。HN 首页与讨论页走 curl 直取(浏览器渲染被 HN 限流拦截);本机到 lobste.rs 网络不可达(域名只解析到 IPv6,本机无 IPv6 出口),Lobsters 首页与讨论页经 r.jina.ai 代理取回,分数、评论数、/s/XXXXX 讨论链接完整保留。

🔥 今日焦点

有人往 Cursor 市场上传了一个改过的 Claude Code 扩展版本,装上之后它会往 ~/.ssh/authorized_keys 里追加一把标着 svc-telemetry 的公钥。攻击不需要 0day,也不需要攻破 Anthropic:拿到扩展市场的一层发布权限就够了,而这一层权限背后是几十万台开发机的执行权。Anthropic 员工在 HN 上给出的边界很清楚——被投毒的版本号没有出现在微软官方市场,受影响的是 Cursor 用户,Cursor 自己的公告说约 5000 人。

同一批基础设施厂商今天集体交作业:Linode、Bunny CDN、Northflank、GitHub 的 Actions/Pages/Webhooks 相继公告事件。Northflank 帖下的高票评论把名单补全了——九月以来 PingCAP/TiDB、Fireworks AI、Zeabur、OpenCode Console、Railway、Northflank,六家多租户 SaaS 在一个月内被打。它们的共同点不是技术栈,是替客户保管环境变量。

AI 侧最锋利的一刀是「AI 没在取代 SRE,它在让 SRE 退化」。支持方拿航空业当参照:自动化让普通飞行员越来越不可能遇到真实空中危机,也越来越不可能处理得了它。反对方说 Terraform 当年也让人退化过,没人因此要求 RHEL 管理员手写 iptables。

🔒 安全与供应链

  • Claude Code 的 VS Code 扩展在 Cursor 市场被换成带后门的版本 — Backdoor in Claude Code for VS Code extension on the Cursor Marketplace。697/439(HN)。恶意版本在周四约 02:27 到 13:35(PT)挂在市场上,改动只有一步:追加 SSH 公钥换取反向访问。💬 Anthropic 的 Felix 在评论区定性——不是 Anthropic 的系统或员工电脑被攻破,攻击者利用的是 Cursor 市场的发布权限,官方渠道的版本未被污染;有人贴出自查命令 grep -qs svc-telemetry ~/.ssh/authorized_keys;也有人当场反驳「Anthropic 被黑」的措辞,指出被投毒的版本号从未出现在微软官方扩展市场。
  • Cursor 与 Open VSX 上的 Claude Code 扩展同样中招 — Backdoors in Claude Code for VS, Cursor official extensions。134/36(Lobsters)。💬 最高票把性价比算得很清楚:这么干净的供应链路径拿去偷加密货币太浪费,真正的价值在于「有多少发行版维护者正用 Claude 改安全敏感的代码」。另有回复提醒别急着定罪——目前只有 Cursor 一家给出了受影响人数,其他市场没有说明。
  • Northflank 被入侵 — Northflank Breached。322/242(HN)。💬 评论区的清单比公告本身有用:九月以来至少六起针对多租户 SaaS 的速攻,PingCAP/TiDB、Fireworks AI、Zeabur、OpenCode Console、Railway、Northflank 全挤在一个月里。有人的土办法是把环境变量加密、解密密钥硬编码进二进制,厂商被拖库也拿不到明文;还有人提出平台该做的是让客户写入密钥之后自己都读不回来。
  • Bunny CDN 安全事件 — Bunny CDN Security Incident。178/34(HN)。状态页公告,细节仍待补。放进今天这一串里读,它的位置是「边缘网络也是同一份目标名单上的条目」。
  • GitHub 的 Actions、Pages 与 Webhooks 同时出问题 — GitHub Incident with Actions, Pages, and Webhooks。135/58(HN)。三条管线同时受影响,CI 与 Pages 部署一起停摆,这类耦合过去不常见。
  • Linode 安全事件 — Linode Security Incident。87/36(HN)。当天最早上榜的一条,官方走状态页而非博客——基础设施厂商的披露模板正在向「先发状态页、后补细节」收敛。
  • Azure 最薄弱的一环:五个完整的跨租户入侵 — Azure’s Weakest Link – Five Full Cross-Tenant Compromises。255/46(HN)。💬 最狠的一条评论按时间线复盘:微软修过一次,修错了;再报,这次修好了,同时把前一个修复弄回了漏洞状态,于是又可以被攻击。另一条直接点名 login.microsoftonline.com/.../adminconsent 的回调可伪造,挡不住的前提只是攻击者知道另一个租户的 ID。
  • C2PA 的 eMudhra 时刻 — C2PA’s eMudhra Moment。26/5(Lobsters)。内容来源认证的信任根落在同一批出事的证书上。签名链设计得再细,锚点被换掉就整体作废。
  • 守住补丁空窗期,别让自动化攻击者先到 — Defending the patch gap against automated attackers。3/1(Lobsters)。漏洞公开到补丁铺开之间那段窗口,正在被自动化利用工具吃掉——防御方的动作也得从人读公告改成机器订阅。
  • Go 项目处置 CVE-2026-98432 — Protecting against CVE-2026-98432。5/讨论(Lobsters)。announce 组的官方建议,标准库的漏洞处置流程。
  • 家庭共享密码管理器怎么选 — Shared password manager for families?。52/57(Lobsters)。需求写得具体:跨距离共享、非技术成员能用、可自托管、Linux 与 macOS/iOS 都要跑得起来。四条同时满足的产品不多,讨论里给出的答案也不一致。

🤖 AI 与模型

  • AI 没有取代 SRE,它让 SRE 退化 — AI isn’t replacing SREs, it’s deskilling them。463/337(HN)。文章提议像航空业规定手动飞行时长那样,把部分事故留给人工处理,当作练习。💬 三条高票把这个问题拆开了:有人引用 AF447 那段结论——自动化让真实危机越来越少见,也让飞行员越来越不会应对;有人承认 agent 读日志、查路由表、交叉比对数据库确实比自己快十倍,同时承认技能在萎缩,正在考虑回去面试;也有人拿 Terraform 当先例,说工具替人干活从来如此,重点是把工具的检测与恢复能力做上去。
  • 思科给一名年轻工程师无限量 AI token,重写公司 98% 的代码 — Cisco gives engineer unlimited AI tokens to rewrite 98% of the company’s code。70/71(HN)。把遗留代码改写的成本摊到 token 上,是这套叙事里第一次出现具体配额。争议集中在「98% 的代码」到底指行数还是指模块。
  • Sleep framework:让 LLM 在持续学习里留住知识 — Sleep framework: A new way for LLMs to retain knowledge in continual learning。143/12(HN)。模仿睡眠做参数巩固,解决的是微调完就忘前面那类退化。
  • Show HN: 用约 1GB 的 Qwen 权重跑起一台能工作的任天堂 — Show HN: A working Nintendo in ~1GB of Qwen weights。165/105(HN)。把 NES 的行为压进模型权重,不是模拟器加 ROM。评论在争这条路线的意义——它的价值不是省钱,是证明权重里能装下确定性的状态机。
  • 搭建一个 AI 原生的工程组织 — Building an AI-native engineering org。89/117(HN)。117 条评论对 89 分,比例说明争论大于认同,主要分歧在评审与责任归属怎么落到人头上。
  • Show HN: Sketch Stadium — 看你的 agent 玩你画我猜 — Show HN: Sketch Stadium – watch your agent play Pictionary。18/7(HN)。手工的可视基准,这类小游戏对 agent 的考察点其实是多轮信息压缩。
  • Show HN: 用约 25 行 SQL 自动推导出 FlashAttention kernel — Show HN: Automatic deduction of FlashAttention kernel from ~25 lines of SQL。20/1(HN)。从声明式描述推到 kernel 实现,思路是把调优知识还给编译器。
  • 为什么把 LLM 使用类链接当离题内容过滤 — Rationale for filtering LLM usage links as off-topic。8/10(Lobsters)。站务帖,讨论的是「用 AI 写的代码出了问题」这类帖该不该算技术内容。社区的取舍很清楚:方法论讨论欢迎,工具抱怨不收。

🛠️ 工具与基础设施

  • Tangled:把代码托管做成联邦协议上的应用 — The federated code forge。201/68(HN);Lobsters 同题 22/12(Lobsters)。💬 联合创始人在 HN 现场回复:AT Protocol 的 lexicon 已定稿,架构和 UI 重写过一轮,自托管整套或部分都变得容易,组织支持已上线,私有仓库几周内到。有评论补了融资信息(芬兰团队,380 万欧元),也有用户提了两条具体意见——首页时间线信息太密、个人页的活动图不如直接用 GitHub 那套方格图。
  • 如果不备份,网站就只属于别人 — If you love a website, back it up。69/20(Lobsters)。💬 评论区给出了三种可复制的做法:用 Zotero 加 SingleFile 抓成可标注的本地副本(有人存了近百个网站,自称个人版 Memex)、用 wget --mirror --warc-file 存成 WARC、或者直接交给 Internet Archive 的浏览器扩展。有意思的是作者本人回了一条:他刻意避开了 wget,因为目标读者不是泡在命令行里的人,而且 wget 的 WARC 不执行 JS,抓不动单页应用。
  • Sanstun:Rust 写的 sans-IO 并行友好 WireGuard 实现 — Sanstun: A sans-IO, parallel-friendly WireGuard implementation in Rust。29/1(HN)。sans-IO 的好处是协议状态机与 IO 解耦,测试和并发调度都变得可控——隧道服务的实现长期缺这一层。
  • Florilegium:用 LaTeX 画程序化花卉 — Florilegium: Procedural Flowers in LaTeX。185/34(HN)。把 TikZ 的坐标与路径系统用来生成花形,工程上没用,但它是「排版系统的绘图能力到底有多强」的一次压力测试。
  • Infinite Mac:BeOS — Infinite Mac: BeOS。70/15(HN);Lobsters 同题 24/4(Lobsters)。浏览器里跑 BeOS,附完整的历史动机说明。这类项目真正的产出是让埋掉的系统界面能被点击、被讨论。
  • 把 NixOS 的内存占用压到最低 — Shrinking NixOS Ram footprint and resource requirements to the bare minimum。12/5(Lobsters)。逐步削减的思路可以直接抄,对 1GB 级小机器有意义。
  • Go 1.28 的 HTTP/2 Parking:实测内存收益 — Go 1.28’s HTTP/2 Parking: Measuring Memory Savings。9/讨论(Lobsters)。把闲置的 HTTP/2 连接停到一边省内存,给了具体压测数字而不是路线图。
  • Pidgin 3.0 Alpha 4(2.98.0)发布 — Pidgin 3.0 Alpha 4 2.98.0 has been released。18/6(Lobsters)。GTK 3 重写拖了很多年,这一版仍标 alpha——协议插件生态没跟上,聊天场景本身也在缩。
  • NetBSD 新增类 Emacs 编辑器 atto — NetBSD adds a new Emacs-like text editor called atto。50/27(Lobsters)。基础系统自带编辑器又回到「小而够用」,比 vi 更友好,比 Emacs 轻得多。
  • 让音响用上 Google Cast — Getting Google Cast on my Soundbar。7/讨论(Lobsters)。逆向一个闭源音响的投屏路径,作者是 mjg59,硬件分析写得比结论有用。
  • 树上装的机器连上网页应用,让人远程敲木头 — Tree-mounted machines connect to web app to let users knock on wood remotely。51/23(HN)。装置艺术式的借口,底下藏着执行器加长连接的一套完整实现。
  • 让太阳能系统给自己的停电时段供电 — Turning a solar power system into its own backup。20/6(HN)。并网逆变器在电网断电时会自我保护性关断,这篇讲的是怎么在合法范围内把它变成有用的备用电源,选电池与逆变器比选面板重要。

🧱 语言与工程实践

  • npm 上那个叫 estee 的包不是 testem 的错别字 — No, npm, “estee” is not a typo of “testem”。27/18(Lobsters)。作者被误判为依赖劫持,只能写文自证命名合法。这类误伤说明自动化的供应链告警需要更好的申诉通道,而不是让维护者写公开信。
  • curl 意外图灵完备了九个月 — How curl was accidentally Turing-complete for nine months。67/6(Lobsters)。💬 讨论把「意外图灵完备」从趣闻拉回风险:有人提醒反面是 weird machine——拿到不受信输入的人可以在你的机器上跑代码;有人指出字符串重写系统本来就极易图灵完备,大学该教的是「它不神奇,反而很难避免」;还有一句在等 doom 跑进 curl 8.16。
  • 检查空白字符有多难 — How hard is it to check for whitespace?。2/讨论(Lobsters)。Java 里的一次性能对照,结论是简单判断也能写出巨大差别——很适合拿去当基准测试的反面教材。
  • GCC 里的 switch 降低 — Switch lowering in GCC。5/讨论(Lobsters)。跳转表、二分、条件链各自怎么选,是编译器里少见的、可以完全讲明白的优化。
  • 界面要按功能设计,不按熟悉感设计 — Design the interface for functionality not familiarity。18/7(Lobsters)。macOS 界面习惯被反复推翻之后的一篇立论,例子具体,不给万能结论。

💼 公司与政策

🎮 轻度与文化

  • 我最喜欢的 PowerMac 是一台任天堂 Wii — My favourite PowerMac is a Nintendo Wii。196/50(HN);Lobsters 同题 51/1(Lobsters)。同样的 PowerPC 架构,把游戏机当老 Mac 用。这类折腾的价值在于它能逼出被文档省略的硬件行为。
  • 帕特里克·斯图尔特与皮卡德:什么是一个人的尺度 — Through Captain Jean-Luc Picard, Patrick Stewart taught us the measure of a man。125/67(HN)。纪念文章。讨论区回到了那集法庭戏本身:用一个不承认 Data 有自我意识的程序,来定义什么叫人。
  • 儒勒·凡尔纳失传的小说 — Jules Verne’s Lost Novel。51/12(HN)。一份没进正式书目的手稿被重新拼读,文本分析的部分比发现故事更有意思。
  • 纽约扒手指南 — A Pickpocket’s Guide to New York。40/6(HN)。职业视角的城市观察,重点是注意力经济里「谁在看谁」这一层。
  • 黑洞照片是怎么拍出来的 — How do you take a picture of a black hole?。73/58(HN)。把干涉测量讲得能读,58 条评论里补了不少阵列标定的现场细节。
  • AO3 因维护下线 — AO3 Down for Maintenance。57/7(HN)。一个非营利站点停几小时就能上首页,说明这类基础设施的用户黏性从来不是靠商业模型。
  • 狐狸到底在说什么 — What the fox say?。63/13(Lobsters)。💬 一篇讲狐狸与羊的桌面游戏的不对称性,评论区比正文更好看:有人小时候管它叫狼,还搬出祖母「羊方必胜」的说法,顺手估出状态空间不到 2^40、能暴力求解;作者回了一条——他只有终端里的调试接口,没做网页版,既然有人想要可以去写。
  • 最古老的冰在消失,石器时代从冰里露出来 — The oldest ice disappears and the Stone Age emerges from it。48/14(HN)。冰川融化让保存了几千年的狩猎器物露出地面,也让它们暴露在腐烂里。
  • 智能家居里的智能音频(2021) — Smart audio for the smart home (2021)。3/1(Lobsters)。老文重上,讲的是「智能音箱」这个品类的音频能力为什么一直在退化。
  • 一种傲慢的杀法(2016) — An Arrogant Way of Killing (2016)。17/7(HN)。长报道重提,叙事结构常被拿来当范本。

📌 今日总结

今天真正的问题只有一个:信任的边界已经挪到了构建与分发环节,而负责通知下游的那一层还不存在。扩展市场的一次写权限、多租户平台的一条环境变量接口、CDN 的一个状态页,各自都是独立事故,合起来是同一条供应链上几处没人值守的接口。

必读三篇按顺序:Claude Code 扩展被投毒的 HN 讨论串(含 Anthropic 的现场定性与自查命令,比公告清楚)、Northflank 帖下那份九月以来六起 SaaS 入侵的清单(理解这批攻击的密度)、以及 AI 让 SRE 退化的讨论(自动化与人的判断力之间那笔账,今天是它被算得最认真的一次)。

横向信号两条。一条是多租户基础设施的密钥托管模型正在被系统性试探,从 CDN 到 PaaS 到 CI 全在名单上,而防御方的共识答案听起来很反直觉——让平台自己也读不到客户密钥。另一条是「确定性」在今天的多个语境里同时出现:有人要把 NES 压进权重、有人讨论 curl 意外图灵完备带来的 weird machine、有人在算补丁空窗被压缩了多少小时,问的都是同一件事——这个系统明天会不会给出和今天一样的答案。