OSコマンド・インジェクションとは?その攻撃手法や対策を徹底解説|サイバーセキュリティ.com

OSコマンド・インジェクションとは?その攻撃手法や対策を徹底解説



「OSコマンド・インジェクション」と聞いても少し難しく感じてしまう方が多いかと思います。実際この攻撃は、ある程度エンジニアとしてのリテラシーがないと難しい攻撃手法です。
しかし、しっかりと対策をしておかないと、脆弱性のあるWEBサイトを構築するなど、あなたが攻撃者側に加担してしまう可能性がある攻撃です。PHPやJavaなどの脆弱性を把握していますか?

実際にどのような攻撃なのか、よくわからないうちは不安に思う方も多いと思いますので、下記に概要から対策まで整理しましたのでぜひ参考にしていただければと思います。

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

OSコマンド・インジェクションとは、攻撃者が脆弱性を持つアプリケーションを通じて不正なOSコマンドを送信することにより、攻撃対象となったPCやサーバに不正アクセスを行うサイバー攻撃です。

“OS”=Operetaing System:基本ソフトウェア
“インジェクション”=“挿入する(injection)”

具体的な方法としては、アプリケーションに対して送信するパラメータ情報に、不正なOSコマンドを含ませる等の手法が代表例となります。

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

攻撃の原因は?

OSコマンド・インジェクションの根本的な原因は、脆弱性のあるアプリケーションの設計です。

詳細は対策の項目にて後述しますが、

  • シェル(cmd.exeなど)を起動可能な言語機能の利用を避ける
  • 外部からの命令文をそのままコマンドラインにインジェクションさせない

等の開発側の対策が不十分な点に起因します。開発者は対策を講じるとともに、ユーザー側は脆弱性のあるアプリケーションを使用しないことが重要です。

OSコマンド・インジェクション攻撃されるとどうなる?

OSコマンド・インジェクション攻撃は、アプリケーションを通じて攻撃対象のOSに命令文を送り込むことで成立するサイバー攻撃です。攻撃者の意のままにデータベースを操作されることとなるため、必然的に被害は大きいと言えます。

過去の被害例

  • PCを遠隔操作され、犯罪や不正アクセスの犯人に仕立て上げられる
  • データーベース内に登録されている個人情報(カードや銀行口座)等のデータが流用される
  • 複数のマルウェアをインストールされてしまい、深刻なダメージを受ける
  • データーベースの改ざんや消去が行われ、業務に支障をきたす

などの被害が発生しています。

具体的な被害事例

ここではOSコマンド・インジェクションによる具体的な被害の中でも、とくに大きな話題を呼んだものをご紹介します。

日本テレビ(2016年)

2016年4月20日13時頃に同社がWebのモバイルサイトで利用している「ケータイキット」と呼ばれるソフトウェアが不正アクセスによる攻撃を受け、この不正アクセスの結果、最大で43万件におよぶ個人情報(氏名、住所や電話番号など)が外部に流出した可能性が高いとのこと。
流出したのは、キャンペーンに応募した個人情報の流出(氏名/住所/電話番号/メールアドレスなど)で、この原因がOSコマンド・インジェクションであると言われています。

参考日テレ個人情報漏洩事件から考える<未知の脆弱性への対抗策とは>

攻撃被害に遭わないための対策

OSコマンド・インジェクションに対しては、一次対策としてアプリケーション開発者がOSコマンド・インジェクションを想定した開発を行うことが、最大の対策になります。
WEBを通じたサービスを提供する場合、多くの人が使うものでありしっかりとセキュリティ対策を行なった上で公開しないといけないということを意識して開発をしましょう。
具体的には下記のような点に注意が必要です。

cmdコマンドに注意

利用されやすいcmdコマンドなどのシェルを使った言語機能の利用を回避し、外部からのコマンドを直接パラーメータとして渡さない仕組みを構築するように心がけましょう。

また、OSコマンドを実行する際は「ホワイトリスト方式」で構築し、利用可能なコマンドを実質的に制限することも効果的な対策です。

狙われやすいphp環境を知る

The PHP Group が提供しているウェブ開発用プログラミング言語「PHP」は、頻繁にOSコマンド・インジェクションやSQLインジェクションの攻撃対象となっています。

PHPはサーバサイドスクリプトであるため、CGIと比べて処理速度が早くサーバに負担がかからないメリットを有しているものの、OSコマンド・インジェクションに対して脆弱性を示し、現在もなおパッチにて修正作業が続いている状況です。

(過去細工されたパラメータを escapeshellarg 関数に処理させることで、任意の OS コマンドを実行させる事件などが発生しています )

脆弱性を把握しておく

OSコマンド・インジェクションの脆弱性は、開発者側がソースコードを確認することで、脆弱性をチェックすることも可能です。

systemやexecなどの外部コマンドを呼び出すことができる関数名やメソッド名を、ソース内検索することで、目視チェックしてみましょう。該当部分があれば、他の命令文に置き換える等の対策を施すことをオススメします。

上記のような点に注意し、脆弱性を作りこまないように開発することが必要です。
そのために、IPAが公開している、「安全なウェブサイトの作り方」や「IPA ISEC セキュア・プログラミング講座」を参考にした上、必要な安全対策を実施し、開発を委託する場合にも、自社で開発する場合と同様に、上記の対策を実施することをおすすめします。

参考安全なウェブサイトの作り方
参考IPA ISEC セキュア・プログラミング講座

問題発生時およびその後 (被害が発生したと気づいたら)
原因箇所を修正しましょう。すぐに修正が難しい場合には、ウェブサイトの一部や全体の公開を一時停止することを検討することをおすすめします。
本問題により、ウェブサイトを乗っ取られた場合、攻撃者に悪意あるプログラム等を埋め込まれてしまっている可能性があります。ウェブサイトを OS から再構築することをお勧めします。また、ウェブサイトを乗っ取られてしまうと、ウェブサイトの利用者だけでなく、他のウェブサイト等にも迷惑をかけてしまうため、ウェブサイトの公開を停止を検討することをおすすめいたします。
ウェブサイトに個人情報等を格納していた場合、本問題により、その個人情報が漏洩した可能性があります。漏洩した個人情報の範囲の特定や顧客・取引先への対応が必要です。
引用OSコマンド・インジェクション|ウェブサイトにおける脆弱性解説[IPA]

まとめ

OSコマンド・インジェクションはアプリケーションの脆弱性を無くすことで、ほぼ防ぐことができるサイバー攻撃です。開発者は常に自身のソースコードに脆弱性が含まれている可能性を意識し、万が一のトラブルに備えて対策を講じることが求められています。

また、ユーザーは脆弱性が確認されたアプリケーションは、随時修正パッチを導入することで、不正アクセスによる被害を防ぐことが可能です。


セキュリティ対策無料相談窓口


「セキュリティ対策といっても何から始めたら良いかわからない。」「セキュリティ対策を誰に相談できる人がいない。」等のお悩みのある方、下記よりご相談ください。

無料相談はこちら

SNSでもご購読できます。