コマンドインジェクション:仕組み、リスク、対策
2020年11月24日
0 分で読めますOSコマンドインジェクションとも
コマンドインジェクションにはどのようなリスクがあるのでしょうか?
アプリケーションの
コマンドインジェクション攻撃の仕組み
OSコマンドインジェクション攻撃に
systeminformationは、

しかし、
脆弱性のinetChecksite()関数の
この
urlパラメーターはサニタイズされています。 もしか すると、 作者が 想定していなかった 方法で サニタイズ処理を 回避できるかもしれません。 安全でない
OSプロセス起動APIの exec()が使われています。 この APIは コマンドと 引数を 連結して 1つの シェルコマンドと して 実行します。 その ため、 作者は 独自の コマンドライン引数の サニタイズ処理を 実装せざるを 得ませんでした。
urlSanitized変数は、
このurlSanitizedにcmd変数で
脆弱なinetChecksite()関数に
ただし、
しかしhttps://snyk.io -o hihiのような-oが
脆弱なsysteminformation@4.27.10で
この

コマンドインジェクション対策チートシート
他の
コマンドインジェクション攻撃を
アプリケーションが
実行する コマンドに、 ユーザー入力を 一切渡さないでください。 コマンドの
実行には、execFile()などの 安全な APIのみを 使用してください。 他の APIと 異なり、 最初の パラメーターと して コマンドを、 2番目の 関数 パラメーターと して コマンドライン引数の 配列を 受け取ります。 この 動作に より、 コマンド自体が 有効な プログラムである 必要が あり、 危険な 入力とは 切り離されます。 execFile()を使用する 場合、 ユーザーが プログラム名を 制御できないようにしてください。 また、 ユーザー入力を コマンド引数に 割り当て、 入力を そのまま プログラムの 実行に 渡さないようにしてください。 さらに
予防策と して、 ユーザー入力が 想定される 形式に 従っている ことを 検証してください。 たとえば、 関数の パラメーターが URLを 想定している 場合、 受け取った 入力が 有効な URLである ことを 検証します。 これに より、 前述のnpmパッケージsysteminformationの コマンドインジェクション脆弱性を 防げたはずです。
OWASP Top 10に見るコマンドインジェクション攻撃
OSコマンドインジェクション攻撃がCommand injectionの

まとめると、
CTFを 始めよう
オンデマンドの


