Giteaの重大な脆弱性、パブリック限定トークンでプライベートリポジトリへの書き込みとActionsワークフローの起動が可能に

Giteaの管理者は、重大な認可の脆弱性が発見されたことを受け、システムのアップグレードを強く推奨されています。

Hacking& Cracking

この脆弱性により、パブリック限定のAPIトークンを使ってプライベートなプルリクエストのブランチを変更でき、さらにはGitea Actionsのワークフローを起動させられる可能性があります。

この脆弱性はCVE-2026-58443およびGHSA-xxjv-752h-3vp2として追跡されており、Gitea 1.26.4以前のバージョンに影響します。この問題はGitea 1.27.0で修正済みです。

Giteaの重大な脆弱性

この脆弱性は、Giteaのパブリック限定トークン制限の適用に一貫性がないことに起因します。write:repositoryのアクセス権を持つパブリック限定トークンは、本来プライベートリポジトリへのアクセスや変更ができないはずです。

プライベートリポジトリへの直接的な書き込みは実際に失敗しますが、攻撃者はパブリックリポジトリのプルリクエスト更新エンドポイントを悪用することで、プライベートなプルリクエストのヘッドブランチに対するサーバー側の書き込みを引き起こすことができます。

影響を受けるAPIエンドポイントは以下の通りです。

POST /api/v1/repos/{public-owner}/{public-repo}/pulls/{index}/update

Giteaは、URLパス内のリポジトリ、すなわちプルリクエストのパブリックなベースリポジトリに対してパブリック限定の検証を適用します。このベースリポジトリはパブリックであるため、トークンは制限チェックを通過してしまいます。

その後、プルリクエストの更新処理では、Giteaはプルリクエストのヘッドリポジトリに対する書き込み権限を、アクティブなAPIトークンに紐づく制限を再評価するのではなく、ユーザーアカウントの通常のロールベースアクセス制御権限に基づいて評価します。

その結果、プライベートなフォークやプライベートなプルリクエストのヘッドリポジトリへの書き込み権限を持つユーザーは、パブリック限定トークンを使って間接的にそのプライベートブランチを更新できてしまいます。

この操作により、同じトークンではプライベートリポジトリ内のファイルを直接作成・変更できないにもかかわらず、パブリックなベースリポジトリからのコミットがプライベートなヘッドブランチにマージまたはリベースされます。

この脆弱性はCWE-863(不適切な認可)に分類されており、CVSS 3.1スコアは10.0、ベクターはCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:H/A:Hです。

この攻撃はネットワーク経由で行うことができ、必要な権限は低く、ユーザーの操作も不要です。変更されたセキュリティコンテキスト内で、完全性と可用性に影響を及ぼす可能性があります。

研究者らは、このサーバー側のブランチ更新によって、プライベートリポジトリ内に設定されたワークフローも起動できることを実証しています。この概念実証では、特定のヘッドブランチへのプッシュ時に実行されるよう設定されたワークフローを持つプライベートリポジトリが用意されました。

パブリック限定トークンが、そのブランチに紐づくプルリクエストに対して更新エンドポイントを呼び出した後、Giteaはプライベートリポジトリ用のActions実行(run)とジョブを作成しました。

このようにワークフローが起動してしまう挙動は、運用上のリスクを一段と高めます。攻撃が成功すると、パブリックなベースからのコミットがプライベートブランチに取り込まれるだけでなく、プライベートリポジトリのプッシュイベントに紐づく自動化処理まで作動してしまう可能性があります。

ワークフローの設定内容によっては、ランナーのキャパシティを消費したり、後続のビルドやデプロイのプロセスを変更したり、信頼されたCI環境内でコマンドを実行したりすることにもつながりかねません。

この脆弱性を悪用するには、write:repositoryスコープを持つ有効なパブリック限定トークンが必要であり、そのトークンはプライベートなヘッドブランチへの通常の書き込み権限を持つユーザーに属している必要があります。

Hacking& Cracking

攻撃者はさらに、パブリックなベースリポジトリを管理下に置くかアクセス権を持っている必要があり、パブリックなベースとプライベートなヘッドリポジトリとの間に整合するプルリクエストの関係を確立する必要もあります。

セルフホスト型のGiteaを運用している組織は、直ちにバージョン1.27.0へアップグレードすべきです。パッチ適用が完了するまでの間、管理者はパブリック限定トークンの利用状況を見直し、不要なリポジトリ書き込みトークンを失効させ、プルリクエスト更新APIの呼び出し履歴を監査し、プライベートリポジトリのActions実行についてプッシュによって予期せず起動されたワークフローがないか点検することが望まれます。

この問題はohxorud-devによって報告され、修正についてはGiteaのコントリビューターであるbircni氏の功績とされています。

 脅威検知と迅速な調査を加速し、SOCを強化しましょう。 -> ANY.RUNを自社のSOCに統合する はこちら

翻訳元: https://gbhackers.com/critical-gitea-flaw-trigger-actions-workflows/

ソース: gbhackers.com