
🫖 単一ターゲット向け Gitea CVE-2026-60004 RCE 検証 PoC
Gitea の
diffpatchGit フックリモートコード実行脆弱性に対する、直接的な単一ターゲット検証ツールです。
このリポジトリには、AfterDark 検証ツールが含まれています: 1つのスクリプト、1つのターゲット、1回の実行。ディスカバリ、偵察、検証、その他のサブコマンドはありません。
このプロジェクトは、認可されたセキュリティテスト、防御的検証、研究、教育のみを目的として提供されています。所有しているシステム、または明示的な書面による許可を得たシステムに対してのみ使用してください。
著者および貢献者は、誤用、損害、サービス中断、データ損失、または法的結果について責任を負いません。適用される法律、契約、交戦規則、および開示要件に従う責任は利用者にあります。
これはアクティブな RCE 概念実証です。アカウントを作成し、プライベートリポジトリを作成し、契約マーカーを書き込み、Gitea オペレーティングシステムユーザーとしてコマンドを実行します。それに応じて取り扱ってください。🛡️
CVE-2026-60004 は、Gitea のリポジトリ diffpatch ワークフローに影響を与えます。リポジトリへの書き込みアクセス権を持つ攻撃者は、Git フックをインストールしてトリガーする制御されたパッチコンテンツを送信でき、Gitea サービスアカウントとしてのコマンド実行につながります。
| 項目 | 詳細 |
|---|---|
| 製品 | Gitea |
| 影響を受けるバージョン | >= 1.17.0, < 1.27.1 |
| 修正済みバージョン | 1.27.1 |
| 影響 | Gitea OS ユーザーとしてのリモートコマンド実行 |
| 上流アドバイザリ | GHSA-rcr6-4jqh-j84m |
Forgejo およびその他のフォークは手動での実装レビューが必要であり、自動的に影響を受けるとは見なされません。
実行ごとに1つの固定ワークフローを実行します:
diffpatch を通じて細工された post-index-change フックをインストールしてトリガーします。id を実行します。このツールは単一のターゲットのみを受け入れます。ターゲットリスト、ワイルドカード、マススキャン、またはパッシブディスカバリモードはありません。
PATH で利用可能な Gitこのスクリプトは Python の標準ライブラリのみを使用します。pip install は不要です。
git clone https://github.com/InfoSec-DB/CVE-2026-60004-Gitea-RCE-PoC.git
cd CVE-2026-60004-Gitea-RCE-PoC
python3 scanner.py --help
python3 scanner.py \
--contract-number ENG-2026-001 \
--username audit-eng-2026-001 \
--password 'use-a-unique-disposable-password' \
https://gitea.example
短いオプションも利用可能です:
python3 scanner.py \
-c ENG-2026-001 \
-u audit-eng-2026-001 \
-p 'use-a-unique-disposable-password' \
https://gitea.example
🚨 パスワードはコマンドラインで指定され、最終結果パネルに表示されます。一意の使い捨てテスト認証情報のみを使用してください。コマンドライン引数はシェル履歴に保持されたり、ローカルのプロセス検査ツールに一時的に表示されたりする可能性があることに注意してください。
デフォルトのコマンドは id です。範囲を限定したカスタムコマンドは --cmd で指定できます:
python3 scanner.py \
-c ENG-2026-001 \
-u audit-eng-2026-001 \
-p 'use-a-unique-disposable-password' \
--cmd 'uname -a' \
https://gitea.example
カスタムコマンドには意図的にタイムアウトがありません。検証ツールはリモートコマンドが終了するまで待機するため、エンゲージメントで特に必要とされない限り、対話型または長時間実行されるコマンドは避けてください。
デフォルトでは、各実行は以下の下に書き込まれます:
afterdark-results/<contract>/<UTC timestamp>/
別のルートまたは正確な実行ディレクトリを選択できます:
python3 scanner.py \
-c ENG-2026-001 \
-u audit-eng-2026-001 \
-p 'use-a-unique-disposable-password' \
--results-root ./engagement-evidence \
https://gitea.example
python3 scanner.py \
-c ENG-2026-001 \
-u audit-eng-2026-001 \
-p 'use-a-unique-disposable-password' \
--output-dir ./engagement-evidence/run-01 \
https://gitea.example
各実行はプライベートな 0600 ファイルを作成し、既存の結果の上書きを拒否します:
confirmation.json — ターゲット、バージョン結果、アカウント名、タイムスタンプ、コマンド、リターンコード、取得されたアーティファクトconfirmation.command-output.txt — 完全なリモートコマンド出力証拠には機密性の高いエンゲージメント情報が含まれる場合があります。Git にコミットしないでください。同梱の .gitignore は、デフォルトの結果パスと一般的な証拠ファイル名を除外します。
検証ツールはサーバー側のアーティファクトを自動的に削除しません。評価後、認可された管理者は以下を行う必要があります:
afterdark-* リポジトリを削除する/tmp/gitea-validation-<contract>/client.txt を削除する1.27.1 以降にアップグレードする成功した結果は、Gitea サービスアカウントとしてのコマンド実行を証明します。それ自体では、root アクセス、永続性、横移動、または完全なホスト侵害を証明するものではありません。
id に限定テストはネットワークリクエストを行わずに、解析と PoC 構築を実行します:
python3 -m unittest discover -s tests -v
検証ツールをより安全に、より信頼性高く、またはクリーンアップしやすくする改善は歓迎します。実際のターゲットの詳細、認証情報、プライベートな証拠、または破壊的なペイロードを提出しないでください。
このツールの脆弱性については、SECURITY.md に従ってください。
慎重で契約に基づいたセキュリティ検証のために構築されています。🫖🛡️