LMFDBに認証なしでコマンド実行の脆弱性、修正版あり
LMFDBのWebアプリに、ログインなしで任意のOSコマンドを実行される脆弱性があります。自前でLMFDBを公開している組織は、修正コミット01829bdを含む状態へ更新し、侵害の跡も調べてください。
急ぎ度: 至急
CVSS v3は9.8、認証なしでネットワークから悪用でき、攻撃の再現手順を含む勧告がすでに出ている一方、修正版も公開済みなので、該当する環境は更新を急ぐべきです。
関係があるか
LMFDBを自前でインターネットや学内に公開している組織が対象です。lmfdb.orgを閲覧するだけの利用者が、自分の側で対処することはありません。
| 製品 | 影響を受ける版 | 修正版 |
|---|---|---|
| LMFDB | 修正コミット01829bd09b692c720aad30c952758a20630573d4より前のすべてのコミット | 01829bd09b692c720aad30c952758a20630573d4を含むコミット(プルリクエスト7231) |
確かめ方
- 1社内・研究室・検証環境を含め、LMFDBのソースコードから動かしているサーバーがないかを洗い出します。
- 2該当サーバーのリポジトリで、修正コミットが履歴に含まれているかを確認します。含まれていなければ影響を受けます。
- 3リバースプロキシやWebサーバーのログで、/knowledge/render/ へのアクセスを確認します。
何が起きたか
LMFDBのWebアプリに、外部から送られた文字列をそのままサーバー側のテンプレートとして処理してしまう脆弱性があります。悪用されると、ログインしていない第三者がサーバー上でOSコマンドを実行でき、Webアプリの実行アカウントの権限でサーバーを操作されます。
原因は、/knowledge/render/<ID> を処理するrender_knowl関数が、リクエストに含まれるクエリ文字列のキーと値、およびcontentのデータを、Jinjaのテンプレート本体に直接つなぎ込み、サンドボックスのない標準の環境で評価していることです。分類はCWE-1336(テンプレートエンジンで使う特殊要素の不適切な無害化)で、CVSS v3は9.8、v4は9.3です。
勧告には、knowlの編集と保存の流れにあるrender_knowl_in_templateにも同種の問題が書かれています。こちらはログイン済みの利用者が到達できる経路です。勧告が示す修正は、01829bd09b692c720aad30c952758a20630573d4より後のコミットです。
攻撃の流れ
-
1
公開先を探す
インターネットや学内から到達できるLMFDBのサーバーを見つけます。
-
2
細工した要求
/knowledge/render/ に、テンプレート構文を含む値をつけたHTTPリクエストを1回送ります。
-
3
式が評価される
サーバーが送られた値をテンプレートの一部として処理します。
-
4
コマンド実行
Webアプリの実行アカウントの権限で、OSコマンドが動きます。
-
5
情報窃取や侵入
設定や認証情報の読み出し、サイトの改ざん、内部ネットワークへの足がかりに使われます。
どう悪用されるか
/knowledge/render/<ID> を使う経路は、認証が要りません。ネットワーク経由で届けば足り、利用者の操作もCSRFトークンも不要で、勧告によればクエリ文字列に細工した値を入れたHTTPのGETリクエスト1回で成立します。
勧告の報告者は、公開されているlmfdb.orgに対して無害なidコマンドを1回実行し、Webサイトを動かすサービスアカウントの権限でコマンドが動くことを確認しています。
悪用されると、そのアカウントが読めるデータ(データベースの接続情報や設定を含む)の持ち出し、サイト内容の改ざん、同じホストから届く社内システムへの横展開、さらなる攻撃の足場化が起こりえます。knowl編集の経路を使う場合は、ログイン済みであることが前提です。
今すぐやること
-
1
LMFDBを動かしている環境を洗い出す
本番だけでなく、研究室のサーバー、検証用、一時的に立てたミラーも対象にします。外部公開しているものを先に見ます。
-
2
修正コミットを含むか確認する
LMFDBのリポジトリで次を実行します。「fixed」と出れば修正コミットを含んでいます。「not-fixed」なら未修正です。
git merge-base --is-ancestor 01829bd09b692c720aad30c952758a20630573d4 HEAD && echo fixed || echo not-fixed -
3
修正版に更新して再起動する
修正コミットを含む状態まで更新し、Webアプリを再起動します。更新を終えたら、再度コミットの確認を行います。
-
4
侵害の跡を調べる
勧告の公開は2026年11月2日です。それ以前から公開していた環境では、/knowledge/render/ への不審なクエリ文字列や異常な応答がないかをアクセスログで確認します。疑わしい記録があれば、データベースの接続情報など実行アカウントから読める認証情報を入れ替え、ホストの調査に進みます。
-
5
ベンダーの告知を確認する
LMFDBのGitHubのセキュリティ勧告とプルリクエスト7231で、修正の範囲と追加の更新がないかを確かめます。
すぐ更新できないとき
更新がすぐにできないときは、リバースプロキシで /knowledge/render/ への外部からのアクセスを遮断するか、サイト全体を社内ネットワークだけに限定します。これはLMFDBが示した回避策ではなく、つなぎとしての対応です。knowlの表示に影響が出る可能性があり、ログイン済み利用者が使う編集と保存の経路は防げないため、更新までの短期間にとどめてください。
背景
LMFDBは、数論の研究で使われるL関数やモジュラー形式などのデータを公開しているオープンソースのデータベースで、Webサイトとして運用されています。ページの中にknowlと呼ばれる小さな説明部品を埋め込む機能があり、今回の脆弱性はそのknowlを描画する処理にあります。
Webアプリの基盤で使われているJinjaは、標準の環境ではサンドボックスがなく、テンプレート内の式からPythonの内部の仕組みをたどれます。そのため、外部から来た文字列がテンプレートの一部になると、画面表示の不具合にとどまらず、サーバー上のコマンド実行に直結します。この仕組みの上に、knowlの描画処理がリクエストの値を直接つなぎ込んでいたことが、今回の問題の核心です。
よくある質問
Q.lmfdb.orgを調べものに使っているだけでも、対処は必要ですか。
Q.LMFDBを使っていない組織も、同じ点検をすべきですか。
まだ分かっていないこと
- 実際の攻撃で悪用された事例の有無は、公表されていません。
この記事は、取得元の公開情報をもとに、人が監修しながらAIを活用して執筆しています。執筆と監修は佐々木 航が担い、公開したあとも人が内容を確認しています。誤りに気づいたときは直し、記事の末尾に訂正の行を残します。対応を決める前に、下の原文と参照先も確認してください。
影響パッケージ
| 種類 | パッケージ | 影響を受ける版 | 修正版 |
|---|---|---|---|
| LMFDB | LMFDB |
01829bd09b692c720aad30c952758a20630573d4 未満 |
01829bd09b692c720aad30c952758a20630573d4 |
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。
LMFDB before commit 01829bd contains a server-side template injection vulnerability in the render_knowl function that allows unauthenticated attackers to inject Jinja expressions via request parameters. Attackers can supply crafted query-string values or 'content' data to /knowledge/render/ to reach Python builtins and execute operating system commands as the web application account.
出典: CVE.org (CVE Program・cvelistV5) NVD GitHub Advisory
参照URL
- advisory github.com
- advisory vulncheck.com
- advisory github.com
- advisory nvd.nist.gov
- package github.com
- patch github.com
- patch github.com
- web github.com