首页 网络安全 正文

shamefile任意文件读取漏洞CVE-2026-47144

摘要

栋科技漏洞库关注到shamefile 0.1.6 及以前版本中存在的任意文件读取漏洞,现在已经被追踪为CVE-2026-47144,CVSS 3.X评分 5.5。

Shamefile 是跨平台命令行开发工具,专门管控代码里各类 linter 告警屏蔽注释(//noqa、NOLINT 等),消除无注释屏蔽隐性技术债。

一、基本情况

shamefile 是面向开源项目的 Rust 实现的命令行静态分析工具,追踪和审查代码未加说明的 linter 抑制注释(undocumented noqa)。

shamefile任意文件读取漏洞CVE-2026-47144

Shamefile 扫描项目屏蔽标记统一写入shamefile.yaml,强制标注代码位置、屏蔽人、创建时间、屏蔽原因,无说明无法通过 CI 校验。

栋科技漏洞库关注到shamefile 0.1.6 及以前版本中存在的任意文件读取漏洞,现在已经被追踪为CVE-2026-47144,CVSS 3.X评分 5.5。

二、漏洞分析

CVE-2026-47144是 shame next 存在的路径穿越漏洞,攻击者可控的 shamefile.yaml 文件能够逐行读取代码仓库以外任意文件的内容。

受影响版本中shamefile 0.1.6 及以前版本(含 pip、npm、crates.io 三个分发渠道)中的 shame next 子命令在渲染违规条目上下文时,

会调用 print_entry_snippet(entry, registry_dir) 函数,使用 registry_dir.join(entry.file()) 拼接文件路径,

并通过 std::fs::read_to_string 读取文件内容,再把指定行号的内容输出到终端。

由于 entry.file() 直接来源于用户提供的 shamefile.yaml,未对绝对路径或 ../ 等相对路径做任何校验或限制,

攻击者只要让受害者在包含恶意 shamefile.yaml 的项目目录下执行 shame next,

即可让工具读取仓库外的任意可读文件(例如 /etc/passwd),把对应行内容回显到终端,造成越权信息泄露。

当用户在本地运行 shame next 命令时,工具会读取 shamefile.yaml 注册表中下一条待处理的违规条目,

并把该条目对应源文件中匹配行打印到终端,方便用户补充说明;该命令因此成为组件对使用者暴露的入口。

临时缓解方案 :不要针对不可信的 shamefile.yaml 文件执行 shame next 命令;可在CI校验流程中使用 shame me --dry-run 参数。

三、影响范围

shamefile < 0.1.7

四、修复建议

shamefile ≥ 0.1.7

五、参考链接

管理员已设置登录后刷新可查看



扫描二维码,在手机上阅读
评论
更换验证码
友情链接