四年
先从代价说起,因为它是真实的,没有任何比较能够抹掉它。
在将近四年的时间里,30,000 多个自托管 Gitea 部署把自己的私有容器镜像交给了任何开口索要的人。CVE-2026-27771:容器仓库对标记为私有的镜像没有强制执行认证。一个标准的、匿名的 Docker 或 OCI 拉取请求发往仓库 API,就会拿到镜像。不需要凭据。不需要利用链。只是一个请求,被应答了。
英国安全公司 Noscope 在 30 多个国家的医疗、航空航天和 ISP 基础设施中发现了暴露的实例。在有人出于披露意图注意到它之前,这个缺陷在明面上摆了好几年。
四年是不可接受的。本刊在这一轮的前几期里一直在论证,自托管、用户掌控的那一层,是中心化厂商管线与平台保管者的反制——而诚实的说法是,首先说,也不加缓和地说:自托管层不是魔法。它带着一份纪律负担。它带着一种潜伏期风险。对生产环境蓝图长达四年的未认证读取,恰恰是一个用户侧论点的批评者会拿来指的那种失败,而这位批评者指得没错。
所以本期以自己这一层最难看的样子开场。
然后把论点重新挣回来——不是靠否认那四年,而是靠提出这四年所要求的那个问题:跟什么比,以及接下来会怎样。
因为 Gitea 故事余下的部分,正是厂商管线拿不出来的。缺陷是被 Noscope 的自主渗透测试智能体发现的。维护者分配了 CVE 编号并发布了修复——Gitea v1.26.2——时间是 5月20日,赶在 5月25日的公开披露之前。发布说明为发现者署了名。披露点名了 Forgejo,即共用同一套仓库实现的社区分支,说它同样存在漏洞,好让它的运营者也能打补丁。
四年的潜伏。几天的修复。披露时标记了分支,署上了发现者。
这个配对就是本文。
那份蓝图
要理解为什么一个容器仓库缺陷够得上头条而不只是一条脚注,你得先明白容器镜像是什么。
容器镜像是一个应用及其运行所需一切的打包、可运行快照。实际上这意味着应用源代码、配置文件,以及——远比安全最佳实践所希望的更常见地——数据库凭据、API 密钥、内部服务端点和 TLS 证书,全都捆进一个对象里,而仓库会应请求把它交出去。
Noscope 的说法很精确:容器镜像是“一份生产环境的详细蓝图”。能拉取私有镜像的攻击者拿到的不是一个碎片。他们拿到的是地图。读镜像,收割凭据与拓扑,你就有了触达其背后活体基础设施所需的一切。暴露变成了一个入侵原语。
显而易见的反驳是:容器镜像本来就不该装着密钥——凭据应当放在密钥管理器里、运行时注入,而不是烘进镜像。这是正确的最佳实践,而它被不断违反,恰恰就在 Noscope 扫描浮现出来的那些医疗、航空航天和 ISP 部署里。这就是那份纪律负担,直白地说出来:自托管层奖励熟练的运营者,惩罚粗心的运营者。把密钥挡在镜像之外的运营者暴露得更少;把密钥烘进去的运营者则把钥匙一并交了出去。但即使是一个完全不含密钥的镜像,它仍然是一份蓝图——源码、结构、依赖、端点——而一份生产环境的蓝图,本身就是攻击者的资产。
这个缺陷把 30,000 多个部署的蓝图变成了匿名下载。持续了四年。
被找到,被修好
要紧的两个数字并排摆着:大约四年的潜伏,和几天的修复。
补丁——v1.26.2——在 5月20日发布。公开披露在 5月25日。修复先于披露,而这正是负责任披露本应遵循、却常常做不到的顺序。等到这个缺陷成为公开知识时,修复已经通过运营者原本就在用的同一条更新渠道摆在了每一位运营者面前。
书面记录是公开且可审计的。CVE 已分配并编号。发现者——Noscope——在发布说明里被署名。下游分支——Forgejo——被点名为共用了那套有漏洞的实现,好让它的运营者能够行动,而不是日后才发现自己暴露了。任何人都可以读那次提交、读发布说明、读披露文本,并核验时间线。
这里有一个真实的残余风险,必须说出来:补丁只保护那些应用了它的运营者。那 30,000 多个部署里会有一部分在数周或数月里保持未打补丁状态,而这条未打补丁的尾巴是一个真实的问题,也是一次纪律失败。但一条未打补丁的尾巴与一个不存在的补丁之间,有着决定性的差别。Gitea 的修复存在,可以拿来用。还没应用它的运营者,有一条修复路径在那里等着。本周并不是每一个缺陷都能这么说——而这个对比就是下一节。
潜伏与修复
评价开放层的错误方式,是只看潜伏期。按那个度量,四年就是定罪,对话到此结束。
正确的方式是潜伏与修复,从四个维度看:缺陷一旦被知晓,修复来得有多快;如果无人处理,失败会持续多久;衍生品与下游是否透明;以及被暴露的一方对自己的修复是否有任何能动性。在这四条上,本周都提供了对照。
速度与持续性。CVE-2008-4250——一个微软 Windows 缺陷——在 5月20日被重新加入 CISA 的已知被利用漏洞目录,与 Gitea 披露同一周。它在补丁存在整整 18 年之后仍在被利用。厂商发布了修复;被利用群体的潜伏期是以将近二十年来计的。Gitea 的潜伏是四年到被发现、几天到被修复;CVE-2008-4250 的潜伏是 18 年且还在继续,修复早已可得,被利用的尾巴却依然存在。
不存在的修复。微软 Exchange Server 的 CVE-2026-42897 带着一个联邦文职行政部门修复期限,就是今天 5月29日。没有永久补丁。联邦文职部门是靠缓解措施而不是靠修复来“达成”期限的,而这已是被活跃利用的第 15 天。这正是今天装上 v1.26.2 的那位 Gitea 运营者的反面:被 Exchange 绑住的机构无法应用一个并不存在的修复。期限到了;修复没到。
衍生品的透明度。Gitea 被打补丁时,Forgejo——那个分支——被公开点名共享了这个缺陷。闭源产品没有一张可供据以披露的公开分支图;专有供应链中的下游暴露,在被攻破之前都是不可见的。开放层在衍生品上的透明度是一种结构性属性,不是一种客气。
用户能动性。ShinyHunters 对 Canvas/Instructure 的入侵暴露了约 2.75 亿条记录、约 8,809 家机构——Canvas 大约占据北美高等教育学习管理系统市场的 41%。那份数据集里的学生、教师和教职员工没有任何修复路径。他们从来就不掌控那套部署;他们无法给它打补丁;他们无法把自己的数据收回来。一个自托管缺陷,掌控该部署的运营者可以修。一次 SaaS 入侵,则是单一保管者一次性丢掉所有人的数据,用户侧毫无救济。
这个比较的诚实版本必须让出那个显而易见的幸存者偏差反驳:一份公允的账本也应当呈现缓慢的开源修复和迅速的厂商补丁——微软本周为 CVE-2026-45659(CVSS 8.8)发布了 SharePoint 更新,而且是按时发布的。这里的主张不是开放在任何单一事件上都胜过封闭。这里的主张是关于结构性属性——可扫描的代码、公开的分支图、由运营者掌握的修复、同渠道一次性发放——开放层有,封闭层没有。正是这些属性,把四年的潜伏变成了一次数天完成、带着公开书面记录的修复,而不是一条 18 年的尾巴,或者一个背后没有补丁的期限。
而那个关于可及性的反驳同样真实:大多数人无法自托管,所以运营者能动性这个优势对他们来说是理论上的。确实如此。潜伏与修复这个度量,对那些确实在自托管的运营者、平台和基础设施才有意义——按 Noscope 的说法,这里面包括扫描中出现的医疗、航空航天和 ISP 部署。这个框架讲的是运行这一层的人所背负的纪律负担,而不是在主张它普遍适用。
开放层公开地失败。这是代价——它的失败是可见、可扫描、可被找到的。这也是反制:可见的失败会被修好,很快,在公开场合,标记出分支,署上发现者的名字。
双刃
Gitea 故事里真正新鲜的事实不是那个缺陷。是那个发现者。
一个自主渗透测试智能体,通过大规模扫描开放层,发现了一个此前未知的漏洞。不是一个匹配特征码的已知 CVE 扫描器——而是一个探索型智能体,它在一个已经把这个 bug 发布了四年的仓库实现里,找到了没有人编目过的东西。Noscope 的说法描述的是智能体做发现、公司做披露;除此之外的机制细节是他们的,不是我们能拿来做基准的。
值得驻足的是那个推论:隐匿性已死。四年的潜伏发生在这样一个年代——要在一个中等流行度的开源仓库里找到一个未知缺陷,需要一位人类研究者主动选择去看。智能体年代取消了这项要求。摆在明面上的代码会被扫描——全面地、廉价地、持续地。
这是双刃的,而其中的推理是直白的而非报道来的:让 Noscope 找到这个缺陷的那种自主扫描能力,攻击者同样可得。没有任何报道称有敌对智能体找到了这个特定缺陷——这次披露是 Noscope 的。但这种能力并不专属于防守方,而一种能找到一个未知缺陷的能力,也能找到别的。这场赛跑是在友方智能体的发现—披露与敌方智能体的发现—利用之间进行的。
这就是为什么运营者手里的那个变量是打补丁的节奏。发现的时延如今有一部分不在运营者手里——不管是友方还是敌方,智能体都会按它们自己的时间表、而不是运营者的时间表,找到一切可被找到的东西。而打补丁的时延完全在运营者手里。在智能体年代,修复发布到运营者应用之间的这段时间,是主导性的安全变量,因为它是运营者能控制的那一个。开放层同渠道、所有运营者一次性到位的发布模式,就是为快速采纳而生的。运营者是否使用它,则是那个纪律问题,而它现在是最要紧的问题。
“AI 让开放层更安全”是乐观的读法,而它对了一半:友方智能体找到了这一个。另一半是,自满如今是致命的,因为敌方智能体也在扫描。结论不是安全。结论是以智能体的速度打补丁。
十四天,与一个没有补丁的期限
本周各机构的时钟并行地在走,而它们走的是相反的方向。
《外国情报监视法》第 702 条将在十四天后、也就是 6月12日日落。参议院要到 6月1日或 2日才复会。外国情报监视法院 3月17日的意见书仍然涉密;国家情报总监办公室表示正在“尽快”推进解密,但没有承诺任何日期。根据关于这份仍然涉密的意见书的报道——其中以《美国展望》的 Brent Skorup 为主——法院认定过滤工具的问题贯穿整个情报界:FBI 已在 2024 年停用了它当时使用的那款特定查询工具,但正在使用另一款具有相同功能的工具。参议院情报委员会主席 Tom Cotton 与副主席 Mark Warner 联署了致国家情报总监 Gabbard 与代理司法部长 Todd Blanche 的解密要求;Wyden 参议员一直是坚持要在重新授权表决之前公开这份意见书的最响亮的声音。
这与一个软件 bug 并不等同,也与伊朗的过滤网并不等同,本文把这几栏分开来算。美国有令状法,有一个写下了争议中那份意见书的对抗制法院,有为其解密进行谈判的国会监督,还有一个在报道这份涉密文件的自由媒体。共享的那条线索是狭窄的,也就按它的狭窄说出来:正如那个无法应用一个不存在的修复、被 Exchange 绑住的机构,也正如那个没有修复路径的 Canvas 用户,公众正被要求接受一个自己看不见的事实——那份 3月17日的意见书——以及一项自己无法控制的查询能力。
厂商期限那一叠加强了这个对比。Exchange OWA 的 FCEB 期限今天到期,却没有永久补丁。CISA 给了联邦机构四天时间去加固正被活跃利用的 LiteSpeed cPanel 插件。SharePoint 的 CVE-2026-45659 拿到了它的更新——那个确实存在的修复。微软 Defender 的一对零日,CVE-2026-41091 与 CVE-2026-45498,带着 6月3日的 FCEB 期限,还有五天。
贯穿其中的那条线:被暴露的一方,赛的是别人的时钟。被 Exchange 绑住的机构赛的是一个还没被写出来的补丁。§702 之下的公众赛的是一次没有日期的解密审查。今天装上 v1.26.2 的那位 Gitea 运营者也赛了一次时钟——而且跑完了,因为修复存在,渠道也把它送到了。这就是开放层的问责性所买来的差别。
保管者的失效模式
本周的几起数据泄露是头条故事的 SaaS 反面——中心化保管者一次性丢掉所有人的数据,用户侧毫无救济。
Canvas/Instructure。约 2.75 亿条记录、约 8,809 家机构,其中包括哈佛、斯坦福和加州大学伯克利分校,平台占据北美高等教育 LMS 市场约 41%;ShinyHunters;5月中旬支付了赎金。就本期的论证而言,定义性的特征是不存在用户修复路径。一个自托管的 Gitea 运营者今天可以拉取 v1.26.2 把洞堵上。Canvas 数据集里的那 2.75 亿人什么也做不了。他们没有运行那套部署,无法给它打补丁,也无法把被拿走的东西撤回来。中心化在奏效时是防御的乘数,在失效时是进攻的乘数:一次入侵,所有人暴露,个人毫无救济。
Silent Ransom Group。FBI 在 5月26日至 27日发布的 FLASH 警报警告称,这个犯罪敲诈团伙——Luna Moth、UNC3753,属于犯罪团伙而非国家行为体——正在以社会工程手段瞄准律师事务所,并升级到实体现场:钓鱼邮件、假冒 IT 回拨、远程桌面会话,而当这些都不奏效时,就派一名行动人员走进办公室插上一个 U 盘。泄露站点上已有 38 家以上的事务所,估计总数超过 100 家。这是攻击方一侧对“没有被强制执行的管控”的押韵——人的周界与 Gitea 仓库有着同样的缺口,一项根本没有做的检查。
Carnival。约 600 万人,5月28日确认。这是同一种保管者失效模式的紧凑范例:一个持有者,一次入侵,数百万人暴露。
承受层:今天的管控
国家管控层在协议栈的每一层都在继续,而用户侧的反制恰恰在国家掌握着设备或登记库的那些层用尽了。
运营商层——伊朗,恢复第 3 至 4 天。如本刊 5月28日那一期所记录的,伊朗的恢复峰值约为断网前水平的 40%,过滤网仍然完全启用,用于永久限速的中国深度包检测硬件已经就位。恢复不等于回归。这是一个指路标;论证不在此处重打一遍。
登记层——墨西哥,CURP Biométrica。距 6月30日的期限还有 32 天;登记率仍低于 10%。这是用户侧论点诚实的边界:面对一个被强制的生物识别登记库,不存在任何客户端原语,能让一个人既遵从又保留。对一个强制登记库的反制是政治的和法律的,不是密码学的。用户侧协议栈在这里用尽了,而把这一点说出来,本身就是用好它的一部分。
广播层——尼日尔第 21 天;布基纳法索第 24 天。对国际媒体来源的压制仍在继续。反制是抗审查的分发与抗深度包检测的传输——按上一期的教训,预先部署好。
设备层——香港,《国安法》。被强制的解密正在实操化。端到端加密保护一条消息不被平台披露;它保护不了一部机主已被依法强制解锁的手机。设备层的反制是加固过的操作系统、操作安全,以及尽量减少设备上所持有的东西——这被表述为一个边界,而不是被糊弄过去。
协议管线:逐层反制
本周的管线,恰如其分地,以开放层的快速修复领衔。
自托管层。Gitea 与 Forgejo v1.26.2——代价与反制在同一行里。这个缺陷是本期自身对潜伏期风险的证明;当天就可得的补丁则是对问责性的证明。
金融层。Monero 的 FCMP++ Trail of Bits 审计在 5月22日结束——报告待发,主网启用取决于整改情况,而不是“审计无问题”。Zcash 的 NU7 测试网在 5月22日上线。公开审计的问责性,是 Gitea 披露在金融层的押韵:发现公开,修复设卡,书面记录公开。
通信层。Discord 的 DAVE 端到端加密继续向大约 2 亿月活用户推开;Signal 的稀疏后量子棘轮(Sparse Post-Quantum Ratchet)继续迭代。香港那条边界在这里同样适用:端到端加密守的是通道,不是被强制的端点。
网络与传输层。Tor Browser 15.0.14;URnetwork 点对点覆盖网络;抗深度包检测的传输——VLESS+Reality、Shadowsocks-2022——用于上一期所描述的那些限速环境;价值层上的 Bitcoin BIP324 v2 与 BIP352。
设备层。GrapheneOS 2026050900 与 CalyxOS 7.2.1.0 仍是加固基线。
底层。ML-KEM、ML-DSA、SLH-DSA;FIPS 140-2 的日落在 9月21日到来。
这条管线所要求的诚实让步:它同样依赖机构。Tor 的资助、Monero 的审计公司、Zcash 的基金会。存活下来的那条更窄的主张,是本系列一直坚持的那条——这条管线不会围着任何单一国家的日历压缩,而这些原语一旦发布,就在用户的设备上运行,与中间人无关。
预先部署,并打补丁
本周的两个教训,是同一份纪律的两半。
在管控落下之前,把原语预先部署好。这是伊朗的教训,来自上一期:在那 88 天的断网中保住接入的人,是那些在网络关闭之前就配置好了 Starlink、mesh 和翻墙工具的人,因为绕过限速的工具,住在限速的另一侧。
以及,以智能体的速度给原语打补丁,好让它不至于变成暴露面。这是今天来自 Gitea 的教训:用户掌控的自托管层,只有在运营者以纪律去运行它时才算得上反制,因为对生产环境蓝图长达四年的未认证读取,就是开放层里的粗心长成的样子,而智能体年代保证了摆在明面上的东西一定会被找到。
任何一半单独都不成立。只预先部署而不打补丁,你搭好的原语就变成那个洞。只打补丁而不预先部署,你在管控落下时对够不着的工具保持着纪律。用户侧协议栈不是魔法,而本期就是它自己的证明——那四年的潜伏就是代价,先说出来,也不做淡化。答案是潜伏与修复加上纪律,不是否认。
四年是代价。
公开地失败、快速地修复、标记出分支、为发现者署名,并把一条真实存在的修复路径交到运营者手里——这正是那条 18 年的尾巴、以及那个“期限撞上今天没有补丁”所不具备的反制。
开放层公开地失败。并且快速地修复。
预先部署,并打补丁。
URnetwork 是一个用于抗审查传输的点对点覆盖网络,设计上用于抵抗网络层的深度包检测。2026 年 2 月 19 日发布的 MCP 服务器让智能体客户端可以在这张点对点覆盖网络上建立 VPN 会话,把传输从运营商层抽象出来。URnetwork 的代码是开放且可审计的——而这正是本期所论证的那种属性:它既暴露出一层的缺陷,也让这些缺陷被修好。
https://ur.io