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
静的分析脆弱性分析構成監査ウェブセキュリティDevSecOps学習と教育
GitHubpaveg/rails-activestorage-vips-audit

rails-activestorage-vips-audit

Rails コードベースを CVE-2026-66066(KindaRails2Shell)について監査するエージェントスキル — Active Storage + libvips の任意ファイル読み取り / RCE を検出し、Rails と libvips のバージョンおよび block-untrusted 緩和策を確認します。

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
リポジトリを見る
242ヶ月前未レビュー
共有

rails-activestorage-vips-audit

Ruby on Rails リポジトリが CVE-2026-66066(KindaRails2Shell)に晒されているかどうかを監査する Agent Skill です。これは Active Storage の libvips バリアント処理における脆弱性で、任意のファイル読み取りを許し、Rails アプリケーションにおいてはリモートコード実行を可能にします。

このスキルは設定監査および修復支援のためのツールです。エクスプロイトコードは含まず、攻撃チェーンについても記述しません。

脆弱性

CVECVE-2026-66066
深刻度Critical、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 はこれらを無効化していなかったため、細工されたファイルをアップロードできる攻撃者がそれらに到達できる状態でした。

アプリケーションが影響を受けるのは、4 つの条件すべてが成立する場合のみです:

  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 プラグインとしてインストールします:

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

skills CLI を使用すると、同じスキルを Claude Code、Codex、Cursor、Copilot CLI、その他のエージェントにインストールできます:

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 は指定されたアプリケーションルートを基準にすべてを解決します。

使用方法

このスキルには2つのモードがあり、どちらも複数のアプリケーションパスを受け付けます。

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

これらのコマンドはエージェントではなく、あなたのためのエントリーポイントです。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

このスクリプトは事実を収集するものであり、意図的に判定ロジックを含んでいません。渡すのはアプリケーションルートであり、未分化のモノレポルートではありません。モノレポの場合は、それぞれ独自の Gemfile.lock と config/application.rb を持つデプロイ可能な Rails ディレクトリを個別の引数として渡してください。コレクターは、親の証拠ストリームからそれらネストされたアプリケーションルートを除外しつつ、マウントされたエンジンやパス依存関係である可能性のあるネストされた 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 と、André Baptista、Bruno Mendes、Castilho からなる Ethiack のチームによって独立に発見・報告され、その後 Rails メンテナーとの調整の下で公開されました。

ツールをダウンロード