安全なウェブサイトの作り方:IPA 独立行政法人 情報処理推進機構の、「OS コマンド・インジェクション」から一部抜粋する。(この資料はPDFでしか提供されていない)
注意が必要なウェブサイトの特徴
運営主体やウェブサイトの性質を問わず、外部プログラムを呼び出し可能な関数等を使用しているウェブアプリケーションに注意が必要な問題です。
- 外部プログラムを呼び出し可能な関数の例:
- Perl:
- open(), system(), eval() 等
- PHP :
- exec(), passthru(), shell_exec(), system(), popen() 等
- Perl:
根本的解決
(i) シェルを起動できる言語機能の利用を避ける。
利用を避ける関数
- Perl
- open関数
利用してもよい関数
- Perl
- sysopen関数
保険的対策
(ii) シェルを起動できる言語機能を利用する場合は、その引数を構成する全ての変数に対してチェックを行い、あらかじめ許可した処理のみを実行する。
関連CWE
- CWE-78: OS コマンドインジェクション
- CWE-78: Improper Neutralization of Special Elements used in an OS Command (‘OS Command Injection’)
参考URL
- IPA: 知っていますか?脆弱性 (ぜいじゃくせい) 「5. OS コマンド・インジェクション」