Gogs の脆弱性 CVE-2026-25921 が FIX:未認証ユーザーによる LFS データ改竄の恐れ

Gogs Flaw Could Let Attackers Quietly Overwrite Large File Storage Data

2026/03/10 gbhackers — オープンソースのセルフホスト型 Git サービスである Gogs において、深刻なセキュリティ脆弱性が確認された。この CVE-2026-25921 (CVSS:9.3) を悪用する未認証の脅威アクターは、任意のリポジトリの Git Large File Storage (LFS) オブジェクトを密かに上書きできる。コンテンツ検証の欠如を悪用する脅威アクターは、ステルス型のソフトウェア・サプライチェーン攻撃を実行し、正規のプロジェクト・ファイルをバックドアへと置き換えることが可能になる。

  • CVE ID:CVE-2026-25921
  • 深刻度:Critical (CVSS v3.1:9.3) 
  • 影響ソフトウェア:gogs.io/gogs (Go エコシステム) 
  • 影響バージョン:0.14.1 以下 
  • 修正バージョン:0.14.2 
  • 脆弱性分類:CWE-345 (不十分なデータ真正性検証)
脆弱性の技術的詳細

Git LFS は、オーディオ/データセット/コンパイル済みバイナリなどの大容量ファイルを、Git 内のテキスト・ポインタに置き換え、実際のファイル内容をリモート・サーバに保存する仕組みである。この脆弱性は、Gogs におけるリモート・ファイル処理設計に存在する、複数の危険な判断に起因する。

  • リポジトリ分離の欠如:Gogs は、すべての LFS オブジェクトを単一のグローバル・ディレクトリ・ツリーに保存する。保存パスは Object ID (OID) のみに基づいて生成され、特定のリポジトリ ID と関連付けられていない。その結果、オブジェクトは Gogs インスタンス全体で共有される。
  • コンテンツ検証の欠如:LFS オブジェクトがアップロードされる際に、OID として使用される SHA-256 ハッシュと、実際のファイル内容の一致が完全に検証されていない。したがって、アプリケーションは、クライアントから送信されたファイルを真正性の確認なしに保存してしまう。
  • 不安全な上書き許可:サーバ・コードは、再アップロードおよび既存ファイルの上書きを明示的に許可している。このコードは、同一 OID が常に同一コンテンツを意味するという前提に依存しているが、悪意のクライアントが関与した場合には、この前提は成立しない。

この攻撃は、ネットワークを介した、きわめて低い複雑性で実行可能である。

  1. 攻撃者は、標的リポジトリ内の LFS オブジェクトの OID を特定する。
  2. 続いて、自身のリポジトリへファイルをアップロードする際に、意図的に標的の OID を使用する。
  3. アップロード時に、攻撃者は改竄されたファイル (侵害されたバイナリ/マルウェア/スクリプトなど) を送信する。
  4. Gogs はファイルを検証なしで受け入れ、グローバルな保存パス内の正規 LFS オブジェクトを上書きする。

整合性の検査が存在しないため、オリジナルのリポジトリから対象 LFS オブジェクトを取得するユーザーは、攻撃者が仕込んだ悪意あるペイロードを無警告で受信することになる。Web ページ/コマンドライン上で警告が表示されないため、きわめて危険なソフトウェア・サプライチェーン侵害ベクターとなる。

対策および修復

セキュリティ研究者 zjuchenyuan による開示を受け、Gogs メンテナンス・チームは公式修正を公開した。Gogs を利用する組織は、以下の対策を実施する必要がある。

管理者にとって必要なことは、Gogs インスタンスを速やかに 0.14.2 以降へと更新することだ。このバージョンでは、アップロードされた LFS オブジェクトが主張する SHA-256 ハッシュとの、厳密な一致を確認するための検証プロセスが導入されている。

  • LFS 整合性検証:アップグレード後に、既存の LFS オブジェクトの整合性を手動で確認し、パッチ適用前にファイルが上書きされていないことを検証する必要がある。
  • アクセス監視:即時パッチ適用が困難な場合には、Gogs インスタンスへのネットワークアクセスを制限し、外部ユーザー登録を一時的に無効化することで、脅威アクターによるリポジトリ作成および悪意のアップロードのホスティングを防止すべきである。