SQLiteに脆弱性2件、FTS5全文検索に影響

SQLiteの全文検索拡張「FTS5」に、任意コード実行につながりうる脆弱性2件(CVE-2026-11824/CVE-2026-11822)が見つかり、SQLite 3.53.2(2026年6月3日リリース)で修正されました。CVSS v4.0の基本値は8.5(High)です。

ただし悪用には「細工されたデータベースファイルを開かせる」という前提が必要で、Debianは安定版で「Minor issue」扱いにして修正を見送っています。一方Ubuntuは22.04 LTS以降にバックポート済みです。スコアだけを見て慌てる話ではなく、対応が割れている理由まで押さえて優先度を決めるべき案件です。

この記事でわかること

  • SQLiteとFTS5が「どこに組み込まれているか」(自社の該当有無の判断材料)
  • 2件の脆弱性の中身と、悪用に必要な条件
  • CVSS 8.5なのにディストリビューションの対応が割れている理由
  • バージョン番号だけで該当判定してはいけない理由(バックポート問題)

SQLiteとFTS5とは何者か

SQLiteとは、アプリケーションの中に組み込んで使う軽量なリレーショナルデータベースエンジンです。サーバを立てて運用するMySQLやPostgreSQLと違い、1つのファイルがそのままデータベースになり、アプリのプロセス内で動きます。

用途は、アプリのローカルデータ保存・設定情報・キャッシュ・履歴などです。導入したのは情シスではなく、アプリの開発ベンダーやOSベンダーであることがほとんどで、資産管理台帳には載りません。

そして最も重要な点です。SQLite公式は自らを「最も広く配備されたデータベースエンジン」と説明し、組み込み先として次を挙げています。

  • すべてのAndroid端末、すべてのiPhone/iOS端末、すべてのMac
  • すべてのWindows 10/11のインストール
  • すべてのFirefox、Chrome、Safari
  • Skype、iTunes、Dropboxクライアント
  • PHPとPython(標準で同梱)
  • 大半のテレビ・セットトップボックス、大半の自動車のマルチメディア機器

つまり「うちはSQLiteを使っていない」という組織は、実質的に存在しません。導入した覚えがなくても、社内の全端末と大半の業務アプリの内部で動いています。

FTS5(Full-Text Search 5)とは、SQLiteに全文検索機能を追加する拡張モジュールです。メール検索、ドキュメント検索、チャットログ検索など「本文から語句を探す」機能を持つアプリが内部で使っています。今回の脆弱性はこのFTS5に限定されており、SQLite本体を使っていてもFTS5が有効でなければ影響しません。ここが該当判定の分かれ目になります。

何が起きたのか

SQLite開発チームは2026年5月11日、「FTS5が破損したレコードを処理する際に起きうるバッファ上書きの修正」としてコードを修正しました。これがCVE 2件として採番され、3.53.2に取り込まれています。

CVE番号 内容 該当関数 CVSS
CVE-2026-11824 ヒープベースのバッファオーバーフロー。継続ページのメタデータで szLeaf を4未満に細工すると整数アンダーフローが発生し、残バイト数が肥大化して境界外書き込みに至る fts5ChunkIterate() v4.0: 8.5 / v3.1: 7.8
CVE-2026-11822 メモリ破損。攻撃者が制御するループ境界による境界外読み取りと、上記のヒープ書き込みを併せたもの。クラッシュ、メモリ枯渇、任意コード実行の可能性 fts5LeafSeek()fts5ChunkIterate() v4.0: 8.5 / v3.1: 7.8

悪用には何が必要なのか

答えは「攻撃者が用意したデータベースファイルを開かせ、そこにFTS5のMATCHクエリを実行させること」です。成立条件を分解すると次の3つがすべて揃う必要があります。

  1. アプリケーションが SQLITE_ENABLE_FTS5 付きでビルドされている
  2. そのアプリが信頼できない出所のデータベースファイルを開く設計になっている
  3. 開いたデータベースに対してFTS5の MATCH クエリが実行される

CVSSのベクタも AV:L(ローカル)かつ利用者の関与を要する設定になっており、ネットワーク越しに一方的に攻撃されるタイプではありません。とはいえ、メールの添付ファイルや共有フォルダ経由でデータベースファイル(.db.sqlite/アプリ固有拡張子)を受け取るワークフローがあるなら、条件2は現実的に成立します。

CVSS 8.5なのに、なぜ対応が割れているのか

ここが今回いちばんの実務ポイントです。同じCVEに対して、主要ディストリビューションの判断が真っ二つに分かれています。

配布元 対応状況(2026年9月5日時点)
SQLite本体 3.53.2で修正済み。最新は3.53.4(2026年7月24日)
Debian bookworm(12) / trixie(13) 未修正。「Minor issue」としてno-dsa/postponed
Debian sid / forky 3.53.4-2で修正済み
Ubuntu 22.04 LTS 修正済み(3.37.2-2ubuntu0.6)
Ubuntu 24.04 LTS 修正済み(3.45.1-1ubuntu2.6)
Ubuntu 25.10 / 26.04 LTS 修正済み
CISA KEV(悪用が確認された脆弱性) 未登録

Debianが緊急のセキュリティ更新(DSA)を出さず「軽微」と判断したのは、前述の成立条件が厳しく、サーバ用途のSQLiteが外部由来のデータベースファイルを開く場面が限られるからだと読み取れます。悪用が確認された脆弱性を集めたCISAのKEVカタログにも、2026年9月4日版の時点で登録されていません。

この「上流は直した、ディストリは急がない、KEVには載っていない」という3点セットは、スコアと実際の緊急度が乖離している典型例です。CVSS 8.5という数字だけを経営層に報告すると過剰な対応を招きますし、逆に「Minor扱いだから無視」も乱暴です。判断材料を並べて説明できる状態にしておくのが情シスの仕事になります。

現場目線:バージョン番号だけでは該当判定できない

脆弱性情報には「SQLite 3.53.2より前」と書かれています。しかしUbuntu 24.04 LTSのsqlite3パッケージは 3.45.1-1ubuntu2.6、つまりバージョン番号は3.53.2より前のまま、修正だけがバックポートされています

資産管理ツールでバージョン文字列を集めて「3.53.2未満=アウト」と機械的に突き合わせると、修正済みの端末が大量に赤く光ります。ディストリのパッケージはバージョン番号ではなくパッケージリビジョン(-1ubuntu2.6 の部分)で判断する必要があり、これは毎回引っかかるポイントです。

正直なところ、SQLiteのような「全端末・全アプリに埋まっているコンポーネント」は、情シスの手元で完全に棚卸しすることが困難です。端末のOS更新、ブラウザの自動更新、業務アプリのベンダー更新と、修正が届く経路がバラバラで、しかもどれも情シスから直接は見えません。今回のように緊急度が低い案件でそこに時間を溶かすより、「OSとブラウザと業務アプリの自動更新が実際に効いているか」という土台の確認に労力を振り向けたほうが、費用対効果は高いと考えます。

手元で確認するには

該当有無を素早く確かめたい場合、次のコマンドが使えます。

  • CLI: sqlite3 --version
  • Python: python -c "import sqlite3; print(sqlite3.sqlite_version)"
  • FTS5が有効かどうか: sqlite3のプロンプトで PRAGMA compile_options; を実行し、ENABLE_FTS5 が含まれるかを見る

なお、SQLiteのソースツリーのconfigureではFTS5は既定で無効ですが、多くの配布物が採用するamalgamation版のconfigureでは既定で有効です。「無効だから大丈夫」と決め打ちせず、実物で確認してください。

情シスはどうすべきか

今回の件について、自前で長大なチェックリストを作る必要はありません。優先度は高くないので、通常の脆弱性管理プロセスに乗せて処理するのが妥当です。

  • 優先度は「通常」で扱う。KEV未登録・ディストリもMinor扱いという事実を記録に残し、緊急対応の対象からは外す。
  • OS・ブラウザ・業務アプリの通常の更新経路に任せる。SQLiteだけを個別に入れ替える対応は、組み込み先が広すぎて現実的ではない。
  • 自社開発アプリがSQLiteを直接組み込んでいる場合のみ、開発チームに3.53.2以降への更新を依頼する。特に外部から受け取ったファイルを開く機能があるなら優先度を上げる。
  • 「出所不明のデータベースファイルを開かない」を利用者に周知する。今回に限らず有効な基本動作。

脆弱性への向き合い方そのものを整理したい場合は、IPAの中小企業の情報セキュリティ対策ガイドラインが、体制づくりから日々の運用までを一通りカバーしていて出発点として使いやすいです。利用者への啓発材料としては、IPAの対策のしおりが配布しやすい形にまとまっています。

アプリケーション側の防御を検討する開発チームには、SQLite公式のDefense Against The Dark Artsが実務的です。信頼できないデータベースファイルを扱う場合に、開いた直後に PRAGMA quick_check を走らせてエラーがあれば処理しない、PRAGMA cell_size_check=ON を有効にする、PRAGMA mmap_size=0 にする、といった多層防御が具体的に示されています。

関連記事

まとめ

  1. SQLiteのFTS5全文検索拡張に脆弱性2件(CVE-2026-11824/CVE-2026-11822、CVSS v4.0で8.5)。3.53.2で修正済み、最新は3.53.4。
  2. 悪用には「FTS5有効ビルド」「信頼できないデータベースファイルを開く」「MATCHクエリの実行」が揃う必要があり、Debianは安定版で修正を見送り、CISA KEVにも未登録。緊急度は高くない。
  3. 該当判定はバージョン番号だけでは不可。Ubuntuのようにバージョンを据え置いて修正だけをバックポートするケースがあるため、パッケージリビジョンで確認する。

出典

タイトルとURLをコピーしました