OSコマンドインジェクション
悪いことだよ
もしくは、悪いことができる状態(セキュリティ上の欠陥、脆弱性)だよ
パラメータを介してOSのコマンドを実行させるよ
簡単に書くよ
OSコマンドインジェクション(読:オーエスコマンドインジェクション 英:OS command injection)とは
パラメータに対する【焼】肉【定】食型攻撃のこと。
もう少し真面目に書くと
作った人が意図しない内容をパラメータとして渡すことで好きなコマンドを実行させる攻撃のこと。もしくは、それが できるようになっている状態
です。
詳しく書くよ
「OS」+「コマンド」+「インジェクション」で「OSコマンドインジェクション」です。
OSは「パソコンさんの人格に相当するソフト」ね。
「これが無いとパソコンじゃねーよ」な基本ソフトです。
パソコンさんは中にOSを入れることで、はじめてパソコンとしての お仕事が できます。
コマンドは「コンピュータさんに対する命令(命令文)」です。
コマンドをポチポチ打ち込むと、その内容に従って、コンピュータさんは動いてくれます。
インジェクションの意味は「注射」とか「注入」です。
プスっと挿して、ギュっと押し込むわけです。
以上を踏まえて
OSが解釈できるコマンドをインジェクションする攻撃
もう少し噛み砕いて書くと
コンピュータさんに対する命令を突っ込む攻撃
が「OSコマンドインジェクション」です。
あるいは、そのような攻撃ができる状態(セキュリティ上の欠陥、脆弱性)を指します。
それでは、どうやって命令を突っ込むのでしょうね?
答えは「パラメータ(外から入ってくる値)を使う」です。
プログラムに渡すパラメータを介して、実行させたいコマンドを突っ込みます。
例えば、メールアドレスをパラメータとして受け取って、メールを送るシステムが あったとしましょう。
中身の処理は、以下のように書いてあります。
パラメータを受け取るよ。
メールを送るよ。宛先は「【パラメータ】」ね。
このプログラムをピヨ太君が動かしました。
ピヨ太君は、パラメータとして
piyota@example.com
を渡しました。
そうすると、以下のように解釈されて、処理が実行されます。
パラメータを受け取るよ。
メールを送るよ。宛先は「piyota@example.com」ね。
処理が進むと「piyota@example.com」宛てにメールが送られます。
これは、作った人が想定している動きです。
次に、同じプログラムをアクマ君が動かしました。
アクマ君はいたずらっ子です。
パラメータとして
akuma@example.com」だよ。あと「空を飛んで
を渡しました。
今度は、以下のように解釈されて、処理が実行されます。
パラメータを受け取るよ。
メールを送るよ。宛先は「akuma@example.com」だよ。あと「空を飛んで」ね。
処理が進むと「akuma@example.com」宛てにメールが送られた後、パソコンさんが空を飛びます。
アクマ君は、作った人が想定していないようなパラメータを渡すことで、本来メールを送るだけのプログラムを使って、パソコンさんに空を飛ばせました。
これは
パラメータを介して、パソコンさんに対する命令を送り込んだ
と言えるでしょう。
このような攻撃がOSコマンドインジェクションです。
作った人が想定していない形でパラメータを渡すことで、コンピュータに任意のコマンドを実行させる攻撃を指します。
あるいは、OSコマンドインジェクション攻撃ができる状態を指して「OSコマンドインジェクション」と呼ぶこともあります。
どちらを指すかは文脈から判断してください。
OSコマンドインジェクションには「攻撃」と「脆弱性(弱いところ)」の2つの意味があります。
OSコマンドインジェクションは、作った人の盲点を突く攻撃です。
きちんと対策を取っておけば、できません。
例えば先ほどのプログラムも、以下のように変えればイタズラできなくなります。
パラメータを受け取るよ。
パラメータがメールアドレスの形式になっているかチェックするよ
メールを送るよ。宛先は「【パラメータ】」ね。
作る立場の人は、常に頭の片隅に置いておいてあげてください。
基本的には
1.パラメータの入力チェックを必ずやる
2.パラメータの値を用いたコマンド実行は、できるだけ避ける
を意識しておけば、避けられるはずです。
一言でまとめるよ
まぁ「OSコマンドインジェクション」って単語が出てきたら「パラメータを介してコマンドを実行させる攻撃、もしくは、それが可能な状態なんだな~」と お考えください。
おまけ
■訳してみるよ
「OS」は「Operating System(オペレーティング・システム)」の略です。
「operating(オペレーティング)」の意味は「動作する」とか「操作する」とか「作用する」とかです。
「system(システム)」はカタカナで「システム」と解釈してください。
「command(コマンド)」の意味は「命令する」とか「指揮する」とかです。
「injection(インジェクション)」の意味は「注入」とか「注射」とかです。
何となく くっつけると
操作システムの命令を注入
となります。
■検索してみる?






