
CVE-2026-85706 — GitLab パストラバーサル IOC スキャナー & 検出ツールキット。重大な未認証の GitLab CE/EE パストラバーサル脆弱性の悪用を、IOC スキャン、Sigma、Suricata/Snort、SIEM 検出ルールを用いて検出・ハンティングします。
GitLab CE/EE リポジトリコミット API の未認証パストラバーサル (CVSS 3.1: 10.0, 緊急) ステータス: 野外で活発に悪用中 · CISA KEV に掲載 (2026-09-11、期限 2026-09-14) · GitLab 2026-09-10 で修正済み
CVE-2026-85706 に対応する無料のオープンソース インシデントレスポンスおよび脅威ハンティングツールキットです。これは GitLab Community Edition (CE) および Enterprise Edition (EE) の リポジトリコミット API に影響する、緊急の未認証パストラバーサル脆弱性です。本リポジトリは、セキュリティチーム、SOC アナリスト、検出エンジニア、GitLab 管理者向けに、すぐに実行できる IOC (侵害指標) スキャナー、Sigma / Suricata / Snort 検出ルール、Splunk / Elastic / OpenSearch ハンティングクエリ、および ステップバイステップの修復ガイド を提供します。悪用の試みを検出し、パッチ適用状況を確認し、この GitLab ゼロデイ / n-day 脆弱性に迅速に対応するために必要なすべてが揃っています。
🔎 「自分は影響を受けているか?」を最速で確認したい場合 は クイックスタート へ。
🚨 どのバージョンにパッチを適用すべきか確認したい場合 は 修正バージョンとパッチ へ。
未認証の攻撃者が、GitLab のリポジトリコミット API に対して細工された単一の HTTP リクエストを送信し、ディレクトリトラバーサルシーケンス (../、URL エンコードされた変種など) を含む file.path (または file_path) パラメータを指定することで、サーバーが意図されたリポジトリディレクトリ外の任意のファイルの内容を返すことができます。これには GitLab 自身のシークレットファイル、データベース設定、SSH 秘密鍵、その他の機密性の高いサーバー側データが含まれます。認証情報が不要で、リクエストの作成が容易であるため、GitLab および第三者の研究者はこれを最大深刻度 (CVSS 10.0) と評価しており、CISA は 野外での活発な悪用 を確認しています。
gitlab-secrets.json、database.yml、または CI/CD ランナートークンを読み取った攻撃者は、最初のファイル読み取りだけが示唆するよりもはるかに深いアクセスへとピボットできます。GitLab は 2026-09-10 に以下のリリースで CVE-2026-85706 を修正しました:
これらのブランチ内の以前のパッチレベル、または完全に古いメジャー/マイナーブランチにあるセルフマネージド GitLab CE/EE インスタンスは 脆弱 と見なされ、直ちにアップグレードする必要があります。GitLab.com の SaaS 提供は GitLab が直接パッチを適用しており、お客様の対応は不要です。完全なステップバイステップのアップグレードおよびインシデントレスポンスガイドについては docs/remediation.md を参照してください。
アップグレードに関する注意: シングルノードの GitLab インスタンスでは、これらのバージョンへのアップグレードは、GitLab が再起動する前にデータベースマイグレーションが完了する間のダウンタイムを伴います。マルチノードインスタンスでは、GitLab が文書化したゼロダウンタイムアップグレード手順に従うことで、ダウンタイムなしでパッチを適用できます。バージョン 19.3.2 には、アップグレード完了後に実行されるポストデプロイマイグレーションも含まれています。これをメンテナンスウィンドウに織り込んでください。
CVE-2026-85706 は、合計 17 件の脆弱性をカバーする緊急 GitLab セキュリティリリース の主要な問題でした。同じリリースの他の 2 件の問題は、同様の攻撃対象領域と認証情報/シークレット露出リスクに影響するため、併せて追跡する価値があります:
実用的な結論: CVE-2026-85706 のためにパッチを適用する場合、同じ 19.3.2 / 19.2.6 / 19.1.8 リリースで上記すべての修正をすでに取り込んでいます。CVE-2026-85706 のみにパッチを適用し、残りを先送りする理由はありません。これは独立してスケジュール可能な修正のメニューではなく、完全に適用すべき 1 つのリリースとして扱ってください。
gitlab-cve-2026-85706-ioc/ ├── README.md ← you are here ├── LICENSE ← MIT ├── CHANGELOG.md ├── CONTRIBUTING.md ├── SECURITY.md ├── scanner/ │ ├── gitlab_cve_2026_85706_ioc_scanner.py ← main IOC scanner (stdlib-only Python 3) │ └── requirements.txt ← documents "no dependencies needed" ├── detection/ │ ├── sigma_rule_gitlab_cve_2026_85706.yml ← Sigma rule (SIEM-agnostic) │ ├── network_ids_cve_2026_85706.rules ← Suricata/Snort signatures │ └── siem_hunting_queries.md ← Splunk / Elastic / OpenSearch / grep queries ├── docs/ │ ├── ioc_list.md ← full IOC reference (network, host, post-exploitation) │ ├── remediation.md ← patch & incident-response playbook │ └── timeline.md ← public disclosure & exploitation timeline ├── tests/ │ ├── test_scanner.py ← unit tests (stdlib unittest) │ └── fixtures/sample_production_json.log ← sanitized sample log for testing └── .github/workflows/ci.yml ← GitHub Actions: lint, test, smoke-test on every push
---
## 🚀 クイックスタート
### 1. GitLab ログを IOC でスキャンする
スキャナーは **Pure Python 3 標準ライブラリ** のみで動作します — `pip install`
は不要なので、ロックダウンされた GitLab ホストにこの 1 ファイルだけをコピーして
すぐに実行できます。```bash
git clone https://github.com/jithinkrishnanrs/gitlab-cve-2026-85706-ioc.git
cd gitlab-cve-2026-85706-ioc
python3 scanner/gitlab_cve_2026_85706_ioc_scanner.py \
--production-log /var/log/gitlab/gitlab-rails/production_json.log \
--api-log /var/log/gitlab/gitlab-rails/api_json.log \
--nginx-log /var/log/gitlab/nginx/gitlab_access.log \
--format json --out report.json
終了コード 1 は、少なくとも 1 つの潜在的な IOC が見つかったことを意味します — すぐに report.json を確認してください。終了コード 0 は、提供されたログに一致するものが見つからなかったことを意味します(制限事項 を参照 — これは侵害がないことの保証ではありません)。
--generic-log(繰り返し指定可能なフラグ)で任意のログやローテーションされたログを指定することもでき、レポートの形式は --format text|json|csv で選択できます。
python3 scanner/gitlab_cve_2026_85706_ioc_scanner.py --check-version 19.2.3
python3 scanner/gitlab_cve_2026_85706_ioc_scanner.py --check-version 19.2.6
### 3. 検出ルールを SIEM / IDS にデプロイする
- [`detection/sigma_rule_gitlab_cve_2026_85706.yml`](https://github.com/jithinkrishnanrs/gitlab-cve-2026-85706-ioc/blob/main/detection/sigma_rule_gitlab_cve_2026_85706.yml)
を Sigma 互換パイプライン(`sigma-cli` 経由の Splunk、Elastic
Detection Rules、Microsoft Sentinel、Chronicle など)にインポートします。
- [`detection/network_ids_cve_2026_85706.rules`](https://github.com/jithinkrishnanrs/gitlab-cve-2026-85706-ioc/blob/main/detection/network_ids_cve_2026_85706.rules)
を Suricata または Snort にデプロイします — **まずはアラートのみのモードで開始**し、
ブロッキングを有効化する前に SID/しきい値を環境に合わせて調整してください。
- [`detection/siem_hunting_queries.md`](https://github.com/jithinkrishnanrs/gitlab-cve-2026-85706-ioc/blob/main/detection/siem_hunting_queries.md)
からすぐに使えるクエリをコピー&ペーストしてください。
Splunk(SPL)、Elastic/Kibana(KQL + DSL)、OpenSearch(PPL)、および
プレーンな `ripgrep`/`grep` によるトリアージに対応しています。
---
## スキャナーの仕組み
`gitlab_cve_2026_85706_ioc_scanner.py` は、GitLab の構造化 JSON ログ
(`production_json.log`、`api_json.log`)および一般的な combined 形式の
リバースプロキシアクセスログを解析し、CVE-2026-85706 について公開されている
悪用パターンに一致するリクエストを検出します。
1. **エンドポイント一致** — リクエストパスが脆弱なエンドポイント群に該当します:
`/api/v4/projects/:id/repository/commits` およびそのサブリソース。
2. **パラメータ一致** — `file.path` / `file_path` / `path` 形式の
パラメータがクエリ文字列、フォームボディ、または JSON ボディに存在します。
3. **ペイロード一致** — そのパラメータの値にパストラバーサル
シーケンス(`../`、URL エンコード、二重エンコード、過長 UTF-8、および
セミコロンによるパスセグメントのバリアント)が含まれる **または** 既知の
機密対象ファイル(`/etc/passwd`、`gitlab-secrets.json`、`secrets.yml`、
`database.yml`、SSH 秘密鍵など)を参照しています。
4. **認証コンテキスト** — スキャナーは `PRIVATE-TOKEN`、
`Authorization`、または非 null の `user_id` フィールドを確認して、
リクエストが認証済みかどうかを判定し、この CVE の核心である
**未認証 / 認証前** の悪用条件に一致するかを調べます。
5. **レートヒューリスティック** — ペイロード一致とは独立に、短時間に
commits API へ異常に大量のリクエストを行っている送信元 IP を、
スクリプトによる偵察の可能性が高いとしてフラグ付けします。
検出結果は **CRITICAL / HIGH / MEDIUM** でスコアリングされ、
トリアージ用に構造化 JSON、CSV、または人間が読めるテキストとして
エクスポートされます。
## 出力例```text
CVE-2026-85706 IOC Scan Report — 2 finding(s)
============================================================
[CRITICAL] 2026-09-11T02:14:33.120Z src=203.0.113.9 method=POST auth=False
path: /api/v4/projects/42/repository/commits/HEAD
matched: ../../../../etc/passwd
reason: path-traversal sequence in file path parameter; known sensitive/system file referenced; unauthenticated request (matches pre-auth exploitation condition)
log: production_json.log
[CRITICAL] 2026-09-11T02:16:45.501Z src=203.0.113.9 method=POST auth=False
path: /api/v4/projects/17/repository/commits/abc123
matched: ..%2f..%2f..%2fopt%2fgitlab%2fembedded%2fservice%2fgitlab-rails%2fconfig%2fsecrets.yml
reason: path-traversal sequence in file path parameter; unauthenticated request (matches pre-auth exploitation condition)
log: production_json.log
(tests/fixtures/ 内のサニタイズ済みサンプルフィクスチャから生成。)
ホストベースおよびポストエクスプロイトの指標を含む完全な詳細は
docs/ioc_list.md にあります。主要なネットワーク指標は以下のとおりです:
/api/v4/projects/<id>/repository/commits* へのリクエスト../、%2e%2e%2f、..%2f、%252e%252e%252f、または類似のトラバーサルシーケンスを含む file.path / file_path パラメータ/etc/passwd、/etc/shadow、gitlab-secrets.json、secrets.yml、database.yml、id_rsa、.env、または /opt/gitlab/embedded/service/gitlab-rails/config/secrets.yml への参照完全なプレイブックは docs/remediation.md を参照してください。
概要:
GitLab.com(SaaS)は影響を受けますか? GitLab.com については顧客側の対応は不要です — GitLab は自社の SaaS プラットフォームに直接パッチを適用します。本ツールはセルフマネージドの GitLab CE/EE インスタンス向けです。
悪用されるには認証が必要ですか? いいえ — それこそがこの CVE を CVSS 10.0 にしている理由です。単一の API エンドポイントに対する未認証のパストラバーサルです。
公開されたエクスプロイト / PoC はありますか?
本稿執筆時点で、確認された公開の概念実証は特定されていませんが、活発なスキャン/プロービングが観測されています。本リポジトリにはエクスプロイトコードは含まれず、リンクもしていません — その理由は CONTRIBUTING.md を参照し、最新のベンダーガイダンスについては常に公式の GitLab CVE-2026-85706 アドバイザリ を確認してください。
スキャナーは侵害されたかどうかを確実に教えてくれますか? そのようなことを保証できるツールはありません。提供されたログに基づき、ベストエフォートの検知を行います。制限事項と免責事項 を参照してください。
必要なログ保持期間はどれくらいですか?
GitLab のデフォルトのログローテーションでは、開示日(2026-09-10)までログが保持されない可能性があります。オンホストのログがすでにローテーションされている場合は、集中管理された SIEM/ログアーカイブから取得してください — detection/siem_hunting_queries.md の注記を参照してください。
このリポジトリは GitLab Helm/Kubernetes や Docker デプロイメントで動作しますか?
はい、スキャナーが読み取れるファイルに production_json.log / api_json.log(またはイングレス/リバースプロキシのアクセスログ)をエクスポートできる限り動作します。3 つの名前付きログタイプ以外には --generic-log を使用してください。
影響を受けるバージョンは正確にはどれですか? GitLab CE/EE 18.7 から(19.1.8 を含まず)まで、19.2 から(19.2.6 を含まず)まで、および 19.3 から(19.3.2 を含まず)まで。18.7 ブランチより古いものもサポート外/サポート終了であり、脆弱として扱い、無条件にアップグレードすべきです。
これは実際に悪用されたのか、それとも単に「リスクがある」だけですか? 悪用が確認されています。watchTowr Labs は GitLab の公開開示から約 24 時間後に最初の実環境での悪用試行を観測し、CISA はその後、現実世界での悪用を確認したとして CVE-2026-85706 を KEV カタログに追加しました — これは理論上の、あるいは「責任ある開示のみ」の所見ではありません。
CISA BOD 26-04 の「フォレンジックトリアージ」指定は私にとって何を意味しますか?
CISA はこの CVE を Binding Operational Directive 26-04 に基づくフォレンジックトリアージを要するものとして指定しました。これは連邦システムにおいては、脆弱でインターネットに公開されたインスタンスがパッチ適用前にすでにアクセスされた可能性があるという前提を意味します — 単に理論的に露出していたというだけではありません。同じ前提はあらゆる組織にとって妥当なデフォルトです:パッチ適用をインシデントレスポンスプロセスの第一歩として扱い、その終わりとはしないでください。完全な侵害前提チェックリスト(シークレットローテーション、認証情報レビュー、CI/CD 監査)については docs/remediation.md を参照してください。
同じ GitLab リリースで他に修正されたものはありますか? はい — 2026 年 9 月 10 日のリリースでは合計 17 件のセキュリティ問題が修正されました。これには 2 件目のCritical 深刻度の問題(GitLab EE の GraphQL サブスクリプションシリアライザーにおける安全でないデシリアライゼーション)と、Unicode 変換ラッパーにおけるHigh 深刻度のバッファオーバーフローが含まれます。同じリリースで修正された関連脆弱性 を参照してください。これらはすべて同じ 19.3.2 / 19.2.6 / 19.1.8 バージョンで提供されるため、CVE-2026-85706 へのパッチ適用によりこれらも同時に修復されます。
docs/ioc_list.md の誤検知に関する注記を参照してください。CONTRIBUTING.md を参照してください。新しい IOC、検知ルールの移植、誤検知レポート、スキャナー改善のコントリビューションを歓迎します — ガイドライン(エクスプロイトコード禁止ポリシーおよびデータサニタイズ要件を含む)については CONTRIBUTING.md を参照してください。
完全な引用詳細と追加のコンテキストは
docs/timeline.md にあります。
MIT License の下でリリースされています。検知コンテンツ(Sigma、 Suricata/Snort ルール、SIEM クエリ)は防御目的で現状のまま提供されます; 運用で依存する前に、しきい値と誤検知処理を自組織の環境に合わせて調整してください。
CVE-2026-85706 GitLab CVE-2026-85706 GitLab path traversal GitLab vulnerability GitLab IOC GitLab indicators of compromise GitLab security advisory GitLab exploit detection GitLab CVSS 10.0 GitLab CISA KEV GitLab repository commits API vulnerability GitLab unauthenticated file read GitLab arbitrary file read path traversal CVE 2026
| CVE ID | CVE-2026-85706 |
| ベンダー / 製品 | GitLab Community Edition (CE) & Enterprise Edition (EE)、セルフマネージド |
| 脆弱性クラス | パストラバーサル (CWE-35)、より広範なパス名の不適切な制限ファミリー (CWE-22) の一部 |
| 影響を受けるコンポーネント | リポジトリコミット API (/api/v4/projects/:id/repository/commits...) |
| 根本原因 | 影響を受ける API エンドポイントにおける不適切なパス制限と、認証強制の欠如の組み合わせ |
| 影響を受けるバージョン | GitLab CE/EE 18.7 以上 (19.1.8 未満)、19.2 以上 (19.2.6 未満)、19.3 以上 (19.3.2 未満) |
| 必要な認証 | なし — 未認証、認証前の悪用 |
| 攻撃ベクトル | ネットワーク、単一の HTTP リクエスト |
| CVSS 3.1 スコア | 10.0 (緊急) |
| 影響 | GitLab サーバー上の任意ファイル読み取り — 設定ファイル、シークレット、トークン、ソースコード、場合によっては SSH キーやデータベース認証情報 |
| 報告者 | 外部セキュリティ研究者 (HackerOne ハンドル "s3ntago")、GitLab の HackerOne バグバウンティプログラム経由 |
| 公開 / 修正 | 2026年9月10日 — 合計 17 件の脆弱性 を修正する緊急 GitLab セキュリティリリースの一部 (関連脆弱性 を参照) |
| CISA KEV | 2026年9月11日に追加。連邦文民機関の修復期限は 2026年9月14日。CISA はこの CVE を Binding Operational Directive (BOD) 26-04 に基づくフォレンジックトリアージ の対象として指定しており、パッチ適用前に脆弱なシステムがすでにアクセスされていた可能性を反映している |
| 悪用状況 | 野外での活発なスキャン / プロービングを確認 — watchTowr は公開開示から約 24 時間 後に最初の野外悪用の試みを報告し、大規模な悪用が続く可能性が高いと評価している |
| 公開 PoC | 執筆時点で公開されていることは確認されていない |
| GitLab.com / Dedicated | GitLab.com (SaaS) は開示時点ですでにパッチ適用済み。GitLab Dedicated のお客様は対応不要。セルフマネージド の CE/EE インスタンスのみ対応が必要 |
| 悪用状況 | 野外での活発なスキャン / プロービングを確認 — watchTowr は公開開示から約 24 時間 後に最初の野外悪用の試みを報告し、大規模な悪用が続く可能性が高いと評価している |
| 公開 PoC | 執筆時点で公開されていることは確認されていない |
| GitLab.com / Dedicated | GitLab.com (SaaS) は開示時点ですでにパッチ適用済み。GitLab Dedicated のお客様は対応不要。セルフマネージド の CE/EE インスタンスのみ対応が必要 |
| 脆弱性 | 深刻度 | 備考 |
|---|
| CVE-2026-85706 — リポジトリコミット API のパストラバーサル | 緊急 (CVSS 10.0) | 未認証の任意ファイル読み取り — 本リポジトリの焦点 |
| GraphQL サブスクリプションシリアライザーの安全でないデシリアライゼーション (GitLab EE) | 緊急 | GitLab EE のみに影響。この種のデシリアライゼーションの欠陥は、悪用可能性によってはリモートコード実行につながる可能性がある |
| Unicode 変換ラッパーのバッファオーバーフロー (GitLab EE) | 高 | |
| スケジュールされたパイプライン実行ポリシーテストにより、Developer が保護された CI/CD 変数にアクセス可能 | 高 | 本リポジトリの修復ガイドにある「CI/CD シークレットを保護する」対応アクションに関連する認証情報/シークレット露出リスク |
| Markdown JSON テーブルレンダラーのクロスサイトスクリプティング (CE/EE) | 高 | |
| CI/CD 環境変数スコープマッチャーの不適切な認可 (CE/EE) | 高 | |
| GraphQL 複雑度リミッターのサービス拒否 (CE/EE) | 高 | |
| SAML SSO サインイン制限強制の不適切な認証 (CE/EE) | 中 | |
| Workhorse senddata エミッターの不十分に保護された認証情報 (CE/EE) | 中 | |
| 保護された環境承認ルールおよびコンプライアンスフレームワークにおける、その他いくつかの認可バイパスおよびアクセス制御の問題 (EE) | 中 |
PRIVATE-TOKEN / Authorization ヘッダーまたは認証済みセッションを伴わない上記のリクエスト| ファイル | プラットフォーム | 目的 |
|---|
detection/sigma_rule_gitlab_cve_2026_85706.yml | Sigma(SIEM 非依存) | Splunk、Elastic、Sentinel、Chronicle、QRadar などに変換可能なログベースの検知ルール |
detection/network_ids_cve_2026_85706.rules | Suricata / Snort | インライン IDS/IPS センサー向けのネットワーク層シグネチャ |
detection/siem_hunting_queries.md | Splunk、Elastic/Kibana、OpenSearch、grep/ripgrep | 手動/アドホック調査向けのコピー&ペースト可能なハンティングクエリ |
GitLab patch 19.3.2GitLab patch 19.2.6GitLab patch 19.1.8GitLab secrets exposureGitLab CI/CD credential theftSigma rule GitLabSuricata rule GitLabSnort rule GitLabSplunk GitLab huntingGitLab incident responseGitLab threat huntingself-managed GitLab security