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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Kestra-cve-2026-53576 — End-to-end reproduction and cross-layer detection of CVE-2026-53576, the unauthenticated RCE in Kestra - taken past the base PoC to show how a common Docker-socket misconfiguration turns container-root into full host compromise. | Kitploit
ツール/GitHubGitHub/atlasvector/kestra-cve-2026-53576
Privilege EscalationContainer SecurityPersistence MechanismsVulnerability AnalysisExploitationPost-ExploitationPenetration TestingPapers & ResearchRed TeamingIncident ResponseLabs & Practice
2325日前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
GitHub
atlasvector/kestra-cve-2026-53576

Kestra-cve-2026-53576

End-to-end reproduction and cross-layer detection of CVE-2026-53576, the unauthenticated RCE in Kestra - taken past the base PoC to show how a common Docker-socket misconfiguration turns container-root into full host compromise.

リポジトリを見る

末尾パス認証バイパスによるKestraの未認証RCE (CVE-2026-53576)

目次

  • エグゼクティブサマリー
  • 1. 概要
  • 2. 影響を受けるバージョン / 修正済みバージョン
  • 3. テスト環境と事前チェック
  • 4. 根本原因
  • 5. 攻撃シミュレーション
  • 6. 検知エンジニアリング
  • 7. ATT&CKマッピング
  • 8. 修復とハードニング
  • 9. 参考文献

エグゼクティブサマリー

Kestraは、オープンソースのワークフローオーケストレーションプラットフォームであり、リクエストに認証情報が必要かどうかを、URLが/configsで終わるかどうかで判断する認証フィルターを出荷していました。これは、1つの無害な公開エンドポイントを公開するためのチェックでした。

このチェックは文字列の末尾のみを確認していたため、URLがたまたまそのように終わるリクエストはすべて認証を完全にスキップしました。これには、任意のコードを作成・実行するエンドポイントも含まれます。 その結果: ネットワーク経由で脆弱なKestraインスタンスに到達できる者は誰でも、認証情報ゼロ、フィッシングなし、パスワード推測なし、権限昇格ステップ不要で、rootとしてコマンドを実行できます。

この演習では、その単一のギャップをセルフホストのラボインスタンスに対してエンドツーエンドで実行しました:

  • 未認証のコード実行。
  • 露出したDockerソケットの発見。
  • 基盤となるホスト上での完全なrootアクセスへの昇格。
  • 2つの独立した永続化メカニズム (SSHバックドアキーとスケジュールされたビーコン)。

すべての段階は、防御側のテレメトリ (ネットワークIDS、ホストランタイムセキュリティ、Linux audit、およびシステムログ) に対してキャプチャされました。

未パッチの場合のビジネスへの影響: Kestraを実行しているホストの完全な侵害であり、アプリケーションだけでなく、そのホストから到達可能な他のすべてのものにも及びます。

修正: Kestra 1.0.45 / 1.3.21以降にアップグレードしてください (パッチ単体で主要な脆弱性は塞がれますが、昇格と永続化の段階には別個の独立した修正が必要です - アプリケーションコンテナにDockerソケットをマウントしないでください。セクション8を参照)。

1. 概要

本レポートは、Kestra ≤1.3.20におけるCVSS 10.0の未認証リモートコード実行脆弱性であるCVE-2026-53576を文書化したものです。これは、パスサフィックス認証バイパス (AuthenticationFilter.java、endsWith("/configs")) に起因します。

ワークフローの名前空間とIDをconfigsと命名した攻撃者は、認証情報なしで、Kestraコンテナ内でrootとして、任意のシェルコマンドを作成・実行できます。1.0.45および1.3.21で修正されました。同一のバグはCVE-2026-49869としても独立に報告されており、これが実際の野放しの悪用に関連するCISA KEVに掲載された番号です。公開情報源やスキャナーはいずれかを参照する可能性があるため、両方を併記すべきです。

2. 影響を受けるバージョン / 修正済みバージョン

脆弱Kestra ≤ 1.3.20 (および1.0.x系では1.0.45より前)
修正済み1.0.45 / 1.3.21+
CVECVE-2026-53576
双子のアドバイザリCVE-2026-49869 - 同一のバグ、CISA KEV掲載 (野放し)

タイムライン

日付イベント
2026-06-02Kestra 1.3.21リリース。チェンジログが「認証フィルターにおける潜在的な認証バイパス」に言及
2026-06-03Kestra 1.0.45が1.0.x系でリリース
2026-09-02CVE-2026-49869 (双子のアドバイザリ) がCISA KEVカタログに追加
2026-09-22 to 09-24本ラボでの再現、検知構築、およびクロスレイヤー検証

3. テスト環境と事前チェック

セルフホストのホームラボ: - Debianホスト (ホスト名docker、カーネル6.12.107+deb13-amd64)、 - Docker Engine 29.8.1。 - Kestraは公式のkestra/kestra:v1.3.20イメージとしてデプロイされ、kestra.int.atlasvec.comのCaddyリバースプロキシ経由で到達可能。 - テスト対象のテレメトリスタック: Falco (ランタイム/eBPF、ホストレベル)、 - Suricata 8.0.3 IDS (パッシブSPANミラー)、Splunkへ転送。

何かに触れる前に、ターゲットが実際に脆弱であることと、テレメトリスタックが稼働していることを確認しました。また、攻撃前の状態のスナップショットを取得し、完了後に元に戻せるようにしました。

脆弱なバージョンを実行しているKestra: 01-kestra-version-v1.3.20

コンテナ自体が起動し、到達可能: 06-docker-kestra-running

ホストにロードされたFalcoのユニット: 02-falco-units-one-active

Falcoがイベントをアクティブに発行中 (モダンeBPFモード): 03-falco-modern-bpf-active-emitting

Suricataのサービスがアクティブ: 04-suricata-systemctl-active

そしてそのeve.jsonがライブイベントを書き込み中: 05-suricata-eve-json-live

4. 根本原因

これは1つではなく、2つの誤りが重なったものです。

第一に、認証フィルターは、リクエストパスの末尾を照合することで、リクエストが認証をスキップできるかどうかを判断します:```java // AuthenticationFilter.java — the vulnerable check, confirmed against the self-hosted v1.3.20 source if (path.endsWith("/configs")) { // treated as a public, unauthenticated path }

そのチェックは、単一の無害なエンドポイントである公開インスタンス設定を露出させるために存在する。`endsWith` は文字列の末尾だけを読むため、1つの安全なパスと、たまたま同じ末尾を持つ他のあらゆるパスとを区別できない。

第二に、Kestra のルーターはそれらの類似パスを、実際の機密性の高いハンドラーへ依然としてディスパッチする。`/api/v1/main/flows/configs` は flow-create ハンドラーに到達する。`/api/v1/main/executions/configs/configs` は execution ハンドラーに到達する。フィルターは両方を公開として通し、ルーターはそのまま実行する。フローの namespace と ID を `configs` と名付ければ、コード実行エンドポイントは `/configs` で終わるようになり、公開パスのフリーパスを継承する。

キャプチャしたリクエストのペアがそれを明示している。認証情報なしの `GET /api/v1/main/flows/search` は `401` を返す。同じ空の認証ヘッダーを付けた `POST /api/v1/main/flows/configs` は `200` を返し、フローを保存する(§5.1 参照)。

## 5. 攻撃シミュレーション

> 以下の各ステップは、それぞれのスクリーンショットとともにキャプチャされている。すべては、リバースプロキシの背後にある自己ホスト型 Kestra インスタンスに対して、私自身の隔離されたホームラボ内で実行されている。

### 5.1 ステージ 1 - 認証バイパス -> Kestra コンテナ内での root

**コントロール :** 認証情報なしの `GET /api/v1/main/flows/search` → `401 Unauthorized`。
通常のルートで認証が強制されていることを確認する。
![01-burp-control-401](https://assets.kitploit.com/production/public/readmes/56348/2a6d266e96b2b4e09bc32c0ccf3609159eaf5bacdc204989d5572211e616e6ff/8a8bab993fd7ba08656d03ad85822001996be4c391de87c535751cc9e14542a1-display-v1.webp)
_____

**植え付け :** 認証ヘッダーなしで `POST /api/v1/main/flows/configs` を送信する。ボディはフロー YAML で、その `namespace` と `flow id` はどちらも `configs` であり、Process タスクランナーを使用する Commands タスクを含む。サーバーは `200 OK` を返し、フローを保存する。それ以外は保護されたルート上の `/configs` サフィックスが、バイパスを引き起こすものである **(セクション 4 参照)。**
![02-burp-plant-flow-200](https://assets.kitploit.com/production/public/readmes/56348/5d2a2db2d70e9d60e7136c765a7a85f4d8b684ea945da5b84e84d85a2b05a151/1ee6d8f7efd58d22ef41b536f32acbbdd417d68ac030ed28e2d06f9d6d4ccb93-display-v1.webp)
**リッスン & 待機** : テスト目的で nc を使った簡単なリスナーを起動し、リバースシェルを捕まえる。

![03-kali-listener-4444](https://assets.kitploit.com/production/public/readmes/56348/88d7d3516aaeef900bbb9b372d9006323a3d7391078b693124ee24710da557ac/aa9806454d3742b7e958611a5c6ed2d3dfb3072eec3c14e4bb3f050a41220803-display-v1.webp)




**トリガー / 実行** `POST /api/v1/main/executions/configs/configs`、認証ヘッダーなし → `200 OK`、新しい実行が作成される。
![04-burp-execute-200](https://assets.kitploit.com/production/public/readmes/56348/e70d1cd38f3825dca36c25e722bdfcf4a7614b1402fe1b6d0ccebdf992738bbe/9a394373a293d22ef55e3b6ee32eae6991feac73a5ccbc7909536bdf3435172d-display-v1.webp)

**BaaaaM :** シェルを奪取したが、忘れないでほしい - 我々は「隔離」されており、`root` ではある **が** Kestra docker コンテナの内部であるため、ここから「脱出できないはず」である。「**そう、それが私の考えだった**」
![05-kali-revshell-container](https://assets.kitploit.com/production/public/readmes/56348/97257430abd2415f37f12c790a738d73e12f0c2509c193b1b7d24545453a1a70/9880399e445d4b8b602c1f381bbd8523a83c8c3c097b9a919e2b1871c7f1129e-display-v1.webp)


タスクのコマンドは Kestra JVM プロセスの直接の子として実行され、ホスト側のプロセスツリーで確認され、Kestra 自身の実行ログにより正常に完了している。
ツールをダウンロード