概要
人気のJavaScriptライブラリ「expr-eval」に、悪意を持って作成された入力によってリモートでコードを実行される可能性がある深刻な脆弱性(CVE-2025-12735)が発見されました。このライブラリはNPMで週に80万回以上ダウンロードされており、米国サイバーセキュリティ・インフラセキュリティ庁(CISA)は、この脆弱性の深刻度を9.8と評価しています。
脆弱性の詳細
このセキュリティ問題は、セキュリティ研究者のJangwoo Choe氏によって発見されました。脆弱性の原因は、ライブラリのParser.evaluate()関数に渡される変数/コンテキストオブジェクトの検証が不十分であることにあります。これにより、攻撃者は悪意のある関数オブジェクトを供給し、パーサーが評価中にそれらを呼び出すことが可能になります。
CERT Coordination Center(CERT-CC)は、「この脆弱性は、攻撃者にソフトウェアの動作に対する完全な制御、または影響を受けるシステム上のすべての情報の完全な開示を可能にする」と警告しています。
影響を受けるライブラリと利用状況
CVE-2025-12735は、6年前に安定版がリリースされたオリジナルの「expr-eval」と、現在活発にメンテナンスされておりNPMで週8万回以上ダウンロードされているフォーク版「expr-eval-fork」の両方に影響を与えます。npmjs.comのデータによると、このライブラリは250以上のプロジェクトで使用されています。
「expr-eval」は、オンライン計算機、教育スイート、シミュレーションツール、金融ツール、そして最近ではテキストプロンプトから数式を解析するAIおよび自然言語処理(NLP)システムなど、ユーザーが提供する数式を安全に解析および計算する必要があるプロジェクトで利用されています。
対策と推奨事項
この脆弱性に対するセキュリティ修正は、「expr-eval-fork」のバージョン3.0.0で提供されています。このパッチには、評価のための安全な関数の許可リスト、カスタム関数の登録システム、およびこれらの制約に対するテストカバレッジの改善が含まれています。
影響を受けるソフトウェア開発者には、できるだけ早く「expr-eval-fork v3.0.0」へ移行し、ライブラリを再公開してユーザーが修正を受け取れるようにすることが推奨されます。オリジナルの「expr-eval」には修正を実装するプルリクエストが存在しますが、プロジェクトのメンテナーが応答しないため、新しいリリースにマージされる時期は不明です。
