OSコマンドインジェクションとは?

今回も前回に引き続きセキュリティ用語です。

 

2016年4月21日に日本テレビのWebサイトが攻撃され、個人情報43万件が流出した可能性があることを発表しました。「OSコマンドインジェクション」によって不正な命令を実行されたとのことです。

 

「OSコマンドインジェクション」とは、Webサイト上にユーザのデータ入力を受付ける仕組みがある場合に、入力するデータにOSを操作するコマンドを紛れ込ませて、OSを不正に操作する攻撃のことです。Webサイト上で実行されるプログラム言語にはOSコマンドの実行を支援する機能があり、その機能を利用してOSコマンドを実行します。非常にポピュラーな攻撃手法だといえます。

 

少し具体的に説明すると、例えば、UNIXのOSでは、コマンドを実行するときに以下のような記号を使うことで、複数のコマンドを連続して実行できます。

; セミコロン・・・複数の文を続けて実行。

| パイプ・・・前の文の標準出力を売りその文の標準入力として実行。

` バッククォート・・・囲んだ文をコマンドとして実行し、その標準出力の結果で置換して実行。

 

Webサイト上でテキストボックスに何かパラメータを入力するようになっていて、何もセキュリティ対策を行っていない場合、テキストボックスに何か文字列を入力した後にセミコロンを付けて、実行したいOSコマンドを入力して(実際にはもう少し複雑ですが)、不正なOSコマンドを実行できてしまう場合もあります。古くからある攻撃手法ですが、システムの根本的な部分を狙う攻撃であり、なかなか被害がなくならないということは完璧な対処を行うことは難しいということですね。

 

対策としては、サニタイジングを徹底して行うことが重要です。サニタイジングとは、テキストボックスなどのフォームに入力された文字列を解析してOSコマンドなどが発見されたら無害な文字列に置換えをする処理のことです。日本語で無害化と呼ばれる場合もあります。クロスサイトスクリプティングやSQLコマンドインジェクションなど他の攻撃に対しても有効な防御方法となるので、Webサイトを運営している場合には、サニタイジングをしておきましょう。

 

コラム一覧へ