記事カテゴリ
MENU

セキュリティ

OSコマンドインジェクションの原因や対策、被害事例などを紹介します!

このエントリーをはてなブックマークに追加

Webアプリケーションのぜい弱性を悪用してサーバー内のファイルの改ざん、削除、情報漏えいなどを狙う「OSコマンドインジェクション」。今回はOSコマンドインジェクションについて解説するとともに、具体的な被害事例や有効な対策について紹介します。

この記事で紹介している
サービスはこちら

クラウドWAF
セキュリティオペレーションサービス多層防御の機能をセットで提供し、24時間365日の有人監視でWebサイトの改ざん・情報漏えいを守る

目次

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

「OSコマンドインジェクション」は、Webアプリケーションのぜい弱性を突いた攻撃の一種です。
「インジェクション」(injection=注入、注射)の名称が示す通り、WebサーバーへのリクエストにOSへのコマンド(命令文)を紛れ込ませ、不正に実行させるものです。これにより、サーバー内ファイルの改ざん、削除、流出などの被害を受ける恐れがあります。
「OSコマンドインジェクション」の仕組みを図1に示します。攻撃者はフォームなどを通じ、攻撃パターンを含む入力データをWebサーバー上にあるWebアプリケーションに送信します。Webアプリケーションでは入力データにもとづきシェルに受け渡す文字列を組み立てますが、ぜい弱性のあるWebアプリケーションでは組み立ての際に不正なOSコマンドが含まれた文字列が生成されてしまいます。
これがシェルに受け渡されると実際にOSコマンドが実行され、ファイルの改ざん、削除、流出などが発生します。

図1 OSコマンドインジェクションの仕組み

図1 OSコマンドインジェクションの仕組み

OSコマンドインジェクションとSQLインジェクションの違い

OSコマンドインジェクションと似た言葉に「SQLインジェクション」があります。
SQLインジェクションでは、Webサーバーへのリクエストにデータベースを操作する「SQL」と呼ばれる命令文を紛れ込ませ、データベースを不正に操作します。これにより、サーバー内のデータベースの改ざんや破壊、個人情報の剽窃(ひょうせつ)といった被害を受ける恐れがあります。
両者はよく似ていますが、SQLインジェクションがデータベースのみを標的としているのに対し、OSコマンドインジェクションではWebサーバー全体を標的としていることから、より深刻な被害を受ける恐れがあるといえるでしょう。

攻撃に悪用されやすいOSコマンドの例

例えばLinuxでは、攻撃者は次のようなOSコマンドを利用してファイルの改ざん、削除などを行います。

OSコマンド 内容
cp ファイル/ディレクトリのコピー
mv ファイル/ディレクトリの移動、名称変更
rm ファイル/ディレクトリの削除
touch ファイル/ディレクトリのタイムスタンプ変更
chmod ファイル/ディレクトリのパーミッション変更
chown ファイル/ディレクトリの所有者変更
wget ウェブからファイルをダウンロード
curl データの送受信

OSコマンドインジェクションの脅威

では、OSコマンドインジェクション攻撃を受けた場合、具体的にはどのような脅威があるのでしょうか。

サーバー内ファイルの閲覧、改ざん、削除

サーバー内に保存されたファイルに対して、メールとして送信する、別のファイルで上書きする、削除する、などの操作が不正に実行されたり、個人情報などの重要なデータが漏えいしたりする恐れがあります。

不正なプログラムのダウンロード、実行

サーバーに不正なプログラムをダウンロードしたり、実行したりすることができます。例えば、サーバーをウイルス、ボット(BOT)、バックドアなどに感染させるなどが考えられます。

ほかのシステム攻撃への踏み台

ログインID/パスワード情報などを盗んだり、権限を変更したりなどの手段でサーバーを乗っ取り、ほかのシステムへの不正アクセスやDDoS攻撃、迷惑メール送信などの踏み台として悪用されることがあります。

OSコマンドインジェクションの原因

Webアプリケーション上で不正なコマンドが実行されてしまう原因は、ぜい弱性のあるアプリケーション設計にあります。OSコマンドを呼び出すことができる言語(PHPやJava、Rubyなど)において、OSコマンドインジェクションが発生する可能性があります。

Webアプリケーションが外部プログラムを呼び出す関数などを使用している

フォームなどに入力された情報をパラメータとして受け渡し、シェルや他のプログラムを呼び出して実行するよう設計している場合、攻撃パターンを含む入力データによりOSコマンドが不正に実行されてしまいます。

入力された情報をそのままシェルやほかのプログラムに受け渡している

入力された情報をチェックせず、そのまま受け渡すような設計になっている場合、入力情報に攻撃パターンが含まれていてもそのままシェルやほかのプログラムに送られ、結果としてOSコマンドが実行されてしまいます。

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

では、攻撃から自社のサーバーを保護するにはどのような手段があるのでしょうか。次に3つの方法を紹介します。

WAFサービスを導入し防御する

比較的簡単で効果の高い方法は「WAF(Web Application Firewall)」を導入することです。WAFを導入すれば、従来のファイアウォールでは防ぐことが難しかった、ぜい弱性を狙った攻撃からWebアプリケーションへの攻撃を防ぐことができます。

シェルを利用するコマンドを使わない

そもそもシェルでOSコマンドが実行されなければ攻撃の影響はありません。そこで、あらかじめこうしたコマンドを使用しないことが根本的な解決となります。PHPで言えば、exec(), passthru(), system()、Perlで言えば、open(), system(), eval()、Pythonで言えば、os.system(), os.popen()などがこれにあたります。

エスケープ処理、サニタイジングを行う

入力データに含まれる「;」「|」「&」「<」などの危険な文字を無害な文字に置き換える処理も有効です。これはエスケープ処理、サニタイジングとも呼ばれる処理で、PHPではhtmlentities()、Perlではquotemeta()関数、Pythonではbleachというライブラリが用意されています。

また、次に示すIPAのWebページでは、OSコマンドインジェクション攻撃を防ぐことのできる、安全なWebサイトの作り方について解説しています。

安全なウェブサイトの作り方 - 1.2 OSコマンド・インジェクション

外部から入力された文字列をパラメータに含めない

そもそも外部から入力された文字列をコマンドに含めないようにすれば、エスケープ処理やサニタイジングは必要ありません。入力された文字列を一旦テキストファイルに保存した後に呼び出すなどの処理を経由することで、不正なコマンドの実行を抑止することができます。この方法は、パラメータの形式を指定できない場合にも有効です。

定期的にぜい弱性診断をする

自社で利用しているWebアプリケーションに対して、定期的にぜい弱性診断を行うことも有効です。自社で実施することが難しい場合には外部のベンダーが提供するぜい弱性診断を受けることもできます。ぜい弱性診断により、潜在的なぜい弱性を早期に発見しリスクを低減することができます。

OSコマンドインジェクション攻撃の対策なら低コストで多層防御できるNTTPCのクラウドWAFがおすすめ

クラウドWAFセキュリティオペレーションサービス

NTTPCの「クラウドWAFセキュリティオペレーションサービス」は、クラウド型WAFに加え、ファイアウォールやIDS/IPSなどの防御機能までを実装したクラウド型のサービスです。
WAFの機能により、OSコマンドインジェクションはもちろん、クロスサイトスクリプティング、SQLインジェクション、ディレクトリ・トラバーサル、HTTPヘッダインジェクションなど、様々な脅威からWebアプリケーションを保護することができます。
さらに、高度で専門的なセキュリティオペレーション機能(SOC)も提供しています。
また、オプションでDDoS対策サービスも付けることができ、お客さまのWebサイトをさまざまな脅威から守ることができます。

クラウドWAF
セキュリティオペレーションサービス多層防御の機能をセットで提供し、24時間365日の有人監視でWebサイトの改ざん・情報漏えいを守る

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

国内外を問わずぜい弱性対策が掲載されているデータベースのJVN iPedia(ぜい弱性対策情報データベース)には、OSコマンドインジェクションの被害事例が掲載されています。今回はその中から3件紹介します。

<事例1>テレビ局からプレゼント応募者の個人情報が流失

2016年4月、テレビ局の委託先である運営会社が攻撃を受け、プレゼント応募者などの氏名、住所、電話番号、メールアドレスなどの個人情報が漏えいしました。攻撃はモバイル機器向けのWebアプリケーションのぜい弱性を突いたもので、流出件数は最大43万件におよぶと報道されました。

<事例2>ラジオ局からリスナーの個人情報が流失

事例1と同時期の2016年4月、ラジオ局の運営するWebサーバーが攻撃を受けました。攻撃はOSコマンドを呼び出すなど、Webアプリケーションの設計が不適切だったことによるものでした。こちらもプレゼント応募者や番組へのメッセージ送信者の個人情報が最大64万件流出したと報道されました。

<事例3>:学術情報提供会社のホームページ改ざん

2021年11月、学術情報提供を提供する企業が攻撃を受け、Webページの改ざん、ファイルの追加・変更などの被害が生じました。攻撃はコンテンツ管理システム「Movable Type」のぜい弱性を突いたもので、ベンダーにより迅速にブロックされ、個人情報の漏えいなどの被害はありませんでした。

まとめ

今回はWebアプリケーションのぜい弱性を悪用する「OSコマンドインジェクション」について解説しました。
OSコマンドインジェクションはWebサーバーへのリクエストにOSコマンドを紛れ込ませる手口で、「サーバー内ファイルの閲覧、改ざん、削除」「不正なプログラムのダウンロード、実行」「他のシステム攻撃への踏み台」などの被害をもたらします。本コラムでも紹介した通り、実際にテレビ局や学術情報提供サービスなどで被害が出ています。
被害を受けないためにはWebアプリケーションの設計を見直す必要があり、特に「WAFサービスを導入し防御する」「シェルを利用するコマンドを使わない」「エスケープ処理、サニタイジングを行う」「外部から入力された文字列をパラメータに含めない」などの対策が有効です。また、定期的にぜい弱性診断を実施することも効果的でしょう。
自社でWebサイトやWebアプリケーションの開発・運用を行っている場合には、まずはWAFサービスの導入から検討してみてはいかがでしょうか。

※Linuxは、Linus Torvalds 氏の日本およびその他の国における登録商標または商標です。
※ICT Digital Columnに記載された情報は、リリース時点のものです。
商品・サービスの内容、お問い合わせ先などの情報は予告なしに変更されることがありますので、あらかじめご了承ください。

この記事で紹介している
サービスはこちら

クラウドWAF
セキュリティオペレーションサービス多層防御の機能をセットで提供し、24時間365日の有人監視でWebサイトの改ざん・情報漏えいを守る

関連するおすすめ記事