码农早餐 · 2026-09-26
今日头菜:伪造 1024 位 RSA 签名:1380 核年,不用分解模数。另有 4 条快讯:Go 1.27 实验性 SIMD:不用写汇编,向量化代码跨平台跑;ansi2html 一个 XSS,SourceHut 账号可被接管;等。
不分解模数也能伪造 1024 位 RSA 签名:1380 核年、五个自然月、2³² 次 oracle 查询,其中约 1200 核年是预计算。如果你把 RSA 签名 oracle 当成黑盒就安全,这个「午餐时间攻击」正是冲你来的。
伪造 1024 位 RSA 签名:1380 核年,不用分解模数
RSA 的安全性是建立在「分解大整数很难」这个假设上的,但一篇新论文说:这个假设可能被用错了地方。加州大学圣地亚哥分校和 Inria 的研究者实现了一个 2007 年 Joux、Naccache、Thomé 提出的老算法,在不分解模数的前提下伪造了 1024 位 RSA 签名。总代价是 1380 CPU 核年、跨五个自然月,外加 2³² 次 oracle 查询。其中大部分是预计算(约 1200 核年),预计算完成后,攻击者离线伪造任意一条签名只要 180 核年。作为对照,当前分解一个 1024 位 RSA 模数需要 50 万到 100 万 CPU 核年——也就是说,这条路比分解快了三个数量级。
真正值得写代码的人停下来看一眼的是它的威胁模型:所谓「午餐时间攻击」,攻击者只需要临时接触到一个原始 RSA 签名/解密 oracle,之后失去访问权限,仍能永久伪造该密钥的任意签名。论文用 HSM 当 oracle 完成了整个攻击,全程只是黑盒 API 交互,没有把密钥偷出来。RSA blind signature 方案天然提供同样的 oracle。按论文的外推,2048 位 RSA 在这条路径下只有 2⁹⁰ 的计算量、2⁴³ 次查询,而它通常被认为提供 112 位安全性;连 4096 位 RSA 也达不到 128 位安全级别。结论是:在有签名 oracle 的场景里,RSA 的实际安全强度比基于分解的估算低 15 到 30 位。

先别急着去翻自己的 TLS 配置。论文自己说了,这对大多数现代 RSA 部署不构成直接的运行威胁——你需要先让攻击者摸到那个 oracle。而且 1024 位签名早在 2013 年就被 NIST 禁止用于生成,现在主流是 2048 位。这条研究更像是在给「RSA 的账要提前还」补上一块经典密码学的证据:NIST 计划 2030 年弃用 RSA、2035 年禁止,转向后量子算法,而这篇论文的意思是,就算量子计算机不来,RSA 也该走了。
💡 主厨说:留意威胁模型里那个「临时」——它不是拿到密钥,是拿到一段时间的签名接口,之后离线无限次使用。所以真正该盘的不是密钥长度,是你的系统里哪些地方对外提供了原始 RSA 签名或解密能力。
来源:
Go 1.27 实验性 SIMD:不用写汇编,向量化代码跨平台跑
Go 1.26 给 amd64 上了 SIMD API,1.27 又补齐了 arm64 的 NEON 和 wasm,还往前迈了一步:一个完全可移植、不关心平台和向量宽度的 simd 包。以前想用 SIMD,只能写 Go assembly,而且只有真正性能敏感的 kernel 才值得这么折腾——结果就是大量本来能吃到向量化红利的代码,CPU 一半的宽度在摸鱼。
这个包的设计思路是「只做交集」。各家的 SIMD 差异大到离谱:wasm、PowerPC、s390x 固定 128 位,amd64 有 128/256/512 三档,riscv64 的向量长度在 128 到 65536 位之间飘、还只能是 2 的幂,arm64 一边是固定 128 位的 NEON,一边是 128-2048 位可变的 SVE。掩码也各玩各的:wasm、AVX、AVX2、NEON 干脆没有掩码寄存器,靠向量位运算凑;AVX512 和 RVV 有专用掩码寄存器;SVE 每个字节分配一位,但真正生效的是每个元素掩码的最低位。simd 把这些都藏起来,取所有平台的公共操作集,交集里缺的用其他 SIMD 指令做高效模拟,实在没有 SIMD 的平台就纯模拟,保证代码总能跑。
用法上,向量类型就是首字母大写的复数基础类型,simd.Uint8s、simd.Float32s 这种,通过 LoadFloat32s 从 slice 读、Store 写回。构建时加 GOEXPERIMENT=simd。现在支持 amd64 的 AVX/AVX2/AVX512、arm64 的 NEON、wasm 的 SIMD 指令。有两个坑得先知道:一是 1.27 还没有跨元素求和的公共操作,官方示例里只能把向量 store 回 slice 再手写循环加,ReduceSum 要等下一个版本;二是比较操作产出的掩码类型跟元素宽度绑定,Int8s 的比较出 Mask8s,类型系统里这套对应关系得自己捋清楚。
对写 Go 的人来说,短期不用急着改依赖——这是实验 API,GOEXPERIMENT 开关随时可能变。但值得留意的是方向:加密、数据处理、AI 推理这些计算密集的活儿,以前要么写汇编要么认命,现在有了一条「写一次、接近汇编性能」的路。想试的话,从 innerProduct 这种规整的循环下手最稳,先量一下 profile 确认热点真的在计算上,别把时间花在本来就不慢的地方。
来源:
ansi2html 一个 XSS,SourceHut 账号可被接管
SourceHut 的构建日志页面能被一段 ANSI 转义序列攻破。安全研究者 arusekk 在折腾 sr.ht 的打包流程时,顺手看了一眼 build log 的 HTML 源码,发现 ansi2html 这个把 ANSI 颜色码转成 HTML 的库,对 OSC 8 超链接的处理基本等于没处理。构造出来的输入长这样:\33]8;;https://example.com/"/autofocus/tabindex="1"/onfocus="alert\xss`\7Nothing to see here\33]8;;\7,它会被原样吐成 ——双引号闭合了 href,后面的属性直接变成 DOM 的一部分。另一条更省事:javascript:` 开头的 href 照样放行。漏洞编号 CVE-2026-92973。
要触发它,你甚至不需要有账号。往公开邮件列表发一个带 CI 的 patch,或者控制任何会被打印进日志的远程资源,就能生成一个 https://builds.sr.ht/~someone-else/job/1234567 的构建任务,谁点开这个日志页,payload 就在谁的浏览器里跑。日志页里本来就躺着 CSRF token,document.querySelector('[name=_csrf_token]').value 一取就有,配合那个「Resubmit build」表单,让管理员看一眼,权限的事就不用多说了。更值钱的是 builds.sr.ht 上挂着的 deploy key,其中包含 sr.ht 自己的。作者说得很克制:payload 怎么写留给你自己练,但别在生产环境上试,哪怕是你的生产环境。
修复分三层。上游 ansi2html 在 pycontribs 名下,仓库当时已经一年多没动静,作者提了 issue 又提了 PR。SourceHut 这边 Drew 直接给 builds.sr.ht 加了输出 sanitize,代价是现在日志里没颜色了——防住了,但也把功能一起防没了。作者建议的正路是收紧 CSP,先把 unsafe-inline 拿掉(不过日志页自己的滚动脚本就是内联的,这一步没那么好走),再把 ansi2html 重写成有状态的转换自动机。对写代码的人来说,这事有两层意思:一是只要你的 CI 会把外部输入渲染成 HTML,不管是日志、diff 还是报告,这就是同一个坑;二是那个一年多没人维护的依赖,出事时不会因为「它很基础」就自动安全。翻一下 lockfile 里那些「反正就转个格式」的小库,比等下一个 CVE 划算。
来源:
Avast 内核驱动双重读取漏洞:Windows 11 上提权到内核
安全团队公开了 CVE-2025-13032 的完整利用细节:Avast 内核驱动在处理 _UNICODE_STRING 时把 Length 字段读了两次,第一次按小值分配内核池,第二次按大值 memcpy,中间窗口里另一个线程把 Length 翻到 0x1000,就溢出成内核池越界写,最终拿到任意内核读写、本地提权。利用在当时的 Windows 11 上跑通,作者说竞态窗口窄,但迭代次数不多就能稳定命中。好消息是较新的 Windows 内核已改用 user-mode accessors 校验每次访问,这条利用路径被堵住。装杀软的人可以顺手确认版本,写驱动的人该记住:用户态传进来的长度,读一次就够,读两次就是漏洞。
来源:
Topcoat 0.9 发布:Rust 全栈框架补上客户端响应式
Tokio 团队两个月前宣布的 Rust 全栈框架 Topcoat,今天放出 0.9 版。作者 Carl Lerche 在 Ruby on Rails 核心团队待过,现在想把那套「开箱即用」的体验搬进 Rust:views、components、mailer、ORM(Toasty)都在里面,目标是让 Rust 写 Web 应用的生产力追上别的语言。0.9 的重点是客户端响应式,shards、live!/emit!、suspense、error_boundary 这些 API 和组件都进了这一版,等于在服务端渲染的基础上往浏览器那一侧靠。原文提到应用可以只占约 20MB 内存,这个数字对跑惯 Node 的人确实有吸引力。但框架好不好用,最终得看写业务代码时要不要跟生命周期和泛型搏斗——作者自己也承认 Rust 不如某些现代语言优雅。Rust 做上层应用这件事,值得看,但别急着把生产项目搬过去。
来源:
你手头有对外提供原始 RSA 签名或解密的接口吗——敢不敢把它当成一次午餐时间的临时接触,还是必须当它已经泄露?明早 8 点见。
本期从过去 24h 的 X / Hacker News / GitHub Trending 共 58 条信息中挑出 5 条(全天逐小时采写、经事实校对后于晨间选编)。内容由 LLM 辅助生成,每条均附原始来源链接,重要决策请交叉验证。

微信扫码关注「码农早餐」
每天早 8 点推送到微信,不用记网址。关注后回复「价格」,拿大模型价格与退役时间速查表。
喜欢这篇?订阅每日推送
每天 8:00 帮你挑好 AI 圈最重要的 5-10 条,说人话、看得懂、不浪费时间。
本页内容由 LLM 自动聚合 + 解读生成,每条均有原始来源链接,建议交叉验证。