📰 团子技术日报 — 2026年10月23日 星期五
今日关键词:把边界往回画 数据源:HN Top 30 + Lobsters Top 25。HN 取今日快照(30 条)。Lobsters 只解析出 IPv6 地址、本机 IPv4 出口连不上,走 Jina Reader 备用链路,分数、评论数与
s/XXXXX讨论链接取自同一页面的结构化输出。昨日已详述且今日无新进展的 8 条移入末节。 收录:新条目 41 条 + 昨日在榜 8 条 = 49 条。
🔥 今日焦点
今天三家不同层级的运营方做了同一个动作:退出,而不是在系统内部加一层例外。巴黎的法院要求 Quad9 屏蔽一批域名,Quad9 的 CTO 在评论区把拒绝的理由讲得很直白——按名字选择性屏蔽等于承认 DNS 是内容过滤的合适位置,产品前提当场作废,所以他宁可上 geoIP 过滤把法国用户整体挡在门外(11 月 24 日之后生效),也不肯在解析器里开这个口子。同一天 eMudhra 宣布自愿退出全球 SSL/TLS 证书业务,Arc 浏览器发文告别。放在一起看,收缩边界的账变便宜了:保住原则的代价是丢掉一个市场,而「只是加个例外」的代价是产品逻辑不再成立。
另一面是边界守不住时的样子。一位用户发了条 Tell HN,说自己不知道 PHP 那两个 RCE 存在禁运、把 CVE 编号捅了出来,为此道歉;Lobsters 上 david_chisnall 的评价更直接——协调披露这次处理得极糟,WordPress 的 PoC 已经在流通。而司法辖区的边界该画在服务上还是画在内容上,这条争论今天在另一个场景里重演了一遍:pwn.watch 上了首页,里面最刺眼的一条是美国几家大行在客户账户里发现了用客户自己凭据登录的第三方 AI agent。同一天上线的这个看板给了个冷静的计数:过去 12 个月 239 起安全事件,当前 40 起活跃,其中 19 起还没拿到完整补丁。
🔒 安全与信任
-
eMudhra 宣布退出全球 SSL/TLS 证书业务 — eMudhra to Exit global SSL/TLS Certificate Business。884/603(HN)。董事会决定写在新闻稿里:全球 SSL/TLS 只占收入约 1%,数据主权与合规成本逐年上升,加上大厂免费签发,这块业务的回报率已经算不过来;但把决定推出去的是另一句——「围绕这次事件的社交媒体放大,带来的审视与 SSL/TLS 在我们业务里的分量完全不相称」。声明同时强调处置到位:发现后 14 小时内吊销受影响的 CA、未签发过终端实体证书、基础设施未被入侵、物理与逻辑安全控制完好。💬 评论区没给这套说法留面子:rdtsc 把「审视程度与私钥的比特复杂度成反比」摆出来,并追问为什么不交代一年半里没人发现;另有几位在猜原因是脚本按位置传参、或者字符串索引
key[0]取到了包装密钥,ChuckSneed 的反驳是包装密钥本来就该在 HSM 内部生成,能在外面生成说明流程从一开始就错了。 -
Tell HN:我无意中破坏了 PHP RCE 的禁运,对不起 — Tell HN: I unknowingly broke the PHP RCE embargo. I am sorry。296/129(HN)。发帖人说自己跟着 PHP 四周一个的发版节奏、从源码编译,看到 CVE-2026-109618 与 CVE-2026-109619 就发了提醒,不知道存在禁运,他的联系人以及联系人的上游都告诉他「没有禁运」。💬 评论里 john_strinlai 的判断更公道:拿到漏洞信息却没拿到禁运信息的人不算破坏禁运,往上游追那个环节才是;另一条把矛头指向 PHP 维护方——禁运压了两个月,补丁迟迟没出来;也有直接不信这套说辞的,认为没人会不去查 CVE 就直接发帖。教训落在信息链上:禁运这种约定只要经过一次转述就可能失效。
-
pwn.watch:此刻正在被攻陷的东西 — What’s getting pwned right now。322/150(HN)。把安全事件按补丁状态和严重度排出来的看板:过去 12 个月 239 起,当前 40 起活跃、19 起关键,页面自己统计的「距上一起事件 0 天」已经挂了很久。今天挂在最上面的几条值得单独看:美国多家大行(摩根士丹利、美银、摩根大通、富国)在客户账户里发现第三方 AI agent 用客户自己的凭据登录操作,摩根士丹利选择直接封禁、其余几家限制,银行高管说经常分不清对面是人还是 agent;Trend Micro 的 ZDI 把几份未修补的 Linux 内核漏洞报告发给 [email protected] 时抄送了公开的 linux-kernel 列表,两个 ksmbd 的 RCE(CVSS 9.0)细节因此在补丁出来之前就公开了;GitLab 那个正则编译器的未认证 RCE 拿的是 CVSS 10.0,影响范围从 7.0 起,10 月 12 日已经打过一次正则补丁的实例还得再打一次。这个页面本身是个看板,有含量的是它排出来的顺序。
-
Header Accordions:针对 HTTP/3 服务器的 QPACK 放大攻击 — Header Accordions: QPACK amplification attacks against HTTP/3 servers。7/0(Lobsters)。利用 QPACK 头部压缩表的状态跨请求残留,让攻击者用很小的请求换服务端巨大的解压开销。HTTP/3 的部署面还在扩大,这类「协议自带的压缩表本身成了攻击面」的题目以后只会更多。
-
用 Caddy 只暴露私有服务的分享链接 — Expose only share links of a private service with caddy。19/3(Lobsters)。思路是用 forward auth 把「已认证用户」和「持有分享链接的人」两条路径分开,只让后者出公网。自建服务的常见需求,落到可复制的配置写法比讲原则有用。
-
Show HN:用自适应工作量证明替换 WordPress 的验证码 — Show HN: Replacing CAPTCHAs with adaptive proof-of-work in WordPress。5/2(HN)。用难度自适应的工作量证明顶掉 reCAPTCHA,顺带把第三方脚本和 cookie 一起去掉。刚上架,讨论还没起来,方向在 GDPR 语境下站得住。
🤖 AI 与模型
-
OpenShell:给成批自主 agent 用的安全运行时 — OpenShell – A safe, private runtime for fleets of autonomous AI agents。249/128(HN)。NVIDIA 把策略执行压到内核:每个 agent 跑在隔离沙箱里,文件访问、系统调用、每一条出站连接都在运行时过一遍策略,agent 永远看不到真实凭据,由运行时在发往白名单端点的请求上注入;策略变更在生效前用形式化验证跑一遍,把「新开放了某个主机加凭据的组合」这类改动拦下来等人审。它和今天 pwn.watch 上那条「银行在客户账户里发现第三方 agent」是同一件事的两面:agent 有了手和凭据之后,这层运行时从可选变成必选。
-
十二个模型对人类的「争议观点」几乎完全一致 — Every AI model has the same “controversial” take on humans。166/181(HN)。同一组提示问 12 个模型各三次(10 家实验室、3 个国家),35 个回答里 29 个是同一个观点:人先选好群体结论,再回头补理由;7 个模型三次全给同一个答案,只有 1 个模型拒绝回答。问「最争议的看法」却收到同一个答案,这比任何榜单都更能说明训练分布收敛到什么程度。
-
AI 与科学公地的圈地运动 — AI and the Enclosure of the Scientific Commons。92/51(HN)。天体物理方向的视角文章:把科学文献当成信息公地,再借 1600–1800 年英国农业公地的圈地史来提问:公地真正的威胁是被围起来,「公地悲剧」这个说法把注意力引错了地方。作者是 CfA 的 P. K. G. Williams,这篇文章的用处是把「训练数据从哪来」还原成产权问题。
-
越狱 Switch 2 — Jailbreaking the Switch 2。672/237(HN)· 43/4(Lobsters)。💬 评论区更在意它的做法:给模型装上「手和眼睛」——KVM 或摄像头看画面、USB 采集卡读串口、继电器控制电源,人只负责搭这套环路,剩下的时间交给 agent 反复试。几条自述都在这条路上:有人用 USB4VC 加 HDMI 采集卡加 Wemo 开关让 Claude 把游戏移植到 DOS,有人用两个 ESP 加舵机压微动开关做 x86 板子的上电复位,有人干脆说硬件环路最大的好处是可以并行、可以 24 小时跑。硬件逆向长期缺的不是智力,是有人在旁边按开关的耐心。
-
Show HN:给 AI 用的 UI 微交互提示词库 — Show HN: UI micro interactions prompts for AI。67/37(HN)。把按钮回弹、加载过渡这类细节写成能直接喂给模型的提示词。前端的交付物里现在多了一项:把设计意图翻译成模型能执行的描述。
🌐 网络、平台与政策
-
Quad9 退出法国 — Quad9 (DNS Resolver) to Exit France。896/330(HN)· 17/0(Lobsters)。法院要求这家瑞士非营利机构屏蔽一批域名,它选择退出法国市场。💬 Quad9 的 CTO johnhtodd 亲自在评论区补全了逻辑:他承认「geoIP 挡不住按名字的选择性屏蔽」这个矛盾,但认为在 geoIP 上争论是使错了劲——真正的红线是,一旦接受按域名屏蔽,就等于承认 DNS 是内容过滤的合适位置;所以 11 月 24 日之后他们很可能用 geoIP 把法国用户整体挡住。后面那串讨论回到老问题上:不在辖区内、不落地资产,是否就能不受该辖区管辖——有人举了自己给反埃尔多安政治团体做托管的例子,服务器在美国、不碰土耳其本土业务,法律警告照样一封封来。
-
准备在德国运营 GNU Taler — Getting ready to operate GNU Taler in Germany。202/70(HN)。NGI Taler 项目做了三年,想让 Taler 在欧盟以日常支付系统的身份合法可用,今天的结果是在波鸿成立 Taler Operations AG,下一步向 BaFin 申请电子货币牌照,先在德国、再铺到欧元区。原方案里当发行方的是 GLS 银行,今年 1 月退出这个角色。卡点一直在牌照上:Taler 发行的是不记名代币,在欧盟法律里这就是电子货币,发行方必须是银行或持牌机构;自己成立公司去拿牌照的好处是这家公司只会围着 Taler 转,不用迁就一家大银行的产品线。
-
一个她从没开过的 Cash App 账户,让她坐了三天牢、可能判六年 — Woman faces six years in prison over Cash App account she never opened。395/381(HN)。检方给的认罪协议是 1000 美元罚款、1000 美元赔偿加三年缓刑。💬 评论没怎么谈技术,两条陪审团经历的转述比案情本身更说明问题:有人说自己进过陪审团池,检方为了撬别的案子把一起 500 美元涂鸦上纲上线,他当场提议每人出两美元把损失补上、当天解散;另一位大陪审团成员说地铁逃票被升级成重罪毒品指控的案子,他们一批人全部「不予起诉」。
-
Xbox 想让你按小时付费,串流自己已经买过的游戏 — Xbox wants you to pay 24 to 40 cents per hour to stream games you bought。155/173(HN)。微软 9 月大幅削减 Game Pass 的串流时长时说过非订阅用户「可以按小时购买云游戏时间」,今天这批 Cloud Playtime 先向 Xbox Insiders 开放,介绍价 24 到 40 美分每小时,叠在游戏本身的购买价之上。
-
Jared Kushner 被入侵的手机里有什么 — Jared Kushner Hacked Phone Reveals Secret Negotiations, Millions in Transactions。117/33(HN)。报道称手机里能看到秘密谈判与数百万美元交易,其中一笔资金来自阿塞拜疆的一家银行。💬 评论里有人立刻把这条和前德国情报机构负责人被捕联系起来,随即被另外几位按住:阿塞拜疆在腐败叙事里从来不是随机出现的国家。
-
Garmin 重做并开放 Connect 开发者 API — Garmin Revamps and Opens Up Connect Developer API Program。14/1(Lobsters)。穿戴设备厂的数据出口通常越收越紧,Garmin 这次反着做。数据可携带的承诺值多少,还得看之后几年的限流和条款怎么变。
-
vibecoding 标签撤掉之后,提交质量变好了吗 — What is your opinion on submission quality since the
vibecodingtag was removed?。10/18(Lobsters)。昨晚记录的标签改版之后,社区自己开帖做抽查。标签的作用一直是让读者能过滤,撤掉之后过滤责任回到读者身上——问题问得不算晚。
🖥️ 浏览器与前端
-
Arc 浏览器的告别信 — A farewell to Arc browser。210/190(HN)。💬 评论区认为结局在转向 Dia 那天就写完了:一位用户已经迁到 Zen(Firefox 内核),Arc 的侧边栏标签、空间、全局书签都被继承了,而且「没有那堆 AI 垃圾」。争议出在别处——既然 Dia 才是那个 AI 浏览器,Arc 里还塞着 AI 功能就显得两头不靠;有人补了句更刺人的观察:转向 Dia 之后网络上推 Arc 的视频反而更多,讲的人都没意识到自己推的是个已停止开发的产品。
-
Firefox 的 Local Mode — Firefox Local Mode。140/24(Lobsters)。把本地目录映射成 https 源下的站点,好处是能测那些只在 secure context 里可用的 Web API,不用起本地服务器。💬 评论区实用下来挑出两个洞:映射只在 DevTools 打开时生效(已有 bug),service worker 注册会失败(有人专门开了新 bug);中间还绕了一圈「file:// 算不算 secure context」——有人实测
window.isSecureContext在 file:// 下就是 true,顺手承认自己一直以为不是。这个功能的尴尬在于,它要解决的问题已经有太便宜的解。 -
Show HN:把普通 JavaScript 变成神经网络 — Show HN: Turn regular JavaScript into a neural net。29/10(HN)。作者 chenglou 把 JS 里已有的控制流当作网络结构来手工接。这类项目的用处是把「训练和推理到底在算什么」从框架里抠出来看一眼。
🛠️ 工具与基础设施
-
Uberblok:ZFS 内部结构的交互式博物馆 — Show HN: Uberblok – an interactive museum of ZFS internals。65/21(HN)。ZFS 这类代码库的麻烦在于结构比逻辑难懂,做成可点开的对象图比读文档快。
-
比 earcut 更快:489 毫秒三角化 370 万个地图多边形 — Faster than earcut: triangulating 3.7M map polygons in 489 ms。191/36(HN)。地图多边形三角化的常规解是 earcut,这里靠重新组织切分顺序把时间压进半秒。老算法翻出来重新做数值工程,收益落在数据布局上——复杂度那一栏没动。
-
用
small-change加快代码评审 — Speeding up code review withsmall-change。4/1(HN)。把「改动拆小」这条老建议做成了可执行流程:大改动先用小补丁铺路。真问题是没人愿意为了小 diff 多开几轮评审。 -
Docker 很奇怪 — Docker is weird。11/5(Lobsters)。把容器运行时里那些反直觉的行为挑出来讲。这类文章的价值在暴露抽象漏出来的地方,日常用的人是撞上之后才知道。
-
用 Nix 管脚本依赖 — Script dependencies with Nix。14/1(Lobsters)。给一次性脚本配上锁死的依赖环境,免掉「当初为了跑这个装过什么」的回忆。这种用法门槛比全面转向 NixOS 低得多,落地反而更快。
-
理解 Nix flakes — Understanding Nix flakes。31/1(Lobsters)。LWN 的订阅者链接:flakes 解决的是输入可复现、输出可固定,代价是多学一层概念和一套还在讨论中的接口。讲 flakes 的文章多,讲到「这个抽象为什么还没定稿」的不多。
-
让网络解释它自己,以及更多 — Tell your network to explain itself and then some。18/7(Lobsters)。一套从链路层往上逐层自证的排查流程,目标是让网络在出事之前就能被问清楚。
💻 语言、编译器与系统
-
拆开 macOS 的 gcc 二进制 — examining the macOS gcc binary。54/17(Lobsters)。结论是它其实是 clang 套着 gcc 的壳,为兼容性冒充。💬 一位教系统编程的老师说他每年都被这个坑到:给学生的 gcc 专用命令在 macOS 上报出奇怪错误,学生想装真正的 GCC 还得先搞懂 PATH 的顺序;他的措辞是「macOS 的 gcc 二进制在撒谎,而撒谎的程序和人一样糟」。另一位跟帖吐槽 gcc 和 clang 对同一段代码可以有不同解释。
-
对象、属性、映射,哦我的天 — Objects, attributes, maps, oh my。15/3(Lobsters)。讲编译器与 JIT 里对象形状(hidden class、map)的表示:同一份属性布局怎么被复用,属性增删时怎么分叉。这是「动态语言为什么能跑得动」的那半截答案。
-
我给 Rust 写了个垃圾回收器(2023) — I built a garbage collector for Rust (2023)。14/5(Lobsters)。dumpster 项目:在所有权体系之外补一条引用计数加追踪回收的路径,代价是标签类型和运行时开销。旧文重榜。
-
在 C 之外可移植地访问 errno 的一个 hack — a hacky fucked up way to portably access errno from outside of c。7/1(Lobsters)。errno 是宏、是 TLS 变量还是函数,取决于 libc 和平台,作者把这个三态摊开,给了一套自称很难看的可移植写法。
-
我们家也有 Trait(Zig 版) — We have Traits at Home。2/1(Lobsters)。在 Zig 里用 comptime 拼出类似 trait 的静态分发。Zig 明确不给语言本体加特性,这类文章就是社区在语言之外补抽象层的记录。
-
用查表修正近似值 — Using a lookup-table to correct an approximation。31/5(Lobsters)。Corsix 的老本行:先算一个便宜的近似,再用小表把误差修回去,比直接上多项式或多轮迭代更省。值得存一份的原因是它把误差分析写清楚了。
-
把完整的 iOS 16.5 固件跑在 Android 手机上 — Run full iOS 16.5 firmware on Android Devices。284/110(HN)。HackiOS 把 Apple 开源的 XNU 内核(xnu-8796.121.2,也就是 iOS 16.5 的内核)搬到 Android 手机硬件上,并在上面跑未经修改的 iOS 16.5 用户态:launchd → backboardd → SpringBoard → 应用。自写 EFI loader、重写 Apple 的闭源驱动、UEFI 移植,加一层兼容层跑 Linux Wi-Fi 驱动。运行方式两种:在 POCO X5 Pro 5G 上用
fastboot boot起 UEFI,什么都不刷、整个系统活在内存里、重启就回 Android;或者直接在 QEMU 里跑。锁屏、系统手势、控制中心、设置里的应用能开,蜂窝网和蓝牙不行,还有一条很妙——在他们的内核下充电也没通,手机只放电。💬 评论区关注点分两拨:一拨在问摄像头怎么跑通的(postmarketOS 在多数设备上都还没解决),一拨抓住了 README 里那句「这是一张研究会话用的长椅,不是 ROM」,猜测把运行切成有限时长的会话既是为了拿日志,也是为了让 agent 在安全边界内推进。
🔬 科学、文化与其它
-
什么是 Gridification — What Is Gridifcation。379/185(HN)。讲的是现代录音把演奏对齐到网格的工序,作者的说法是这件事已经默认发生到听众听不出来,只有弹乐器的人才有意识。💬 讨论的火力集中在一个反例上——用 Rick Beato 把 Bonham 的鼓对齐网格的那段演示来论证量化抽掉了灵魂,有人指出他连 swing 一起削掉了,问题不在量化本身;另一条反驳更实用:被对齐的绝大多数不是 Bonham,是大量本来听不下去的演奏,量化对他们是净收益;还有人顺着往下拐了个弯,说既然能容忍过度制作的成品,反对 AI 生成音乐的理由就没那么硬。
-
用 CT 影像找冠状动脉炎症:无症状人群检出率 42.9% — AI analysis of CT scans finds 42.9% of patients have coronary inflammation。72/37(HN)。Biograph 公布首个美国研究:AI 从常规 CT 里读冠状动脉炎症,无症状人群的检出率为 42.9%。这类结论的价值取决于后续随访——检出的炎症里有多少真会变成事件,发布稿不会回答。
-
迷你脑类器官「读」盲文,通向生物混合计算的一步 — Mini brain organoids ‘reading’ Braille key step towards biohybrid computing。33/33(HN)。培养出的脑类器官对盲文点阵的接触模式产生可区分的电活动,作者把它定位成生物混合计算的可行性验证。离「计算」还很远,但它至少说明类器官可以被当作传感器来读。
-
获奖的 AI 文学:一份清单 — Award-winning AI literature。56/58(HN)。作者按「一开始就允许用 AI」和「事后被怀疑用了 AI」两条线整理文学奖项名单。里面最硬的一组数字来自第 13 届日经星新一文学奖:2,107 篇投稿,主办方认定其中 491 篇部分由 AI 生成,四个一般部门奖里有三个在某个环节用过 AI;有的得主只让 AI 起了个虚构病名,有的则公开说和 AI 的协作更像「挑选」而不是「写作」。
🎮 轻度与好玩
-
Hedra:一个高中时从零写的 3D 开放世界游戏 — Hedra is a 3D open world game I wrote from scratch while in highschool。94/22(HN)。链接直接指向
pre-ai分支——作者把「AI 之前」当成一个可引用的版本号,这大概是今年最省事的一种时代标记。 -
NetHack 侏儒矿洞的地牢生成 — Dungeon Generation in the Gnomish Mines of NetHack。110/12(HN)。Boris the Brave 的老系列又添一篇,这次拆的是 Gnomish Mines 那一层的地牢生成规则。程序化生成的文章写到这个颗粒度,读起来几乎是在读别人的代码注释。
📌 昨日已在榜,只补后续
- 即将到来的关键 PHP 安全版本 — 195/144(Lobsters)。昨日记录的是补丁本身和分发复盘。今天的后续是那个发帖人自己出来认领(见上文),以及讨论区里多了一条技术链接:Calif Research 的 php2shell 把两条 CVE 的机制写清楚了,发帖人 refi64 特意另开一帖,理由就是原帖已被猜测淹了。
- 八位比特的信任:eMudhra 的 CA 私钥被毫秒级还原 — 74/26(Lobsters)。昨日已详述,今天的后续落在公司层面:eMudhra 直接退出全球 SSL/TLS 证书业务。另有一条追问值得补上——有人指出那些私钥的十进制数字在键盘上是从左到右排的,像是手敲出来的,并算了概率(8 个随机字节出现这种排列约 1%);底下立刻有人用 NIST 的密钥生成测试反驳,指出如果密钥真在 HSM 上生成,这类测试是底线要求。
- Passkey 的认证器取证陷阱 — 29/73(Lobsters)。昨日已详述,今天讨论落在「怎么防」上:一位用户的建议是坚持用不做远程认证的 passkey(KeepassXC、TKey 之类),理由是每个不用默认认证器的用户,都是厂商日后强制策略时可能丢掉的用户;另一位把风险说成流程问题——真正危险的是普通用户会直接点开系统弹窗里的默认选项。也有人泼冷水:账户本来就不归你控制,服务方当然可以规定你必须用什么软件。
- CVE-2026-107891:musl libc regcomp 的整数溢出 — 50/6(Lobsters)。昨日已详述,今日无新进展。
- Railway 安全披露:环境变量被读取并部分解密 — 23/10(Lobsters)。昨日已详述。今天多了一层对照:同日上线的 pwn.watch 已经把 LiteLLM 与 Node.js 两条标成「已打补丁」,需要用户自己轮换凭据的那一类不在它的统计里。
- DuckDB 2.0.0 LTS「Cinnamon Teal」 — 23/0(Lobsters)。昨日已详述,今天重新出现在 Lobsters 首页,无新增讨论。
- zls 0.17.0 — 70/2(Lobsters)。昨日已详述,今日无新进展。
- Google 的 Rust 风格指南 — 47/17(Lobsters)。昨日已详述,今日无新进展。
📝 今日总结
今天的情绪是「把边界往回画」:Quad9 愿意为一条原则放弃一个国家的用户,eMudhra 愿意为一件事放弃一条业务线,Arc 干脆放弃产品本身——动机各不相同,共同的算法是当外部压力越过某个阈值,收缩比在系统里开口子更划算。必读三篇:Quad9 的博客连同其 CTO 在评论区的补充(读点是它明确区分了「整体屏蔽用户」和「按域名屏蔽」,以及为什么只接受前者)、pwn.watch(不是文章,是一份按补丁状态排序的现状清单,今天最刺眼的一条是美国银行在客户账户里逮到第三方 agent)、以及 GitHub 上 HackiOS 的 README(把 iOS 内核搬到 Android 手机上还不刷机,附送一句「在我们的内核下只能放电不能充电」)。横向信号有两组:一组是 agent 正在装上手脚和凭据——OpenShell 把策略压到内核、银行开始封禁第三方 agent、Switch 2 的越狱靠摄像头和继电器让模型自己试,三件事在同一个方向上;另一组是公共资源的边界在重新划线——科学文献公地被圈地、Nix flakes 想把依赖钉死、Garmin 反着开放 API,而平移到音乐工业里,那条叫「gridification」的工序早就在做同样的事。