公開日:2024/04/15 最終更新日:2024/04/16
JVNVU#94343502
複数のプログラミング言語のWindows環境におけるコマンド実行処理において引数のエスケープ処理が適切でない問題
複数のプログラミング言語において、Microsoft Windows環境でプログラム内からコマンドを実行する場合に、コマンドに渡す引数データのエスケープ処理が不適切であると指摘されています。
影響を受けるシステムについては、[ベンダ情報]およびCERT/CC VU#123335のVendor Informationを参照してください。
多くのプログラミング言語では、プログラム内からオペレーティングシステム上でコマンドを実行する機能を提供しており、典型的な実装例としてはWindowsのCreateProcess()
関数を通じて当該コマンドを実行します。
報告者によれば、実行する対象がバッチファイルだった場合、CreateProcess()
関数はcmd.exe
にコマンドライン文字列を渡す形で当該バッチファイルを実行します。しかし、多くのプログラミング言語のコマンド実行処理においては、コマンドに渡す引数データのエスケープ処理がcmd.exe
に渡す場合を考慮した適切なものになっていません。
プログラムのなかで、ユーザーから受け取った入力を引数としてコマンドを実行している場合、細工された入力を処理することで、任意のコマンドを実行させられる可能性があります。
ランタイムをアップデートする
各言語の開発者が提供する情報をもとに、最新のランタイム環境に更新してください。
個別にプログラムを更新する
使用している言語のランタイム環境が本脆弱性に未対応の場合、ユーザーが入力した引数に対して適切なエスケープ処理や無効化を実施してください。
ベンダ | ステータス | ステータス 最終更新日 |
ベンダの告知ページ |
---|---|---|---|
有限会社 アップルップル | 該当製品無し | 2024/04/16 |
-
CERT/CC Vulnerability Note VU#123335
Multiple programming languages fail to escape arguments properly in Microsoft Windows -
Flatt Security Inc.
BatBadBut: You can't securely execute commands on Windows -
Microsoft Learn
Everyone quotes command line arguments the wrong way
- 2024/04/16
- 有限会社 アップルップルのベンダステータスが更新されました