先に結論。 自分で立てた Gitea 1.17〜1.27.0 を使っているなら、今日中に 1.27.1 へ更新してください。CISAは2026年8月25日にこの脆弱性を「悪用が確認された脆弱性カタログ(KEV)」へ追加し、米国連邦機関に対する是正期限を 2026年8月28日 に設定しています。すでに実環境での攻撃が観測されているリモートコード実行の脆弱性で、公式は回避策を示していません。対処は更新だけです。
何が起きるのか
Giteaの `diffpatch` APIに同じパッチを2回送ると、ファイルの追加どうしが衝突する状態(add/add collision)を作れます。Gitはこのときスリーウェイマージのフォールバック処理に入り、インデックス上のパスをチェックアウトします。ベアリポジトリでは `$GIT_DIR` がルートになるため、`hooks/post-index-change` という名前で実行可能なファイルを置くと、それがそのまま生きたGitフックとして動き出します。結果として攻撃者のコマンドが Giteaのサービスアカウント権限で実行されます。
公式アドバイザリは、この時点でアプリケーションの秘密情報、データベース資格情報、マウントされたリポジトリ、OAuthトークンが露出しうると述べています。
悪用に必要な条件を正確に押さえる
CVSS 3.1のベクタは `AV:N/AC:L/PR:N/UI:N`(ネットワーク経由・権限不要・利用者の操作不要)ですが、この `PR:N` は「誰でも登録できる設定のインスタンス」を前提にした値です。公式アドバイザリが挙げている条件は、攻撃者が「既存リポジトリへの書き込み権限を持つ」か、または「新しいリポジトリを作成できる」ことです。Giteaは既定で誰でも登録できるため、その設定のままなら実質的に未認証の攻撃者でも条件を満たします。一方でCISAは同じ脆弱性を「リポジトリへの書き込み権限を持つ攻撃者」と表現しています。
新規登録を閉じていても、書き込み権限を持つ既存アカウントからは成立します。「登録を閉じているから安全」とは判断しないでください。
影響版と修正版
- ▸影響: Gitea 1.17 から 1.27.0 まで(1.27.0を含む)
- ▸修正: Gitea 1.27.1
- ▸MITREのCVEレコードの記載は「1.17 以上 1.27.1 未満」
- ▸CWE分類: CWE-94(コード生成の制御不備)
今すぐ行う確認
- ✓稼働中のGiteaのバージョンを確認し、1.27.1以上へ更新する
- ✓更新までに時間がかかる場合は、そのインスタンスがインターネットに露出しているかを確認する
- ✓リポジトリへの書き込み権限を持つアカウントと、新規登録を許可する設定を棚卸しする
- ✓各リポジトリの hooks ディレクトリに、身に覚えのない実行可能ファイルが無いか確認する
- ✓Giteaのサービスアカウントで動いた不審なプロセスと、設定ファイル内の資格情報の露出を調査する
- ✓露出していた形跡があれば、更新後にOAuthトークンとデータベース資格情報の再発行を検討する
# 稼働中のバージョンを確認する
gitea --version
# Dockerで動かしている場合
docker exec <コンテナ名> gitea --version悪用状況と期限
CISAは2026年8月25日にKEVへ追加し、是正期限を2026年8月28日としています。ランサムウェアでの利用有無は「不明(Unknown)」と記載されています。資産調査ツールを提供するrunZeroは「CVE-2026-60004が実環境で悪用されている証拠がある」と述べています。
注意したいのは、NVDへのCVE登録(8月26日)よりKEVへの追加(8月25日)のほうが先だったことです。「NVDにまだ出ていないから様子見」という判断が通用しない速さで動いています。
スコアの出典について
本記事のCVSS 9.8は、NVDに掲載されているMITRE(採番機関)由来の CVSS 3.1 の値です。この記事を書いた2026年8月27日時点でNVDのステータスは「Undergoing Analysis(解析中)」であり、NVD自身の一次評価はまだ付いていません。今後NVDが独自に評価した場合、数値や深刻度の区分が変わる可能性があります。読者がNVDを開いたときに違う数字が出ていたら、この経緯を思い出してください。
1.27.1で直るもう1件について
Gitea公式のリリース告知は、1.27.1にもう1件のセキュリティ修正も含まれるとしています。Org-mode の `#+INCLUDE` ディレクティブを悪用した未認証の任意ファイル読み取りです。ただし本記事の確認時点では、この件に割り当てられた番号がNVDにもMITREにも登録されていません。実在を確認できない識別子は載せない方針のため、本記事では番号を扱いません。いずれにせよ1.27.1へ更新すれば両方とも解消します。
