重大なNode.jsライブラリの欠陥により、ハッカーがWindowsでリモートコマンドを実行可能に

システム情報を取得するために広く利用されているNode.jsライブラリ「systeminformation」に、深刻なコマンドインジェクションの脆弱性が発見されました。

CVE-2025-68154として追跡されているこの欠陥により、アプリケーションがユーザー入力を脆弱な関数に渡した場合、攻撃者はWindowsシステム上で任意のコマンドを実行できます。

この脆弱性は、ディスク容量情報を取得するfsSize()関数に存在しますが、PowerShellコマンドに渡す前に任意のドライブパラメータを適切に検証できていません。

Sebastian Hildebrandtがsystem informationパッケージを保守しており、最も人気のあるNode.jsのシステム監視ライブラリの一つに数えられます。

技術的詳細

この脆弱性はlib/lib/lib/lib/lib/ lib/filesystem.jsの197行目で発生しており、driveパラメータがサニタイズされないままPowerShellコマンド文字列に直接連結されています。

アプリケーションがユーザー入力を受け取り、それをfsSize()に渡すと、攻撃者は任意のPowerShellコマンドを注入できます。

興味深いことに、コードベースにはutilによる適切な入力サニタイズがすでに実装されています。sanitizeShellString()関数は、同様の処理で他の箇所では使用されています。fsSize()関数は、この同じ保護を適用し損ねていただけでした。

この攻撃は、driveパラメータにセミコロンやコメント文字を注入することで成立します。

攻撃者は「C:; whoami #」のようなペイロードを与えることで、元のコマンドの残りをコメントアウトしつつwhoamiコマンドを実行できます。

より高度な攻撃では、ランサムウェアのダウンロード、機密ファイルの持ち出し、永続的なアクセスの確立などが可能です。

Sebastian Hildebrandtは2025年12月16日にバージョン5.27.14をリリースし、この脆弱性を修正しました。開発者は、system informationのすべての利用箇所を直ちにバージョン5.27.14以降へ更新する必要があります。

修正では、PowerShellコマンドを構築する前にdriveパラメータへutil.sanitizeShellString()関数を適用し、セミコロン、パイプ、その他コマンドインジェクションを可能にする特殊文字を含む危険な文字を除去します。

System Informationを使用している組織は、この更新を直ちに最優先で実施すべきです。

CVSSスコア7.5は欠陥の深刻さを示しており、特にユーザー操作や認証を必要とせず、ライブラリレベルで悪用できる点が問題です。

脆弱なバージョンを使用し、かつユーザー入力を扱うあらゆるアプリケーションは、現在進行形のセキュリティリスクとなります。

翻訳元: https://gbhackers.com/critical-node-js-library-flaw/

ソース: gbhackers.com