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

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

OSコマンド・インジェクションは、主にインタプリタ言語を用いてWebアプリケーションを開発している場合に発生する問題です。この問題が存在すると外部からOSのシェルコマンドを指定されることで、Webアプリケーションを経由して基盤であるWebサーバーの制御が奪われる危険性があります。

また、このOSコマンド・インジェクション脆弱性をつく攻撃は能動的攻撃に分類されるため、攻撃者に気づかれた場合にダイレクトに攻撃を受ける恐れがあります。その上で前述したように問題のあるWebアプリケーションがインストールされているWebサーバーの制御を奪われる恐れがあるため、非常にリスクの高い脆弱性と言えます。

OSコマンド・インジェクション攻撃の仕組み

OSコマンド・インジェクション攻撃は以下の条件のように、外部入力の値をOSコマンドとして評価していることが原因で発生します。

OSコマンド・インジェクションが発生する条件

  • 外部入力に基づいてサーバーサイドのプログラムコードを作成している
  • evalなどのメソッドを使って外部入力をOSコマンドとして評価している
  • 外部入力をもとにサーバーサイドのテンプレートエンジンなどで値を評価している

以下は外部入力の値をOSコマンドとして評価している場合の攻撃の概要です。

OSコマンド・インジェクション攻撃の概要

  1. 攻撃者はOSコマンドとして成立する文字列を含んだHTTPリクエストを送信する
  2. 問題のあるWebアプリケーションでは、攻撃者が指定した文字列をOSコマンドとして評価して実行してしまう
  3. 2.の処理の結果、攻撃者が指定したOSコマンドが実行された結果の応答がされる

なお、応答については攻撃者の指定したOSコマンドの内容によってさまざまに変化します。

被害事例

以下のように国内においても、OSコマンド・インジェクションが原因で実例に至ったという報告が多数されております。

プレゼント応募サイトでの事例

2016年にプレゼントを応募するサイトにおいて、OSコマンド・インジェクションの脆弱性を突いた攻撃によって情報漏洩事件が引き起こされました。応募サイトはテレビ局と連動していたため、漏洩件数は約43万件におよぶと報道されました。

ラジオ局のWebサイトでの事例

2016年にラジオ局の運営するWebサイトに対して、OSコマンド・インジェクション攻撃が行われました。この結果、リスナーの個人情報を含む重要情報が64万件も漏洩したと報道されています。

脆弱性の解説動画

OSコマンド・インジェクションが起こる原因

外部入力をそのまま用いてOSに対してコマンド情報を発行してしまうと、OSコマンド・インジェクションの問題になります。OSコマンドは、OSに対して直接的な命令になるため、存在した場合に基幹システムに対して多大な影響を与えます。

OSコマンド・インジェクション攻撃への対策手法

必須対策1(外部入力に依存したプログラム評価をしない)

外部入力をもとにプログラムを組み立てる実装はOSコマンド・インジェクション脆弱性を招く恐れがあります。そのため、外部パラメータの値からOSコマンドを実行する処理が本当に必要か検討の上、他の処理方法で代価できる場合は、そちらの実装方法を採用することが望ましいと言えます。

必須対策2(バリデーション処理)

必須対策1が実施できない場合に行います。Webサイトの仕様上、どうしても外部パラメータからOSコマンドを評価する必要がある場合には、規定のコマンド以外の入力の場合に処理を停止するようにチェック処理を行います。また、チェック処理に合わせてOSコマンド実行時にはchrootなどのコマンドを用いてルートディレクトリを変更して影響度を下げた上で実行することが望ましいと言えます。

オプショナルな対策1(WAFの導入)

Webアプリケーションファイアーウォール(WAF)を導入して、Webサイトを保護する方法です。この方法は一定の防御効果が見込めますが、製品を導入・運用していくのに費用が掛かることに加えて、他の脆弱性と同様にすべてのコード・インジェクション攻撃を防御することができません。そのため、あくまで前述した対策が実施できない場合などに代価案として実施することが望ましい対策と言えます。

まずは手軽にツールで脆弱性診断

上述の対策手法が重要となる一方で、脆弱性が混入されていないかを検知する事も重要となります。そのためには脆弱性診断を受診する必要があり、OSコマンド・インジェクションの脆弱性についても脆弱性診断を通じて発見する事が出来ます。

脆弱性診断とは何かについて詳しく知りたい⽅は脆弱性診断とは(エンジニア向け)脆弱性診断とは(⾮エンジニア向け)もぜひご参照ください。

脆弱性診断ツール「Securify Scan」では、OSコマンド・インジェクションの脆弱性検知も対応しております。脆弱性検知やセキュリティレベルを強化したい企業様はぜひ弊社の脆弱性診断ツール「Securify Scan」を活用ください。

無償でのトライアル実施も行っておりますので、お気軽にお問い合わせください。

Webアプリケーションの
継続的セキュリティを簡単に実現
Securify

ブログ一覧へ戻る

サービスに関するご質問・ご相談など
お気軽にお問い合わせください