musl 的 regcomp 整数溢出:被正则表达式本身撑爆的堆写
来源:openwall.com — 2026-10-21
📋 概述
Rich Felker 在 oss-security 公布 CVE-2026-107891:musl libc 的 regcomp 存在多处整数溢出,会导致分配尺寸算错,进而可能越界写堆。触发条件取决于传给 regcomp 的正则表达式的大小与复杂度,而不是被匹配的数据——也就是说,只要应用用 libc 的 regcomp 处理来自不可信来源的正则,就中招。问题从 0.5.0 一直存在到 1.2.6,最低影响是可预测的崩溃,视应用情况也可能被利用执行任意代码。
🔑 核心要点
- 漏洞自 0.5.0 起就存在,1.2.6 及之前所有版本均受影响,修复随 1.2.7 或在补丁中提供
- 溢出与输入数据无关,只看正则表达式的长度与结构,所以「数据是可信的」这一前提救不了你
- 影响下限是必然可触发的拒绝服务,若堆上有可操控对象且有并发,可能升级为代码执行
- 问题由 Julien Voisin 私下报告第一例,Szabolcs Nagy 与 Rich Felker 随后查出成片的同类溢出
- 无法打补丁的场景,临时缓解措施就是禁止处理来自不可信来源的正则表达式
💡 金句
The conditions for overflow are triggered by the size and complexity of the regular expression passed to regcomp, not the data to be matched.
👍 0
👎 0
← 返回 Lobsters 首页