概要
広く利用されているNode.jsライブラリ「systeminformation」に、重大なコマンドインジェクションの脆弱性が発見されました。この脆弱性は「CVE-2025-68154」として追跡されており、アプリケーションがユーザー入力を脆弱な関数に渡した場合、攻撃者がWindowsシステム上で任意のコマンドを実行できる可能性があります。
技術的詳細
この脆弱性は、ディスク容量情報を取得するfsSize()関数に存在します。この関数は、オプションのdriveパラメータをPowerShellコマンドに渡す前に、適切に検証していませんでした。具体的には、lib/lib/lib/lib/lib/lib/filesystem.jsファイルの197行目で、driveパラメータがサニタイズされずにPowerShellコマンド文字列に直接連結されていました。興味深いことに、このライブラリのコードベースには、すでに他の場所で同様の操作のために適切な入力サニタイズを行うutil.sanitizeShellString()関数が実装されていましたが、fsSize()関数には適用されていませんでした。
脆弱性の悪用
攻撃は、driveパラメータにセミコロンやコメント文字を注入することで実行されます。例えば、攻撃者は「C:; whoami #」のようなペイロードを提供することで、whoamiコマンドを実行し、元のコマンドの残りの部分をコメントアウトすることが可能です。これにより、ランサムウェアのダウンロード、機密ファイルの抜き取り、永続的なアクセスの確立など、より高度な攻撃が行われる可能性があります。
対策と推奨
開発者であるSebastian Hildebrandt氏は、この脆弱性を修正したバージョン5.27.14を2025年12月16日にリリースしました。修正プログラムでは、PowerShellコマンドを構築する前に、driveパラメータにutil.sanitizeShellString()関数を適用し、セミコロン、パイプ、およびその他のコマンドインジェクションを可能にする危険な文字が除去されるようになっています。systeminformationを使用している開発者は、直ちにバージョン5.27.14以降にアップデートすることを強く推奨します。
この脆弱性のCVSSスコアは7.5であり、ユーザーの操作や認証を必要とせずにライブラリレベルで悪用される可能性があるため、その深刻な性質を反映しています。脆弱なバージョンを使用し、ユーザー入力を処理するすべてのアプリケーションは、現在もアクティブなセキュリティリスクを抱えています。
