PHPやRust、Node.jsなどで引数処理の脆弱性を確認 急ぎ対応をセキュリティニュースアラート

JPCERT/CCは複数のプログラミング言語や実行環境で、Windows環境におけるコマンド実行処理での脆弱性を公表した。この脆弱性は不適切なエスケープ処理によってコマンドインジェクションを引き起こす可能性がある。

» 2024年04月17日 07時30分 公開
[後藤大地有限会社オングス]

この記事は会員限定です。会員登録すると全てご覧いただけます。

 JPCERTコーディネーションセンター(JPCERT/CC)は2024年4月15日、「Window」で動作する複数のプログラミング言語や実行環境でのコマンド実行処理において、引数のエスケープ処理が適切に機能しない脆弱(ぜいじゃく)性があると伝えた。

PHP、Rust、Node.jsなどで引数処理の脆弱性を確認

 この脆弱性を悪用されるとアプリケーションのコマンドインジェクションにつながる可能性があり、コマンド実行時に改ざんされたプログラムの引数の入力を処理することで任意のコマンドを実行される危険性がある。

 今回発見された脆弱性は脆弱性情報データベース(CVE)に複数登録されている。CVE情報は以下の通りだ。

  • CVE-2024-1874: PHPの「proc_open」関数に存在するコマンドインジェクションの脆弱性
  • CVE-2024-22423: コマンドラインプログラム「yt-dlp」に存在するコマンドインジェクションの脆弱性。オプション「-exec %q」には不適切なエスケープ処理が存在する
  • CVE-2024-24576: 「Rust」の「Command API」に存在する不適切なエスケープの脆弱性。Rustの開発者は適切にエスケープする方法はないと判断し、安全ではない引数を入力エラーとして処理する方法で対策した。この修正は悪意のない有効な引数をエラーと見なす可能性がある
  • CVE-2024-27980: 「Node.js」の「child_process.spawn」および「child_process.spawnSync」に存在するコマンドインジェクションの脆弱性。攻撃者は悪意のあるコマンドライン引数を使用して任意のコマンドを実行する可能性がある
  • CVE-2024-3566: コマンドインジェクションの脆弱性。「CreateProcess」関数に間接的に依存するWindowsアプリケーションに影響する可能性がある

 脆弱性の影響を受けるプログラミング言語や実行環境およびそのバージョンは以下の通りだ。

  • Haskell Programming Language processパッケージ バージョン1.0.0.0から1.6.19.0より前のバージョン
  • Node.js 18.x
  • Node.js 20.x
  • Node.js 21.x
  • Rust 1.77.2より前のバージョン
  • PHP 8.1.28より前のバージョン
  • PHP 8.2.18より前のバージョン
  • PHP 8.3.5より前のバージョン
  • yt-dlp バージョン2024.04.09より前のバージョン

 脆弱性を修正したプログラミング言語や実行環境およびそのバージョンは以下の通りだ。

  • Haskell Programming Language processパッケージ バージョン1.6.19.0
  • Node.js 18.20.2
  • Node.js 20.12.2
  • Node.js 21.7.3
  • Rust 1.77.2
  • PHP 8.1.28およびこれ以降のバージョン
  • PHP 8.2.18およびこれ以降のバージョン
  • PHP 8.3.5およびこれ以降のバージョン
  • yt-dlp バージョン2024.04.09

 影響を受ける幾つかのプログラミング言語や実行環境に対する脆弱性を修正したバージョンはすでに公開済みだ。しかし上記以外のプログラミング言語は調査中とされ、影響の有無は各言語の開発者に問い合わせる必要がある。

 影響を受けるプログラミング言語や実行環境などを使用していてパッチが提供されていない場合、開発者はアプリケーション側で必要なエスケープ処理を実装するか、悪意のある処理を無効化する必要がある。JPCERT/CCはプログラミング言語開発者が提供する情報に基づいて開発環境をアップデートすることを推奨している。

Copyright © ITmedia, Inc. All Rights Reserved.

注目のテーマ