Skip to content
KitploitKITPLOIT
工具漏洞利用博客
Log in
提交
工具漏洞利用博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

订阅源联系隐私© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
rails-activestorage-vips-audit — 用于审计 Rails 代码库中 CVE-2026-66066(KindaRails2Shell)的智能体技能——Active Storage + libvips 任意文件读取 / RCE,检查 Rails 和 libvips 版本以及 block-untrusted 缓解措施 | Kitploit
工具/GitHubGitHub/paveg/rails-activestorage-vips-audit
静态分析漏洞分析配置审计Web安全DevSecOps学习与教育
GitHubpaveg/rails-activestorage-vips-audit

rails-activestorage-vips-audit

用于审计 Rails 代码库中 CVE-2026-66066(KindaRails2Shell)的智能体技能——Active Storage + libvips 任意文件读取 / RCE,检查 Rails 和 libvips 版本以及 block-untrusted 缓解措施

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
查看仓库
262个月前尚未审核

rails-activestorage-vips-audit

一个 Agent Skill,用于审计 Ruby on Rails 仓库是否暴露于 CVE-2026-66066(KindaRails2Shell)——即 Active Storage 的 libvips 变体处理漏洞,该漏洞允许任意文件读取,并且在 Rails 应用中可导致远程代码执行。

该 skill 是一个配置审计与修复辅助工具。它不包含任何漏洞利用代码,也不描述攻击链。

漏洞

CVECVE-2026-66066
严重程度严重,CVSS 9.5
软件包activestorage(RubyGems)
受影响< 7.2.3.2、>= 8.0 < 8.0.5.1、>= 8.1 < 8.1.3.1
已修复7.2.3.2、8.0.5.1、8.1.3.1
安全公告GHSA-xr9x-r78c-5hrm

libvips 通过操作来读写各种格式,其中一些操作被标记为 unfuzzed——即对不可信内容不安全。Active Storage 未禁用这些操作,因此能够上传精心构造文件的攻击者可以触达它们。

只有当全部四个条件同时成立时,应用才会暴露:

  1. activestorage 处于受影响的版本范围内
  2. 正在使用 Active Storage
  3. config.active_storage.variant_processor 解析为 :vips
  4. 应用接受来自不可信用户的上传

条件 3 是区分性条件。受影响范围 < 7.2.3.2 包含所有 Rails 6.x 版本,但 6.x 默认使用 :mini_magick,因此 6.x 仅在非默认配置下才会暴露,而 6.0 之前的版本根本没有 variant_processor 设置。Rails 7.0 及更高版本通过 config.load_defaults 7.0 默认使用 :vips,这就是常见配置会暴露的原因。Rails 8.1 还接受 :disabled,这会使条件 3 不成立。

安装

作为 Claude Code 插件,通过本仓库中捆绑的 marketplace 安装:

/plugin marketplace add paveg/rails-activestorage-vips-audit
/plugin install rails-activestorage-vips-audit@paveg-skills

通过 skills CLI,可将同一技能安装到 Claude Code、Codex、Cursor、Copilot CLI 及其他 agent 中:

npx skills add paveg/rails-activestorage-vips-audit

或手动执行:

git clone https://github.com/paveg/rails-activestorage-vips-audit.git
cp -r rails-activestorage-vips-audit/skills/rails-activestorage-vips-audit ~/.claude/skills/

~/.agents/skills/ 可作为 Codex、Copilot CLI 和 Gemini CLI 的跨运行时位置。技能中没有任何内容依赖于其安装位置——不存在绝对路径,并且 collect-evidence.sh 会相对于它所指向的应用程序根目录解析所有内容。

用法

该技能有两种模式,且两者都接受多个应用程序路径。

report <app>...   # read-only audit, one verdict per application
fix <app>...      # applies remediation on a branch; never commits or pushes unprompted

作为插件安装后,每个模式也是一个命令,因此无需将模式作为参数输入:

/rails-activestorage-vips-audit:report path/to/app another/app
/rails-activestorage-vips-audit:fix path/to/app

这些命令是供你使用的入口,而不是供 agent 使用的:它们被标记为如此,以便 Claude 永远不会自行触发它们。当请求与某个技能匹配时,Claude 仍会自行调用该技能,这就是为什么在没有人类请求的情况下 fix 无法启动。

report 是默认项。fix 首先需要针对同一应用程序的 report 结论,因为正确的修复方式取决于该结论——Rails 6.x、7.0.x 和 7.1.x 没有同系列补丁,因此在那里 fix 会应用临时缓解措施,并报告需要升级框架,而不是尝试升级。

证据收集也可以单独运行:

skills/rails-activestorage-vips-audit/scripts/collect-evidence.sh path/to/app another/app

该脚本只收集事实,刻意不包含任何判定逻辑。请传入应用根目录,而不是未加区分的 monorepo 根目录。对于 monorepo,请将每个可部署的 Rails 目录(各自拥有独立的 Gemfile.lock 和 config/application.rb)作为单独参数传入。收集器会将这些嵌套的应用根目录从父级的证据流中排除,同时保留可能是挂载引擎或路径依赖的嵌套 lockfile 根目录。

它不会告诉你什么

  • 运行时 libvips 版本。 无法从仓库中得出确定结论,而这一点很重要:在 libvips 8.13 以下,不安全操作根本无法被禁用。对于未修补的应用,这意味着任何缓解措施都无法生效;对于已修补的应用,这意味着 Active Storage 会在启动期间抛出异常,而不是在不安全状态下运行,因此未经检查的升级会导致部署失败,而不是留下一个静默的漏洞。请在应用运行的位置用 vips --version 验证。报告将这一点归入运行时就绪性和修复建议,而不是让暴露判定以此为前提条件。
  • 缓解措施是否生效。 Dockerfile 中的 VIPS_BLOCK_UNTRUSTED 并不能证明部署环境设置了它。该技能将此类发现的上限设为“存在临时缓解措施,仍需升级”,绝不允许其产生干净的判定。

修复摘要

升级到 7.2.3.2、8.0.5.1 或 8.1.3.1,与你的版本系列匹配。首先确认运行时 libvips >= 8.13 且 ruby-vips >= 2.2.1:在安装了 ruby-vips 的情况下,除非两者都满足,否则已修补的 Active Storage 会在启动期间抛出异常,而且该检查同样适用于 :mini_magick 应用。

临时缓解措施,两者都不能替代升级:

  • 设置 VIPS_BLOCK_UNTRUSTED 环境变量(libvips >= 8.13;无需更改 gem)
  • 从初始化器中调用 Vips.block_untrusted(true)(ruby-vips >= 2.2.1,外加 libvips >= 8.13)

在 ruby-vips < 2.2.1 上,初始化器方式会调用一个尚不存在的方法,因此请先升级该 gem,或采用不依赖它的环境变量方式。

如果应用曾暴露,请将应用进程可读取的每个密钥都视为已泄露并轮换:secret_key_base、主密钥、Active Storage 服务凭据、数据库凭据以及第三方令牌。

WAF 在这里不是缓解措施。它能否看到载荷取决于存储服务和上传方式,因此其有效性过于依赖配置,无法依赖。

免责声明

  • 仅在你拥有或获得明确授权审计的仓库上使用此技能。
  • 判定结果属于尽力而为的静态分析。NOT AFFECTED 判定并非未暴露的证明:部署环境变量和其他服务中的代码对仓库审计不可见。运行时 libvips 单独报告,因为它影响缓解措施和部署就绪性,而不是仓库是否满足暴露条件。
  • 该技能不包含漏洞利用代码,无论请求如何表述,都不会重建攻击链。
  • 依据 MIT License 提供,不附带任何形式的保证。根据报告采取行动——升级、缓解、密钥轮换——仍由操作者负责。

来源

  • Rails 安全公告 GHSA-xr9x-r78c-5hrm
  • Ethiack — KindaRails2Shell: Rails RCE (CVE-2026-66066)
  • Rails 指南 — 配置 Rails 应用

该漏洞由 GMO Flatt Security 的 RyotaK 以及 Ethiack 的 André Baptista、Bruno Mendes 和 Castilho 组成的团队独立发现并报告,随后与 Rails 维护者协调披露。

下载工具