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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-52813-Gogs-RCE — CVE-2026-52813 (Gogs Path Traversal → Git Hooks RCE) 防御的レポート: 根本原因 & パッチ解析、Sigma/SIEM検出ルール、IOC、非侵入型バージョンスキャナー。兵器化されたPoCはありません。 | Kitploit
ツール/GitHubGitHub/iqx6889/cve-2026-52813-gogs-rce
侵害指標 (IOC) 管理脆弱性スキャナー脆弱性分析脅威インテリジェンス論文と研究学習と教育インシデントレスポンスログ分析ラボと実践
GitHubiqx6889/cve-2026-52813-gogs-rce

CVE-2026-52813-Gogs-RCE

CVE-2026-52813 (Gogs Path Traversal → Git Hooks RCE) 防御的レポート: 根本原因 & パッチ解析、Sigma/SIEM検出ルール、IOC、非侵入型バージョンスキャナー。兵器化されたPoCはありません。

171ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
リポジトリを見る

CVE-2026-52813 — Gogs パストラバーサルによる Git Hooks リモートコード実行(防御視点の分析)

セキュリティ研究 / ブルーチーム向け writeup。本リポジトリは兵器化された PoC を含みません。 再現を希望する研究者は、公式 advisory が参照する公開 PoC をご利用ください。

項目内容
CVECVE-2026-52813
エイリアスGHSA-c39w-43gm-34h5 / GO-2026-5305
影響を受けるバージョンGogs < 0.14.3
修正バージョン0.14.3 — PR #8334
CVSS 3.110.0 Critical AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
CWECWE-23 相対パストラバーサル → RCE
前提条件通常の登録アカウント(デフォルトで登録が開放されている場合 = 未承認 RCE)

TL;DR

Gogs は組織作成時に、Web フォームでは AlphaDashDot 文字検証で / をブロックしますが、REST API POST /api/v1/user/orgs ではブロックしません。攻撃者は API を使用して ../ を含む組織名を送信し、検証をバイパスして os.MkdirAll(repoutil.UserPath(org.Name), 0777)(internal/database/org.go:165)に到達し、リポジトリディレクトリを任意のファイルシステムパスに書き込みます。Gogs の Web エディタの一時作業ツリー(local-r/<repo_id>/)と組み合わせることで、別のリポジトリのローカルチェックアウト内に悪意のある hooks/update を配置し、git によって自動実行 → git ユーザとして RCE が発生します。


影響を受けるバージョンと対応

Gogs バージョンステータス
< 0.14.3影響あり、ただちにアップグレード
>= 0.14.3修正済み

アップグレードが唯一の完全な修正手段です:

root@kitploit:~
# Docker
docker pull gogs/gogs:0.14.3
# またはソースコード
git checkout v0.14.3 && go build

一時的な緩和策(アップグレードできない場合):

  • 開放登録を無効にする(app.ini → [service] DISABLE_REGISTRATION = true)、これにより前提条件が「未承認」から「既存アカウントが必要」に引き下げられます;
  • リバースプロキシ(nginx/Caddy/Traefik)層で WAF ルールを追加し、POST /api/v1/user/orgs、POST /api/v1/org/*/repos のリクエストボディ内の username / name フィールドに .. または / が含まれるものをブロック(詳細は detection/ を参照);
  • Gogs コンテナの /data/gogs/data/tmp/ 以外への書き込み権限を制限(selinux/apparmor)。

根本原因分析

1. 検証の非対称性:Web にはあるが、API にはない

Web フォーム(internal/form/org.go、v0.14.2):

root@kitploit:~
type CreateOrg struct {
    OrgName string `binding:"Required;AlphaDashDot;MaxSize(35)"` // 正規表現 ^[a-zA-Z0-9._-]+$
}

API(internal/route/api/v1/org/org.go、v0.14.2):

root@kitploit:~
// api.CreateOrgOption (go-gogs-client) のバインディングタグ:
type CreateOrgOption struct {
    UserName string `json:"username" binding:"Required"` // ← AlphaDashDot がない!
}

→ POST /api/v1/user/orgs の username フィールドは任意の文字を DB 層にそのまま通すことができます。

2. DB 層は予約名のみチェック、文字セットはチェックしない

internal/database/users.go:1532 の isNameAllowed は予約名や接頭辞/接尾辞(例:admin、-bot)のみブロックし、文字セットを検証しないため、../ が通過します。

3. パス sink にサニタイズなし

internal/repoutil/repoutil.go(v0.14.2):

root@kitploit:~
func UserPath(user string) string {
    return filepath.Join(conf.Repository.Root, strings.ToLower(user)) // ← 直接結合
}

internal/database/org.go:165:

root@kitploit:~
os.MkdirAll(repoutil.UserPath(org.Name), os.ModePerm) // org.Name に ../ が含まれる → 任意のパスに書き込み

4. local-r 作業ツリーを利用してフックを配置

Gogs は Web/API のファイル編集を処理する際、リポジトリを /data/gogs/data/tmp/local-r/<repo_id>/ にチェックアウトします。<repo_id> はリポジトリのデータベース id と一致します。攻撃者は:

  1. 個人リポジトリ writer を作成し、id == n を取得;
  2. API でパストラバーサル組織 username = "../../../../data/gogs/data/tmp/local-r/n/nested" を作成 → 物理ディレクトリが writer の作業ツリー内に配置される;
  3. その組織下にリポジトリ rce-x を作成 → local-r/n/nested/rce-x.git に配置される;
  4. writer をクローンし、nested/rce-x.git/hooks/update を通常のファイルとしてコミットして push(これにより writer の作業ツリー内に配置される);
  5. API で writer のファイル操作をトリガー → Gogs が local-r/n/ で git を実行 → git が hooks/update を実行 → RCE。

重要:悪意のあるフックは通常のリポジトリ内容として通常の push で侵入するため、ENABLE_GIT_HOOKS 設定は不要です——これが「従来の git hooks 悪用」の手法との違いです。

詳細なパッチ diff 分析は patch/ANALYSIS.md を参照。


検知

完全なルールは detection/ にあります:

  • Sigma ルール:detection/sigma/ — 攻撃試行(../ を含む API リクエスト)と悪用成功(ファイルシステムへの配置)をカバー
  • SIEM クエリ:detection/queries.md — Splunk / Elastic / Kibana / Loki
  • IOC:detection/iocs.md — ファイルシステムの痕跡、ログ署名、ユーザー名の特徴

最も重要な 2 つ:

  1. WAF / リバースプロキシ層でのブロック:POST /api/v1/user/orgs および POST /api/v1/org/*/repos の JSON ボディ内の username/name フィールドに .. または / が含まれる場合。
  2. ファイルシステムの検査:/data/gogs/data/tmp/local-r/*/ 配下に予期しないサブディレクトリ(nested/、rce-*.git、hooks/update)が存在する場合。

防御向けツール

  • tools/check_version.py — 非侵入型バージョンスキャナー:GET /api/v1/version で Gogs インスタンスが < 0.14.3 かどうかを確認し、バッチスキャン、CSV 出力に対応。資産棚卸しに適しています。

本リポジトリは兵器化された悪用ツールを提供しません。再現には 公式 advisory が参照する公開 PoC を使用し、隔離された環境でのみ行ってください。


実験環境

detection/ のルールは影響を受ける Gogs で検証する必要があります。lab/docker-compose.yml は隔離された Gogs 0.14.2 環境を提供し、ブルーチームが検知ルールのヒットテストを行うことができます。インターネットに公開せず、ローカルのみで使用してください。


タイムライン

日付イベント
2026-06-08CVE 予約
2026-06-24公開開示、Gogs 0.14.3 リリース
2026-06-24公式 advisory GHSA-c39w-43gm-34h5 公開

参考

  • 公式 advisory:https://github.com/gogs/gogs/security/advisories/GHSA-c39w-43gm-34h5
  • 修正 PR:https://github.com/gogs/gogs/pull/8334
  • OSV:https://osv.dev/vulnerability/CVE-2026-52813
  • Gogs 0.14.3 release:https://github.com/gogs/gogs/releases/tag/v0.14.3

⚠️ "gitrebase パラメータインジェクション" の誤情報について

この CVE を "Gogs gitrebase パラメータインジェクション リモートコード実行" と説明している情報がネット上にありますが、それは誤りです。本脆弱性は git rebase / gitrebase とは関係なく、根本原因は API のパストラバーサルです。本ドキュメントは実際の脆弱性に基づいて分析しています。


ライセンス

MIT — LICENSE を参照。

ツールをダウンロード