JVNDB-2025-026198 | |
The Expr Expression LanguageのExprにおける制限またはスロットリング無しのリソースの割り当てに関する脆弱性 | |
| 概要 | |
ExprはGoのための式言語および式評価ライブラリです。バージョン1.17.7以前では、Exprのいくつかの組み込み関数(`flatten`、`min`、`max`、`mean`、`median`など)がユーザー提供のデータ構造に対して最大再帰深度を制限せずに再帰的な走査を行います。評価環境に深くネストされたまたは循環的なデータ構造が含まれている場合、これらの関数はGoランタイムのスタック制限を超えるまで無限に再帰する可能性があります。これによりスタックオーバーフローパニックが発生し、ホストアプリケーションがクラッシュします。悪用可能性は攻撃者が循環参照や非常に深いデータを評価環境に影響を与えたり注入できるかどうかに依存しますが、この挙動はサービス拒否(DoS)のリスクを示し、ライブラリ全体の堅牢性に影響を及ぼします。回復可能な評価エラーを返す代わりに、プロセスが予期せず終了する恐れがあります。影響を受けるバージョンでは、信頼できないまたは不十分に検証されたデータ構造に対して特定の組み込み関数を呼び出す式の評価がスタック枯渇によるプロセスレベルのクラッシュを引き起こす可能性があります。この問題は、Exprが外部から供給されたまたは動的に構築された環境に対して式を評価するシナリオで最も関連性が高く、配列、マップ、構造体に直接または間接的な循環参照が導入されうる場合、かつ深くネストされた入力データを防ぐアプリケーションレベルの保護がない場合に顕著です。制御された非循環データを扱う典型的なユースケースでは問題が現れにくいものの、存在するとパニックは確実にアプリケーションをクラッシュさせ、サービス拒否を引き起こします。この問題はExprのv1.17.7で修正されました。パッチでは影響を受ける組み込み関数に最大再帰深度制限を導入し、この制限を超えた場合、パニックではなく説明的なエラーを返して評価を正常終了させます。加えて、`builtin.MaxDepth`を介して最大深度をユーザーがカスタマイズ可能とし、正当な深い構造を持つアプリケーションが制御された形で制限を引き上げられるようにしました。ユーザーは再帰ガードと回帰防止のための包括的なテストカバレッジを含む修正済みリリースへのアップグレードを強く推奨します。すぐにアップグレードできないユーザー向けには、いくつかの緩和策が推奨されます。評価環境に循環参照を含まないようにし、外部から供給されるデータ構造をExprに渡す前に検証またはサニタイズを行い、最終手段としてパニックリカバリーで式評価をラップしてプロセスクラッシュを防ぐことが可能です。これらの回避策はリスクを減らしますが、パッチなしでは問題を完全には解消できません。 | |
| CVSS による深刻度 (CVSS とは?) | |
|
CVSS v3 による深刻度
基本値: 7.5 (重要) [その他]
| |
| 影響を受けるシステム | |
|
| |
The Expr Expression Language | |
本脆弱性の影響を受ける製品の詳細については、ベンダ情報および参考情報をご確認ください。 | |
| 想定される影響 | |
当該ソフトウェアが扱う情報について、外部への漏えいは発生しません。 | |
| 対策 | |
正式な対策が公開されています。ベンダ情報を参照して適切な対策を実施してください。 | |
| ベンダ情報 | |
GitHub | |
| CWEによる脆弱性タイプ一覧 CWEとは? | |
|
| |
| 共通脆弱性識別子(CVE) CVEとは? | |
|
| |
| 参考情報 | |
| |
| 更新履歴 | |
|
| 公表日 | 2025/12/16 |
| 登録日 | 2026/03/09 |
| 最終更新日 | 2026/03/09 |



