New Gogs 0-Day Vulnerability Lets Attackers Run Malicious Code on the Server Remotely
2026/05/28 CyberSecurityNews — 世界で広く導入されているセルフホスト型 Git プラットフォーム Gogs に、Critical なゼロデイ脆弱性が発見された。この脆弱性を悪用する認証済みユーザーであれば、基盤サーバ上での任意のコマンド実行が可能となる。なお、情報公開の時点ではパッチは提供されていない。

この脆弱性を特定した Rapid7 Labs の研究者 Jonah Burgess (CryptoCat) によると、この脆弱性は CVE が採番されていないが、CWE-88 (引数インジェクション) に分類され、CVSSv4 9.4 (Critical) と評価されている。
この脆弱性は Gogs の “Rebase before merging” マージ操作に存在し、影響の範囲は最新の安定版バージョン 0.14.2 および、開発版バージョン 0.15.0+dev (commit b53d3162) となる。さらに、Rebase マージ機能をサポートする、過去バージョンも影響を受ける可能性が高い。
Gogs 0-Day 脆弱性
この攻撃の手法は、”internal/database/pull.go” 内の Merge() 関数を標的とするものになる。この関数は、プルリクエストのベースブランチ名を、POSIX の “–” 区切りや引数に対する適切なサニタイズなしで git rebase コマンドへ受け渡す。
したがって、”–exec=touch${IFS}/tmp/rce_proof” のような悪意のブランチ名を作成する攻撃者は、そのブランチを用いてプルリクエストを作成できる。
続いて、rebase マージが実行されると、Git の引数パーサは “–exec” をブランチ名ではなくフラグとして解釈するため、各コミット再適用後に攻撃者の指定コマンドが、”sh -c” 経由で実行される。
その結果、Gogs サーバ・プロセス・ユーザー (通常は Docker やバイナリ環境での git ユーザー) 権限で任意のコマンド実行が可能となる。
この脆弱性が、特に深刻である理由は攻撃難易度の低さにある。Gogs はデフォルトでユーザー登録およびリポジトリ作成が無制限に許可されている。
そのため、未認証の攻撃者であっても、アカウント作成/リポジトリ作成と、設定での rebase マージを有効化することで、他ユーザーや管理者の操作を必要とせずに攻撃チェーンを完結できる。
成功時の影響は極めて深刻である。
- サーバ侵害:Gogs プロセスユーザー権限での任意コマンド実行。
- クロステナント・データ漏洩:他ユーザーのプライベート・リポジトリなどの全リポジトリの読み取り。
- 認証情報窃取:パスワードハッシュ/API トークン/SSH キー/2FA シークレットの取得。
- 横展開:サーバ・ネットワーク内における他システムへの侵入。
- サプライチェーン攻撃:ホストされたリポジトリ内のコードを改竄。
Gogs は、約 50,000 の GitHub スターと 5,000 以上のフォークを持ち、この脆弱性が公開された時点の Shodan 検索では 1,141 件のインターネット公開インスタンスが確認されている。ただし、内部ネットワークや VPN 環境を含めると、実際の導入数はそれ以上に達すると推定される。
完全に機能する PoC として Metasploit モジュールが公開され、数秒で自動化された攻撃が可能な状況にある。
防御側は、以下の監視を実施すべきである。
- 重要リポジトリのプルリクエスト履歴を精査する。
- ブランチ名が “–” で始まるリポジトリを監査する。
- Gogs サーバログの ERROR で “git checkout ‘–exec=<…>'” のようなパターンを検出する。
- “/-/user/settings/applications” における不審な “msf_<hex>” トークンを確認する。
対策
現時点でベンダーからのパッチは存在しない。パッチが公開されるまでの暫定措置として、以下の対策を速やかに適用する必要がある。
- “app.ini” で DISABLE_REGISTRATION = true を設定し、未信頼ユーザー登録を無効化する。
- MAX_CREATION_LIMIT = 0 を設定し、新規リポジトリ作成を制限する。
- すべてのリポジトリで “Rebase before merging” 設定を監査する。
2026年3月17日の時点において、この脆弱性は Rapid7 から Gogs メンテナーへ報告されたが、2026年5月の時点でも修正は提供されていない。
訳者後書:今回の Gogs の脆弱性は、 プルリクエストをマージするプログラム内において、ブランチ名に対するサニタイズ処理の不足に起因します。 この脆弱性は CVE が採番されていませんが、引数インジェクションに分類されるものであり、git rebase コマンドにデータを渡す際の不具合を引き起こします。具体的には、引数の区切り文字の欠如により、 特定のオプション文字を含んだ悪意のブランチ名が、システム側でコマンドのフラグとして解釈されてしまいます。これにより、プログラムの処理を通じて任意のコマンドがサーバ上で実行される可能性がります。すでに Rapid7 は、完全に機能する PoC として Metasploit モジュールを公開していますので、ご利用のチームは、ご注意ください。よろしければ、Gogs での検索結果も、ご参照ください。
You must be logged in to post a comment.