【セキュリティ】OSコマンド・インジェクションとは

セキュリティ

みなさんこんにちは、ちょいまけです。

今回は「OSコマンド・インジェクション」について説明します。

SQLインジェクションは割と有名な脆弱性で色んな入門書に載っていますが、ではOSコマンド・インジェクションはご存知でしょうか。

ちなみにSQLインジェクションって何?という方は以下の記事をご覧下さい。

やや聞き慣れない名前かもしれませんがこのOSコマンド・インジェクション、実はかなり危険性が高い脆弱性で、知らずに放っておくと大きな被害が発生するケースがあります。

無用な被害を生み出さないために、OSコマンド・インジェクションとはどんな攻撃か、危険性、対策について勉強しましょう。

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

OSコマンド・インジェクションとは不正なOSコマンドを利用してWebサービスで利用しているサーバーを操作する手法または脆弱性のことです。

攻撃者は外部からOSコマンドを入力し、Webサービスが想定していないOSのコマンドを実行させ、サービスで利用しているサーバーを悪用します。

方法は様々ですが、例えば以下のような悪用が可能です。

  • サーバー内の情報漏洩、改竄、削除
  • マルウェアをインストールされる
  • 別サーバーへ攻撃する際の踏み台

このように影響が大きい脆弱性であるため、OSコマンド・インジェクション対策は必ず行う必要があります。

事例

日本テレビ

2016年4月21日に日本テレビが、同社のWebサイトから約43万件の情報漏洩があった可能性があると公表しました。

日本テレビ: 弊社ホームページへの不正アクセスによる個人情報流出の可能性についてより

漏洩した情報は氏名・住所・電話番号・メールアドレス等でクレジットカード情報は含まれていません。

また同年21日未明にデータを安全なところに移動されるなどの対応を完了させたとのことです。

大きなテレビ局なだけあって、被害の数も甚大です。

原因

原因は外部(攻撃者)から入力されたOSコマンドを、Webサービス側の実行処理にそのまま渡していることです。

この実装に対する対策を考える必要があります。

対策

考えられる対策を3つあげます。

OSコマンド呼び出しを使わない実装方法にする

OSコマンドを呼び出す処理がサービス内に存在しなければ、外部からOSコマンドを入力されても実行されることはありません。

一番この方法が手っ取り早いので、可能であればこの方法をオススメします。

外部から入力された値をコマンド呼び出しに使用しない

外部からのOSコマンドをそのまま実行する実装になっているから被害が発生します。

入力された値をそのまま渡さずコマンド実行前に検証、加工した上でコマンドを呼び出せば、OSコマンド・インジェクションによる被害は発生しません。

OSコマンドに渡すパラメータをエスケープする

攻撃者から入力された値がコマンドとして実行されないよう、適切なエスケープ処理を施してやれば問題は発生しません。

さいごに: マイナーだけどとっても怖い

SQLインジェクションに比べて若干マイナーな攻撃手法ですが、実行の手軽さ、被害の種類の豊富さ、大きさを考えるとかなり危険度の高い手法です。

日本テレビのような被害を生み出さないためにも、しっかり知識を身につけて、脆弱性を生み出さないようにしましょう。

今回は以上です。
最後まで読んでいただきまして、ありがとうございました。

コメント

タイトルとURLをコピーしました