
expr-evalとはなんでしょう。
Linuxなどの環境を利用されている方の中にはすぐにピンとくる方も多いことでしょう。
exprは、引数として与えられた式を評価するコマンドです。簡単な整数計算、文字列の長さ測定、正規表現でのマッチングなどができ、シェルスクリプト内でよく使われます。
整数の四則演算、文字列の長さ判定などの文字列操作、論理演算などが可能です。
evalは多くのプログラミング言語に搭載されている関数で、文字列で渡されたコードを実行できる機能です。実行時に動的にコードを作成し、その場で実行するため柔軟なプログラムを書く際に役立ちます。
expr-evalは、JavaScriptで数式を文字列から評価するためのライブラリです。
JavaScriptに組み込まれている eval() 関数が任意のコードを実行できるのに対し、expr-evalは数式の計算に特化しているため、より安全かつ限定的な用途に利用できます。
数式を安全に評価したい場合に適したツールです。
ということなのですが、この特性は、そのツールが十分にメンテナンスされていることが前提となったものです。
expr-eval JavaScriptライブラリに脆弱性が確認されました。
CVE-2025-12735として追跡されています。
このexpr-eval JavaScriptライブラリは、かなり以前から安定状態とみなされていて、現時点では約6年間新しいバージョンがリリースされていません。
こういったこともあってか、同じ用途で利用できて現在積極的にメンテナンスされているフォークで、expr-eval-forkというものがあります。
CVE-2025-12735はこれらの両方に影響する内容となっています。
- オリジナルのexpr-evalの状況
オリジナルのexpr-evalには、CVE-2025-12735の問題が存在します。
この脆弱性により、攻撃者はソフトウェアの動作を完全に制御したり、影響を受けるシステム上のすべての情報を完全に開示したりすることができます。
ただ、オリジナルのexpr-evalは長い期間メンテナンスが実施されていないこともあり、修正版がまだリリースされていません。
このソフトウェアは利用者が多く、すでにこのCVE-2025-12735に対応することのできる内容を含むプルリクエストも存在しますが、プロジェクトのメンテナーが応答しないためマージの見通しが立っていません。
この意味で、このオリジナルのexpr-evalの利用を継続することは非常に危険です。 - forkのexpr-eval-forkの状況
forkのexpr-eval-forkには、CVE-2025-12735の問題が存在します。
この脆弱性により、攻撃者はソフトウェアの動作を完全に制御したり、影響を受けるシステム上のすべての情報を完全に開示したりすることができます。
しかしこのforkはメンテナンスが積極的に行われていて、すでにCVE-2025-12735に対するセキュリティ修正は expr-eval-forkバージョン3.0.0に含まれて公開されています。
オリジナルのexpr-evalとforkのexpr-eval-forkは、利用できる内容が同じですので、影響を受けるプロジェクトはできるだけ早くこのforkのバージョンに切り替えることが推奨されています。
オリジナルのexpr-evalを依存関係に持つnpmjs.comで公開されたプロジェクトは、250以上とみられます。
さらにそのオリジナルのexpr-evalを依存関係に持つソフトウェアを前提とするソフトウェアの数はいったいいくつに及ぶのでしょう。
メンテナンスの頻度の重要性とともに、自身の周辺環境におけるSBOM(Software Bill of Materials)を維持することの重要性を再認識しました。
Vulnerability in expr-eval JavaScript library can lead to remote code execution.
https://kb.cert.org/vuls/id/263614
| この記事をシェア |
|---|