GitLabのコミットAPIの脆弱性CVE-2026-85706の悪用

カテゴリ
脆弱性の悪用
目次
  1. 脆弱性の内容
  2. 時系列
  3. 対象の製品と版
  4. 悪用の状況
  5. 修正と回避策
  6. 未公表の事項
  7. 注
  8. 出典
  9. 更新記録
  10. 関連記事

GitLabが2026年9月10日に公開したGitLab CE/EEの修正版は、リポジトリのコミットAPIで、一定の条件下に認証の無い利用者がサーバーの任意のファイルを読めたパストラバーサルの脆弱性CVE-2026-85706を直した⁠[1]。GitLabによると、GitLab.comとGitLab Dedicatedを含む同社が管理する基盤は修正済みである⁠[1]。

脆弱性の内容

表1:CVE-2026-85706の評価
項目値資料
原因リポジトリのコミットAPIの不適切なパスの制限と、認証の強制の欠如⁠[1]
CWECWE-22(パストラバーサル)⁠[4]
CVSS10.0(GitLab、CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N)⁠[1]
SSVCの評価Exploitation: active、Automatable: yes、Technical Impact: total(CISA-ADP)⁠[4]

GitLabのセキュリティ部門が公開した検知の文書によると、マルチパートのアップロードではWorkhorseが要求の本文をバッファし、バッファしたファイルを指すfile.pathパラメータをRailsに渡す⁠[3]。この脆弱性の類では、未認証の呼び出し元がファイルの本文を空にし、添えたfile.pathパラメータでサーバーの設定や秘密の材料を指す要求を送る⁠[3]。パラメータには主にリポジトリのコミットAPIとリポジトリのファイルAPIから到達する⁠[3]。

CrowdSecは、Workhorseは生のURLで経路を照合し、Railsは先にURLを復号すると説明した⁠[14]。リポジトリのAPIのパスの1文字をパーセントエンコードすると、要求はWorkhorseを素通りし、Railsが攻撃者のfile.pathを読む⁠[14]。

GitLabの検知の文書では、サーバー側のgitlab.ymlの読み取りが、CVE-2026-85706の最も価値の高い標的の類に当たる⁠[3]。secrets.ymlとgitlab-secrets.jsonは、セッション・トークン・保存したCI/CD変数・2FAに使うRailsのsecret key baseと暗号鍵を保持している⁠[3]。このため、読み取りが確認されれば、単なる情報の露出でなく認証情報の露出になる⁠[3]。

GitLabは、この脆弱性の報告をHackerOneのバグ報奨金制度を通じて受けた⁠[1]。同じ修正版の修正の表には18件の脆弱性が並び、深刻度がCriticalのものはこの脆弱性とEnterprise EditionのCVE-2026-87719(CVSS 9.9)である⁠[1]。CVE-2026-87719はGraphQLのサブスクリプションのシリアライザの安全でないデシリアライズで、Duo Chatを使える認証済みの利用者がAdvanced Searchの設定と機密の認証情報を取得しうる⁠[1]。

目次へ

時系列

時系列
日付主体内容資料
2026年9月4日-CVE-2026-85706が予約された⁠[4]
2026年9月10日GitLab19.3.2・19.2.6・19.1.8を公開し、CVE-2026-85706を修正した⁠[1]
2026年9月11日watchTowr6時(UTC)から探索を観測し、速報でハニーポット網Attacker Eyeに探索が届いていると報告した⁠[12、14]
2026年9月11日CISAKEVカタログに追加し、追加を知らせる告知を出した⁠[4、5、6、7]
2026年9月11日23時30分-UTCで、CrowdSecが後に遡って見つけた最も早い一致の要求が届いた⁠[14]
2026年9月12日CVE ProgramCVEレコードが公開された⁠[4]
2026年9月14日BSI注意喚起BITS-H 2026-288736-1032を公開した⁠[9]
2026年9月16日JPCERT/CCWeekly ReportでCISAのKEVへの追加を紹介した⁠[11]
2026年9月23日GitLab19.0.9と18.11.12を公開し、CVE-2026-85706とCVE-2026-87719の修正を移植した⁠[1、2]
2026年9月28日CrowdSecこの脆弱性に一致する要求の検知の規則を出した⁠[14]
2026年10月5日CrowdSec観測の報告を公開した⁠[14]

目次へ

対象の製品と版

GitLabの告知によると、製品のデプロイの形(omnibus、ソース、helm chartなど)の記載が無いものは、すべての形が影響を受ける⁠[1]。

表2:影響を受ける版と修正版
製品影響を受ける版修正版資料
GitLab CE/EE19.3以上19.3.2未満19.3.2⁠[1]
GitLab CE/EE19.2以上19.2.6未満19.2.6⁠[1]
GitLab CE/EE19.1以上19.1.8未満19.1.8⁠[1]
GitLab CE/EE19.0以上19.0.9未満19.0.9⁠[1、2]
GitLab CE/EE18.7以上18.11.12未満〔注1〕18.11.12⁠[1、2]

GitLabの保守方針は、セキュリティ修正を現行の安定版に加えて直前の2つの月次リリースに移植するとしている⁠[22]。CrowdSecは、18.7〜18.10には修正版が無いと書いた⁠[14]。

目次へ

悪用の状況

NVDの記録によると、KEVの対応期限は9月14日である⁠[5]。要求措置は、BOD 26-04とCISAの「Forensics Triage Requirements」に沿ってベンダーの指示どおりに緩和策を適用し、緩和策が無ければ製品の使用をやめることとした⁠[5]。

watchTowrの9月11日の速報では、同社がGitLabの公表した技術情報を確かめて脆弱性を再現し、顧客の環境で自管理のインスタンスの露出を確かめた⁠[12]。watchTowrは、悪用の難しさが低いことから、無差別な悪用に急速に移ると高い確度で評価した⁠[12]。

The Hacker Newsは、悪用の要件は少なくとも1つの公開プロジェクトがあることだけだとwatchTowrが述べたと報じた⁠[17]。同じ記事の追記では、悪用が探索から脆弱なインスタンスの特定に進み、悪用の成功と機微なファイルの持ち出しに至ったとwatchTowrが述べている⁠[17]。週末に攻撃者が設定ファイルから秘密を、被害システムのSSHの設定とともに抜き出すのを観測したとも述べた⁠[17]。

CrowdSecの報告によると、同社の追跡は9月11日〜10月5日に一意のIPアドレスを1,022件数えた⁠[14]。その期間のピークは10月2日の94件である⁠[14]。CrowdSec Networkは9月28日〜10月4日に、一致するシグナルを2,835件記録した⁠[14]。シグナルのピークは10月1日の1,160件だった⁠[14]。

CrowdSecは、CTIが関連づけた959アドレスのうち648件がダブリンのAWSのサーバーだったと報告した⁠[14]。この脆弱性にだけ一致したアドレスは114件である⁠[14]。一致した要求は悪用の試みで、成功したかや、標的に攻撃に要る公開プロジェクトがあったかは確認できないとした⁠[14]。IPアドレスの数は攻撃者の数ではなく、数値は標本であって全数ではないとも書いた⁠[14]。

BSIの9月14日の注意喚起では、GitLabが通常のパッチの周期で修正して悪用の知見を公表しなかった一方、週末に攻撃や攻撃の試みの手がかりが重なった⁠[9]。各種のプラットフォームで最初のPoCとエクスプロイトが公開された⁠[9]。BSIは、GitLabが悪用は「一定の条件下で」だけと述べながら条件を特定していないため、公開された多くのGitLabのシステムが潜在的に脆弱と想定すべきとした⁠[9]。注意喚起を出した段階では、攻撃の痕跡(IoC)は知られていなかった⁠[9]。

Rapid7は解説で、公開時に悪用が知られているのはCVE-2026-85706だけだとした⁠[13]。カナダ・サイバーセキュリティセンターは注意喚起AV26-917で、CISAがCVE-2026-85706をKEVに追加したと伝えた⁠[8]。シンガポールのCSAは、脆弱性が活発に悪用されていると報じられ、PoCが公開されているとした⁠[10]。JPCERT/CCは、CISAが悪用を確認しKEVカタログに追加したと紹介した⁠[11]。

表3:悪用の試みの手がかり
種別値示した組織資料
要求の形"/api/v4/projects/{id}/repository/commits/" へのHTTP POSTで、"file.path" パラメータを含むものwatchTowr⁠[12]
要求の宛先POST /api/v4/projects/:id/repository/commits、リポジトリのファイルAPIGitLab⁠[3]
経路の無害化の回避末尾のスラッシュと、経路とパラメータのパーセントエンコードGitLab⁠[3]
検知GitLab LFI attempt reading gitlab.yml、GitLab LFI via metadata.path parameter、GitLab LFI file path attemptGitLab⁠[1]

目次へ

修正と回避策

GitLabは移植の告知で、19.0.9と18.11.12は、18.11と19.0を使う自管理の管理者が先に版を上げなくても修正を当てられるよう、通常の保守方針の外で提供したと説明した⁠[2]。これらの版にほかの変更は含まない⁠[2]。

  1. GitLabは、すべての自管理のインストールを修正版のいずれかへ直ちに更新するよう強く推奨した⁠[1]。
  2. 19.1・19.2・19.3を使うインストールには、移植版ではなく、それぞれの系列の修正版以降への更新を求めた⁠[2]。
  3. 18.11と19.0は他の修正を受けないため、最新のサポート版への更新を引き続き推奨した⁠[2]。
  4. GitLabは検知の文書で、この脆弱性の公開の探索が8月から広く行われていたとして、過去の調査はその期間を対象にすべきとした⁠[3]。
  5. 読み取りを確認したら、更新を待たずに露出した認証情報を入れ替えるよう求めた⁠[3]。

9月10日の修正版はデータベースのマイグレーションを含み、単一ノードのインスタンスでは更新中に停止が生じる⁠[1]。複数ノードのインスタンスは、停止なしの手順で適用できる⁠[1]。

watchTowrは、公開されたインスタンスを早急に更新するか、公開をやめるよう勧めた⁠[12]。CrowdSecは、公開プロジェクトをinternalかprivateにするとwatchTowrの述べる前提条件を除けるが、欠陥は残ると書いた⁠[14]。BSIは、GitLabが助言で回避策を示していないとした⁠[9]。

目次へ

未公表の事項

  • 脆弱性が成り立つ「一定の条件」の中身(GitLabは、各脆弱性の詳細のissueを修正したリリースの90日後に公開するとした⁠[1])
  • 悪用の成功や秘密の持ち出しを受けた組織の名前と数
  • 攻撃者の帰属
  • GitLabによる18.7〜18.10の系列の修正の扱い

注

  • 〔注1〕watchTowr、Rapid7、The Hacker Newsは、影響を受ける版を18.7以上19.1.8未満、19.2以上19.2.6未満、19.3以上19.3.2未満と書いた⁠[12、13、17]。

出典

当事者

公的機関

調査・観測

報道機関

背景資料

更新記録

  • 2026年9月14日:公開した。
  • 2026年9月16日:JPCERT/CCのWeekly Report(出典11)を加え、「時系列」と「悪用の状況」を改めた。
  • 2026年9月17日:シンガポールのCSAの注意喚起(出典10)を加え、「悪用の状況」を改めた。
  • 2026年9月18日:watchTowrの速報の9月18日の更新版(出典12)で、「悪用の状況」と「修正と回避策」を改めた。
  • 2026年9月23日:GitLabの19.0.9と18.11.12の告知(出典2)と、9月10日の告知への同じ日の追記(出典1)、CVEレコードの更新(出典4)を加え、「時系列」「対象の製品と版」「修正と回避策」と注を改めた。
  • 2026年9月24日:NVDの記録の更新(出典5)を加え、「悪用の状況」を改めた。
  • 2026年10月5日:CrowdSecの観測の報告(出典14)を加え、「脆弱性の内容」「時系列」「対象の製品と版」「悪用の状況」「修正と回避策」を改めた。
  • 2026年10月27日:CrowdSecの報告の10月27日の更新版(出典14)で、「悪用の状況」を改めた。
  • 2026年10月28日:GitLabのセキュリティ部門の検知の文書の10月28日の版(出典3)を加え、「脆弱性の内容」「悪用の状況」「修正と回避策」を改めた。

目次へ