Ruby发布安全更新修复Onigmo正则引擎漏洞
Ruby 4.0.9、3.4.12和3.3.13修复GitLab报告的Onigmo正则表达式引擎缺陷,涉及4个CVE编号。
Ruby开发团队于2026年10月23日(UTC)发布安全更新,修复Ruby所用的Onigmo正则表达式引擎中的多个问题。据forest.watch.impress.co.jp报道,GitLab将这些缺陷报告为可能被利用在GitLab服务器上实现远程代码执行。
此次共分配4个CVE编号:CVE-2026-89078、CVE-2026-93577、CVE-2026-97229和CVE-2026-110264。问题包括正则解析器中的double free,以及正则编译器(含CI/CD正则编译器)中的整数溢出。精心构造的正则表达式在Ruby编译时可能破坏内存,进而可能导致远程代码执行。
受影响的是从攻击者可控字符串编译正则表达式的应用,例如通过Regexp.new、Regexp.union、Regexp.compile,或将外部输入插值进正则字面量。仅使用开发者自行编写正则表达式的应用不受影响。Ruby团队表示,超时设置和模式长度限制并非可靠的缓解措施。
修复版本为Ruby 4.0.9、Ruby 3.4.12和Ruby 3.3.13。其中Ruby 3.3.13还随附将内置resolv库更新至v0.3.2。无法立即更新的用户应避免从不受信任的输入编译正则表达式。
Ruby方面尚未决定是否自行将这些视为漏洞,也未申请CVE编号,因此目前追踪应使用GitLab发放的CVE编号。GitLab此前已在GitLab v19.4.1/19.4.2/19.5.1中修补了内置的Ruby,相关修复现已并入Ruby的发布分支。Ruby由Yukihiro Matsumoto(Matz)于1993年发起,至今仍以开源方式持续开发。
快速问答
哪些Ruby版本修复了这些漏洞?
Ruby 4.0.9、Ruby 3.4.12和Ruby 3.3.13。
哪些应用会受影响?
从攻击者可控字符串编译正则表达式的应用,例如使用Regexp.new、Regexp.union、Regexp.compile或插值正则字面量;仅使用开发者自写正则的应用不受影响。
无法立即更新怎么办?
应避免从不受信任的输入编译正则表达式,超时和模式长度限制并非可靠缓解措施。