Gitea の脆弱性 CVE-2026-58443 が FIX:プライベート・ブランチの変更を実証する PoC

Critical Gitea Vulnerability Enables Private Repository Writes and Actions Workflow Triggers

2026/07/21 CyberSecurityNews — Gitea が GitHub Security Advisory で公表したのは、公開専用 (public-only) のリポジトリ・アクセストークンを介して、private pull request head branch への間接的な書き込みや、プライベート Gitea Actions ワークフローの実行を許してしまう、深刻な脆弱性 CVE-2026-58443 に関する情報である。

この脆弱性は、Gitea の pull request update API エンドポイント (POST /api/v1/repos/{public-owner}/{public-repo}/pulls/{index}/update) に存在し、Gitea バージョン v1.26.4 以下に影響を及ぼす。すでに修正版が v1.27.0 で提供されているため、Gitea ユーザーに強く推奨されるのは、速やかな更新である。

“write:repository” スコープを持つパブリック・リポジトリ専用のトークンは、本来であれば、プライベート・リポジトリへのアクセスや変更を実行できない設計となっている。しかし、パブリック・リポジトリ pull request の API ルートを悪用する攻撃者は、public base repository から private pull request head branch への変更を push できる。

これにより認可バイパスが発生する。API ルートで指定された public base repository に対してのみ、Gitea がトークンの制限を検証し、その後はユーザー・アカウントの通常のロール・ベース権限を使用して private head repository へのアクセスが確認される。その一方で、アクティブなトークンに設定された public-only 制限は再適用されない。

その結果として、プライベート・リポジトリへの直接書き込みでは拒否されるトークンであっても、pull request update API を経由することでプライベート・ブランチの変更が可能になる。

Gitea の脆弱性

GitHub アドバイザリ GHSA-xxjv-752h-3vp2 によると、この脆弱性は CVSS スコア 9.6 (Critical) と評価されており、ベクターは CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:H/A:H である。これが意味するのは、低権限でのリモートからの悪用が可能であり、ユーザーの操作を必要とせず、主に完全性/可用性に影響を及ぼすことだ。

セキュリティ研究者たちが実証したのは、最初に public base repository にコンテンツを作成し、その後に private head branch を対象とする pull request に対して、脆弱な update エンドポイントを呼び出せることである。Gitea は、サーバ側で public リポジトリのコミットを private ブランチへマージ/リベースするため、private head repository で Gitea Actions が有効化されている場合において、この問題はさらに深刻化する。

サーバ側での push が成功すると、push イベント向けに設定されたワークフローが、プライベート・リポジトリ内で実行される。この PoC で確認されたのは、注入されたコミットが一致するプライベート・ワークフローを開始し、ActionRun と関連ジョブが生成されることだ。

この攻撃を成立させる攻撃者にとって必要なことは、write:repository スコープを持つ有効な public-only トークンを保有し、そのトークンに関連付けられたユーザー・アカウントが private pull request head branch に対する通常の書き込み権限を持っていることだ。また、public base repository と base branch から private head branch への更新を許可する、既存の pull request 関係が存在しなければならない。

この脆弱性は、プライベート・リポジトリへの匿名アクセスを許可するものではないが、重要なトークン・セキュリティ境界を損なう欠陥である。自動化環境での偶発的な公開や誤用による影響を抑える目的で、ユーザー組織が public-only トークンを発行することがある。しかし、この脆弱性により、そのような制限付きトークンであっても、特定の pull request 条件下では、プライベート・リポジトリへの書き込みが可能になる。

Gitea 管理者にとって必要なことは、v1.27.0 への速やかなアップグレードである。また、パッチが適用されるまでの間は、リポジトリへの書き込み権限を持つ public-only トークンを確認し、pull request update API を制限するとともに、public から private への fork と pull request の関連性を監査する必要がある。

それぞれのチームは、プライベート・リポジトリ内において、push により予期せず実行されたワークフローの有無を Gitea Actions のログで確認すべきである。特に、public base repository に関連する pull request update API のアクティビティ後に開始されたワークフローについて、重点的に調査することが推奨される。

この脆弱性は、不正な認証の脆弱性 (CWE-863) に分類され、アドバイザリでは、この問題を報告した研究者 ohxorud-dev と bircni に謝意が示されている。