
CVE-2026-66066(KindaRails2Shell)PoC - Rails Active Storage/libvipsの任意ファイル読み取りからRCEへ。認可されたセキュリティテスト用。
Ruby on Rails の Active Storage + libvips の任意ファイル読み取り → 条件付きリモートコード実行(RCE)PoC ツール。
単一ファイル、Python 3.11+ 純標準ライブラリのみ・依存ゼロ。MAT/HDF5 ハイブリッドペイロード、純 Python PNG ピクセルデコーダー、オフセット読み取り、キーリカバリ、RCE、スキャンモードを内蔵。
Rails はクライアントが自己申告する content_type(直接アップロードエンドポイント)を信頼し、libvips はファイルのマジックバイトをスニッフィングする——同じファイルが 2 つの層で異なる形式として扱われる。攻撃者は「先頭 10 バイトのテキストが MATLAB 5.0 を主張し、124〜125 バイト目のバージョン語が MAT 7.3(HDF5)を宣言する」ハイブリッドファイルを構築し、HDF5 の External File List メカニズムを利用してサーバー上の任意ファイル(デフォルトでは /proc/self/environ)を読み取り、SECRET_KEY_BASE を回復した後に署名付き variation を偽装し、条件付きでコマンド実行を実現する。
< 7.2.3.2 / >= 8.0, < 8.0.5.1 / >= 8.1, < 8.1.3.1python3 kr2s.py <command> [options]
| コマンド | 説明 |
|---|---|
check | blob をアップロードして対象ファイルが読み取り可能かを確認(侵入的) |
read <path> | 指定されたファイルの固定サイズの接頭辞を回復(バイナリ出力) |
secrets | プロセス環境変数と Rails の credentials ファイルを回復(デフォルトではマスク、--show-full で全値を表示) |
rce | secret_key_base を回復し、条件付きでコマンドを実行(--skb で環境変数の読み取りをスキップ可能) |
probe | 対象で利用可能な libvips の信頼できないローダーを探索 |
scan | マルチスレッドのパッシブ/アクティブスキャン(--active は悪意のある blob をアップロードして canary 読み取りを実行) |
共通パラメータ:対象 URL / ホスト名 / バッチファイル、--entry、--proxy、カスタムパス、TLS オプション、タイムアウト、User-Agent など。詳細は python3 kr2s.py --help を参照。
cd lab
RAILS_VERSION=8.1.3 docker compose up --build
セキュリティ研究、脆弱性検証、防御的テストのみを目的としています。read / check / scan --active / rce コマンドは対象に永続化 blob をアップロードし、対象上でコマンドを実行します。破棄可能な Docker lab で実行してください。許可のない対象には使用しないでください。