
人気のあるexpr-eval JavaScriptライブラリ(NPMで週80万回以上ダウンロード)に重大な脆弱性が存在し、悪意のある入力によってリモートでコードが実行される可能性があります。
このセキュリティ問題はセキュリティ研究者のJangwoo Choeによって発見され、CVE-2025-12735として追跡されています。米国サイバーセキュリティ・インフラストラクチャセキュリティ庁(CISA)によると、この脆弱性の深刻度はクリティカルで、スコアは9.8です。
Matthew Crumleyによって最初に開発されたexpr-evalは、小型のJavaScript式パーサー兼評価器であり、実行時にユーザーが入力した数式を安全に解析・計算する必要があるプロジェクトで使用されています。
オンライン電卓、教育用スイート、シミュレーションツール、金融ツール、そして最近ではAIや自然言語処理(NLP)システムでテキストプロンプトから数式を解析する用途などが例として挙げられます。
週末に発表されたカーネギーメロン大学ソフトウェア工学研究所(SEI)のCERTコーディネーションセンター(CERT-CC)の勧告によると、この脆弱性は、Parser.evaluate()関数に渡される変数/コンテキストオブジェクトの検証がライブラリで行われていないことが原因であり、攻撃者が悪意のある関数オブジェクトを渡して評価時にパーサーがそれを呼び出すことができてしまいます。
「この脆弱性により、攻撃者はソフトウェアの動作を完全に制御したり、影響を受けたシステム上のすべての情報を完全に開示したりすることができます」 – CERT-CC
CVE-2025-12735は、6年前に安定版がリリースされたオリジナルのexpr-evalと、現在も積極的にメンテナンスされているフォーク版expr-eval-fork(Node.jsのNPMパッケージレジストリで週8万回以上ダウンロード)に影響します。
npmjs.comのデータによると、このライブラリは250以上のプロジェクトで使用されています。CVE-2025-12735のセキュリティ修正は、expr-eval-fork バージョン3.0.0に含まれており、影響を受けるプロジェクトはできるだけ早く移行することが推奨されています。
このパッチでは、安全な関数のホワイトリストによる評価、カスタム関数の登録システム、これらの制約に対するテストカバレッジの向上が実施されています。
expr-evalの利用者向けには、修正を実装するプルリクエストが存在しますが、プロジェクト管理者からの返答がないため、いつ新しいリリースに統合されるかは不明です。
影響を受けるソフトウェア開発者は、直ちにexpr-eval-fork v3.0.0へ移行し、ライブラリを再公開してユーザーが修正を受け取れるようにすることが推奨されています。