コマンドインジェクションとは?被害事例と対策方法6つ

コマンドインジェクションとは?被害事例と対策方法6つ
  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

コマンドインジェクションとは、Webアプリケーションに対してコマンドを含んだ悪意ある入力が行われることによって、情報漏洩や踏み台などが起こるサイバー攻撃の一種です。

今回は、コマンドインジェクションについて起こりえる被害と事例・対策をご紹介します。

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

コマンドインジェクション(Command Injection)とは、コマンドを利用しWebアプリケーションの脆弱性を悪用するサイバー攻撃の一種です。

コマンドを利用することで、コンピューターの制御部分に対して命令を送ることができ、コア部分を自由に制御することができてしまいます。

また、コマンドを利用した攻撃を「コマンドインジェクション」というのに対して、データベース言語を利用した攻撃を「SQLインジェクション」といい、互いに悪意ある入力が行われることで、情報漏洩や改ざんが行われ大きな被害になる可能性があります。

SQLインジェクションについてはこちら

コマンドインジェクションされた場合に起こること

コマンドインジェクションが行われた場合、以下のようなことが起こりえます。

被害 起こること
情報漏洩 個人情報や企業機密の悪用や転売
改ざん・削除 イメージや信頼の喪失・誤報・ログイン不能
遠隔操作 踏み台・スパムメール送信など
不正な処理の実行 脆弱性によって行える全コマンドの実行
マルウェアに感染 ウイルスの増加や拡散

表に上がっただけではなく、他にも被害が出る場合があります。
攻撃が行われていることに気づくことができていない場合、被害が拡大するだけでなく損害も大きくなる可能性があるため、十分な対策を行う必要があります。

コマンドインジェクションの被害事例

コマンドインジェクションが行われた事例を2つ紹介します。

日テレ43万件の個人情報が漏洩

日本テレビのWebサイトに対してコマンドインジェクションが行われた事例です。

使用しているサーバーの負荷が上昇していることに気づき診断した結果、OSコマンドインジェクションが行われていたと判明しました。

コマンドインジェクションによって、意見募集やアンケートにて登録した中から43万件もの情報が流出したと報告しています。
その中には、氏名・電話番号・住所・メールアドレスなどの情報がありましたが、クレジットカード関連は含まれていなかったようです。

他の被害情報や損害額については公表されていません。
日テレで43万件の個人情報流出–攻撃に使われた「OSコマンドインジェクション」とは?

J-WAVE64万件の個人情報流出

ソフトウェア「ケータイキット for Movable Type」の脆弱性を利用し、コマンドインジェクション攻撃が行われた事例です。

J-WAVEで行なったプレゼント募集やメッセージの送信に使用した、氏名・性別・電話番号・メールアドレス・職業などの情報が64万件が漏洩したと報告しています。

J-WAVEは影響のあった個人情報をサーバー上から削除し、別の場所に保存するなどの対策をとっており、ソフトウェアの開発元であるアイデアマンズ株式会社は、脆弱性を改善したバージョンを公開する対策を行いました。

こちらも他の被害情報や損害額については公表されていません。

J-WAVE、コマンドインジェクション攻撃による不正アクセス、個人情報64万件が流出した恐れ

コマンドインジェクションの対策方法

コマンドインジェクション攻撃の対策方法を6つご紹介します。
身近で簡単にできる対策もあるので、ぜひ実施してみてください。

利用しているOSを最新にする

一番身近で、簡単に行うことができる対策です。

OSのバージョンアップがあった際には、攻撃者に対しても脆弱性情報が通知されます。

脆弱性を放置したままでは容易に攻撃することができてしまう危険性があるため、常に最新の状態を保つことで攻撃される可能性を低くすることができる有効な手段です。

また、OSを使う際にアップデートがないか確認することでアップデートをし忘れることも少なくすることができるので、実施してみてはいかがでしょうか。

コマンドを使わない実装をする

サービスを開発する前の段階で、コマンドを必要とする処理や実行することができる実装を含まない設計することが重要です。

プログラム処理の中にコマンドが実行できてしまうような実装をしている場合は、攻撃が行われてしまう可能性があります。

コマンドが実行できてしまうような処理を記述しなようにすることで、攻撃される可能性を少なくすることができるため、実装前に再度確認しましょう。

エスケープや入力制限

入力ができるフォームや検索バーを用意しているサービスでは、入力制限やエスケープ処理をすることで対策することが可能です。

入力制限を行うことで悪意ある攻撃を防ぐことができるだけでなく、誤った投稿・登録を防ぐことができます。

また、エスケープ処理を行うことでコマンドとして実行できる入力やスクリプトなどの実行防ぐことができる有効な手段です。

エスケープについてはこちらで解説していますので、参考にしてみてください。

ヒントとなるエラーを表示しない

実行した処理に対して、適切なエラー表示をすることが重要です。

例えば、エラー表示に一部プログラムの内容を記載してしまう・エラーメッセージをそのまま表示している場合は変更を行なった方が良いでしょう。

エラーを表示する場合は、プログラムの内容を表示しないことはもちろん、エラーコードごとに表示するページを分けたり、エラーごとに表示する文言の変更を行うなどして対策する必要があります。

検知や監視を行う

サービスに対するアクセスや処理が正常に行われているか監視することで、不正なアクセスや実行が行われていないか検知することができます。

監視や検知を行うことで、不正なアクセスや処理を未然に防ぐことができるだけでなく、攻撃を受けた場合に検知することができれば早期対策を行うことができ、被害を最小限に抑えることが可能です。

また、WAFの導入も有効な対策手段ですので、検討してみてはいかがでしょうか。

セキュリティソフトを導入する

攻撃を受けた場合に、対策を行なっていない無防備な状態では攻撃者の自由になってしまいます。

攻撃されたことに早く気づくためだけではなく、ウイルスの感染や攻撃の拡大・拡散を防ぐためにもセキュリティソフトの導入が必要です。

以下に有料と無料のセキュリティソフトをあげてみました。
用途に応じて、セキュリティソフトを導入してみてください。

まとめ

今回は、Webアプリケーションの脆弱性を狙った攻撃「コマンドインジェクション」について解説しました。

攻撃を受けることで、OSの制御が行われてしまう非常に危険な攻撃であることがわかります。

ご紹介した対策方法を実施することで攻撃を受ける可能性を低くすることができるので、ぜひ身近なところから行なってみてください。

自社で対策を行うことが難しい場合は、セキュリティの専門家がいる企業に問い合わせるところから始めてみてはいかがでしょうか。

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

記事が気に入ったら
wp.supportを "いいね!"
Facebookで更新情報をお届け。

WordPressの保守・セキュリティ対策なら「wp.support」