LuaRocks 披露 2026 年 9 月安全事件
来源: luarocks.org — 2026-09-26
概述
LuaRocks 在 9 月 25 日经 CISA 协调收到一处远程代码执行漏洞的报告,次日修复;排查时发现该漏洞早在 7 月 9 日至 8 月 20 日之间就已被利用多次。由于攻击者能在服务器上执行代码,官方按「服务器可访问的一切均视为泄露」处理:站点已迁到全新服务器,所有凭证吊销并更换。社区需要重建 API key、重新登录、改密码、重设两步验证,并把 LuaRocks 升级到 3.12 以上。
核心要点
- 漏洞根因是 rockspec 本质上是 Lua 文件:上传时服务器会在受限环境中加载它,而加载函数同时接受 LuaJIT 预编译字节码。
- LuaJIT 不校验字节码,因此精心构造的字节码能越过沙箱读写内存,在 Web 服务器进程内执行任意代码,任何注册用户都能通过网站或 API 触发。
- 修复方式是只把 rockspec 当作文本加载,并显式拒绝字节码,同时补上针对该问题的测试。
- 攻击时间线:7 月 9 日首次执行 shell 命令,8 月 7 日再次执行并发布三个恶意包,8 月 16 日与 20 日出现数百次自动化利用尝试。
- 被暴露的数据包括用户名、邮箱、bcrypt 密码哈希、全部 API key、两步验证密钥、会话记录与第三方服务凭证,官方已全部吊销或清除。
- 官方利用每日 git 镜像比对 7 月 8 日以来的所有包文件,确认除攻击者上传的三个包外,没有既有包被篡改,也没有发现持久化后门。
- 仍需注意:3.11.1 及更早版本在 LuaJIT 或 Lua 5.1 下会执行服务器发来的预编译字节码,必须升级到 3.12 或更新。
- 官方也坦承验证存在盲区——被攻击者删除的包与作者自己删除的包无法区分,也无法核查被入侵服务器当时发给了客户端什么内容。
金句
因为攻击者能够在服务器上运行代码,我们把那台服务器能接触到的一切都视为已经暴露。
👍 0
👎 0
← 返回 Lobsters 首页