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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-26198-analysis — PythonのOrmar ORMにおける重大なSQLインジェクションの詳細解説 — 再現、修正、テスト | Kitploit
ツール/GitHubGitHub/sergicortesabadia/cve-2026-26198-analysis
脆弱性分析コード分析ウェブセキュリティ論文と研究学習と教育
GitHubsergicortesabadia/cve-2026-26198-analysis

CVE-2026-26198-analysis

PythonのOrmar ORMにおける重大なSQLインジェクションの詳細解説 — 再現、修正、テスト

リポジトリを見る

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
75ヶ月前未レビュー
共有

CVE-2026-26198 — Ormar ORMにおけるSQLインジェクション

Python製非同期ORMにおける重大な(CVSS 9.8)SQLインジェクション脆弱性の詳細な分析。再現、解析、修正を含む。

脆弱性の概要

Ormar は、Python向けの人気のある非同期ミニORMであり、FastAPIやStarletteと併用されることが一般的です。バージョン 0.9.9から0.22.0 には、min() および max() 集計メソッドにSQLインジェクションの脆弱性が存在します。

根本原因は「部分的な実装」バグです。sum() と avg() は列パラメータが実際の数値フィールドを参照していることを検証する一方、min() と max() はこのチェックを完全にスキップし、ユーザー入力をそのまま sqlalchemy.text() — 生のSQLシンク — に渡します。

攻撃者は「列」パラメータとしてサブクエリを注入できます:

root@kitploit:~
# 想定される使用法
await Item.objects.max("price")  # → SELECT max(price) FROM items

# 攻撃ペイロード
await Item.objects.max("(SELECT password FROM users LIMIT 1)")
# → SELECT max((SELECT password FROM users LIMIT 1)) FROM items
# 管理者のパスワードが返される!

基本情報

属性値
CVE IDCVE-2026-26198
CVSSスコア9.8(Critical)
CWECWE-89: SQLインジェクション
影響を受けるバージョンormar 0.9.9 – 0.22.0
修正バージョンormar 0.23.0
公開日2026年2月24日
認証の必要性不要 — 認証なし

プロジェクト構成

root@kitploit:~
├── README.md               ← 現在地
├── vulnerable_app.py       ← 脆弱なパターンを含む最小限のFastAPIアプリ
├── exploit_demo.py         ← インジェクションの動作を示す安全なPoC
├── patched_app.py          ← 入力検証を備えた修正版
├── test_vulnerability.py   ← 脆弱性の存在と修正の有効性を証明するテスト
├── requirements.txt
└── analysis/
    └── root_cause.md       ← バグの詳細なコードレベル分析

デモの実行

root@kitploit:~
git clone https://github.com/YOUR_USERNAME/CVE-2026-26198-analysis.git
cd CVE-2026-26198-analysis
python -m venv venv && source venv/bin/activate
pip install -r requirements.txt

# テストを実行(外部DB不要 — SQLiteを使用)
python -m pytest test_vulnerability.py -v

# 対話型エクスプロイトデモを実行
python exploit_demo.py

修正内容

修正では、列パラメータが sqlalchemy.text() に到達する前に、モデルの実際のフィールドと一致することを検証します。これはホワイトリスト方式によって実現されます。モデルのフィールド定義に存在する列名のみが許可されます。

実装は patched_app.py、完全な分析は analysis/root_cause.md を参照してください。

重要なポイント

  1. ORMは自動的なSQLインジェクション対策ではない。 ORMメソッドが生の文字列を受け取り、それをテキスト句に渡す場合、生のSQLを書くのと同じくらい危険です。
  2. 部分的な検証は、検証がないことよりも悪い。 sum()/avg() は検証されているのに min()/max() は検証されていないという事実が、誤った安心感を生み出しました。
  3. ブラックリストではなくホワイトリストを使用する。 修正では、悪意のあるパターンをフィルタリングするのではなく、既知の正常な列名に対して検証を行います。

参考リンク

  • GitHub Advisory (GHSA-xxh2-68g9-8jqr)
  • NVDエントリ
  • Ormarリポジトリ

ライセンス

MIT

ツールをダウンロード