Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
rails-forensics-CVE-2026-66066 — Rails Active Storage/libvips CVE-2026-66066を調査するためのフォレンジックツールキットとエージェントスキル:細工されたBLOBの指標、露出期間、データ窃取を検出します。 | Kitploit
ツール/GitHubGitHub/rails/rails-forensics-cve-2026-66066
脆弱性分析データ流出ウェブセキュリティデジタルフォレンジック学習と教育インシデントレスポンス
GitHubrails/rails-forensics-cve-2026-66066

rails-forensics-CVE-2026-66066

Rails Active Storage/libvips CVE-2026-66066を調査するためのフォレンジックツールキットとエージェントスキル:細工されたBLOBの指標、露出期間、データ窃取を検出します。

リポジトリを見る
232252ヶ月前Kitploit レビュー済み

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有

rails-forensics-CVE-2026-66066

RailsアプリケーションとCVE-2026-66066(Active Storageとlibvipsによる任意ファイル読み取り、通称KindaRails2Shell)について、次の2つの問いに答えるためのツールと手法です。

  1. 自分は脆弱だったのか、そしてそれはどのくらいの期間だったのか?
  2. 自分は悪用されたのか、もしそうなら何が持ち出されたのか?

アドバイザリ GHSA-xr9x-r78c-5hrm は脆弱性を説明し、修正済みバージョンを示していましたが、これらの問いを評価するのに十分な詳細は開示していませんでした。本プロジェクトはその一助となることを目的としています。

これはライブラリではなく、ドキュメントとスキルのリポジトリです。ここにあるものは何もあなたのアプリケーションにインストールされません。エージェントがこれを読み、別の場所にチェックアウトされたあなたのアプリケーションに対して作業します。そして本番環境で実行される唯一のスクリプトは、コンテナにコピーする単一の自己完結型ファイルです。

一段落でわかる脆弱性

Railsは、blobが画像処理可能かどうかを、ダイレクトアップロードによってクライアントが設定でき、バイト列が一切検査されないcontent_typeカラムを読むことで判断します。次にlibvipsが、マジックバイトを嗅ぎ分けることでそのファイルが実際に何であるかを判断します。先頭10バイトがMATLAB 5.0と主張するファイルはlibvipsのMATLABローダーにルーティングされ、それがlibmatioに渡され、libmatioは別のバイト範囲でディスパッチしてMAT 7.3を見つけ、それはHDF5です。HDF5のExternal File Listは、データセットのバイト列をパスとオフセットで指定された別のファイルに置くことを可能にするため、「画像」をレンダリングすると攻撃者が選んだファイルがサーバーから読み取られ、その内容がピクセルとして返されます。同じ混同が、互いのフィールドを見ることのできない2つのレイヤーで、2度起こります。

reference/the-attack.mdは、受信リクエストからlibmatioが対象ファイルを開く時点までの呼び出しチェーン全体を、4つの要となる分岐点に印を付けて追跡します。続いてreference/the-investigation.mdは、なぜこの攻撃がそもそも調査可能なのかを説明します。それは強度が増していく3つの痕跡を残し、その中で最も強いものはレンダリングされたバリアントであり、盗まれたバイト列をあなた自身のオブジェクトストア内のピクセル値として保持しています。

ここから始める

2つのスキルは順番に実行します。1つ目が露出期間を生成し、2つ目はそれなしでは開始できません。

スキル問い生成物
kr2s-was-i-vulnerableこのアプリケーションはかつて露出していたか?露出期間と、スイープに必要な事実
kr2s-was-i-exploited誰かがそれを利用したか、そして何を取得したか?書面によるフォレンジック分析

どちらもエージェント向けに書かれており、手作業でこの作業を行いたい人にとっても読める内容です。それぞれにSKILL.mdというエントリーポイントと、実際のプロセス、そのevalチェック、失敗モードを収めたreferences/guide.mdがあります。

修正済みで、気にするべきかどうかを知りたい場合は、1つ目を実行してください。その成果物はイエスかノーかではなく期間です。なぜなら、これを読んでいるほとんどの人にとって現在形の答えは「いいえ、修正しました」であり、有用な答えは調査がカバーすべき年はどれかだからです。

エージェントに読み込ませる

このリポジトリをクローンし、そのクローンを保持してください。2つのスキルはreference/内の参照ドキュメントを共有しており、それらのガイドはリポジトリ相対パスでそれらを読むため、スキルディレクトリを単独でどこかにコピーすると行き止まりになります。

最も簡単なのは、クローン内でエージェントを起動し、あなたのアプリケーションがどこにあるかを伝えることです。AGENTS.mdがそこから方向づけを行います。これには人が間違えやすい点、すなわちこのリポジトリはツールであり対象ではないということも含まれます。

そうでなければ、ファイルを指定してそう伝えてください。これはローカルファイルを読める任意のエージェントで機能します。

Read /path/to/rails-forensics-CVE-2026-66066/skills/kr2s-was-i-vulnerable/SKILL.md
and follow it. My application is at /path/to/my-app.

Claude Code では、コピーではなくシンボリックリンクを作成してインストールすることで、クローンを指したまま自動的にトリガーされるようにできます:

ln -s "$PWD/skills/kr2s-was-i-vulnerable" ~/.claude/skills/
ln -s "$PWD/skills/kr2s-was-i-exploited" ~/.claude/skills/

プロジェクト内でスキルを1つのアプリケーションに限定したい場合は、~/.claude/skills/ の代わりにプロジェクト内の .claude/skills/ を使用してください。

いずれの場合も、エージェントにアプリケーションの場所を伝えてください。スキルでは、このリポジトリと調査対象のアプリケーションが2つの異なるルートであり、エージェントは2つ目を読み取ることはできるが、決して書き込んではならないことが明示されています。

ここに含まれるもの

AGENTS.md                      orientation for an agent started in this directory
reference/the-attack.md        how the vulnerability works, traced call by call
reference/the-investigation.md why an investigation is possible, and where it runs out
skills/                        the two skills
RUNBOOK.md                     operator's guide to the scanner: flags, verdicts, resuming
lib/crafted_mat_file.rb        the detector
bin/                           the scanner and three analysis utilities
test/                          the test suite

2つの参照ドキュメントはこのリポジトリの平易な英語の半分を成しており、単独で成立しています。問題を理解したい場合はそれらを読み、特定のアプリケーションについての答えを得たい場合はスキルを実行してください。

bin/kr2s_scan_active_storage_blobs.rb は rake build によって lib/ から生成され、コミットされているため、本番環境で実行するのにビルドステップも2つ目のファイルも必要ありません。

検出器

lib/crafted_mat_file.rb は、この攻撃に必要な細工されたファイルを識別します。オブジェクトの最初の128バイトから2つのヘッダーフィールドを読み取るだけで、それ以外は何も必要としません。そのため、スキャンは候補をダウンロードするのではなく、範囲指定読み取りによって分類できます。reference/the-attack.md では、どのフィールドなのか、そしてなぜ正当な書き込み側がその組み合わせを生成しないのかを説明しています。

ペイロード生成器はありません

このリポジトリは、細工されたファイルを構築するコードも、細工されたファイル自体も意図的に同梱していません。検出器のテストは、必要な128バイトのヘッダーを純粋なRubyで合成します。これが検出器が読み取るすべてです。reference/the-attack.md は構造を完全に説明しているため、攻撃を理解しようとする読者に対して何も隠されていません。隠されているのは、1つの引数を変更するだけで任意のパスに標的を変更できる実動の生成器です。

スコープ

対象: Active Storage で、:vips バリアントプロセッサを使用し、バリアントレコードが追跡されていたアプリケーション。

対象外: アプリケーションがユーザー提供ファイルを libvips に渡すその他のあらゆる箇所。他のアップロードライブラリ、オブジェクトストアの直接クライアント、独自のアバターやロゴのシステムはそれぞれ独自の調査が必要であり、ここにあるスキャナーでは対応できません。kr2s-was-i-vulnerable はそれらを列挙させるので、結論から黙って省略されるのではなく、明示的に名前が挙げられます。

このツール群によるクリーンな結果は、証明ではなく強力な証拠です。両方のスキルはそう述べており、繰り返し具体的に述べています。また、分析テンプレートには省略できない限界のセクションがあります。

来歴

これは 37signals での実際の調査から生まれたもので、脆弱性が存在した全期間にわたり、大規模な本番 Active Storage ストアを調査しました。このツール群は、この欠陥を報告したセキュリティ研究者によってアップロードされたテストファイルを正しく識別しました。これは、検出器が見つけるべきものを見つけるという唯一の外部証拠です。

kr2s-was-i-exploited/references/analysis-template.md にある実践的な分析は架空のものです。実際のものをモデルにしていますが、その中のすべての識別子、アドレス、日付は創作されています。

参考文献

  • GHSA-xr9x-r78c-5hrm、Rails のセキュリティアドバイザリ
  • CVE-2026-66066
  • Ethiack の記事
  • RyotaK の記事

修正済みの Rails バージョン番号は、ここに書かれていることではなくアドバイザリから取得してください。

開発

mise exec -- rake        # build and test

ライセンス

MIT。LICENSE を参照してください。

ツールをダウンロード