外部からWebサイトやシステムに不正に侵入するサイバー攻撃のひとつに、OSコマンドインジェクションがあります。企業は、重要なデータの漏えいやさまざまな脅威を引き起こす攻撃などに対して、どう対策するのかを考えることが重要です。
この記事では、OSコマンドインジェクションの概要・仕組みから、被害の実例、対策方法まで解説します。
OSコマンドインジェクションとは
OSコマンドインジェクションとは、Webアプリケーションの脆弱性を狙って行われるサイバー攻撃の一種です。攻撃者はWebサイトにサーバーOSへの命令文(コマンド)を含めた不正な文字列を入力し、プログラムを実行させて情報漏えいや情報改ざんなどの攻撃を行います。
具体的には、Webアプリケーション内のメールアドレス入力欄へ、メールアドレスと一緒に命令文に変換される恐れがある不正な文字列を入力します。入力されたデータに含まれる不正な文字列が実行されると、サーバー上のプログラムが操作されるという攻撃方法です。
攻撃の被害に遭うと、入力データから行われると想定されていないコマンドが強制的に実行されるトラブルが生じます。
OSコマンドインジェクションの仕組み
OSコマンドインジェクションは、ユーザーが情報を入力するフォームがあるWebサイト上で行われる攻撃です。仕組みの詳細は以下です。
- サイトのフォームやWebサイトを通じて、攻撃パターンを記載した入力データをWebサーバー上にある”Webアプリケーション”に送信
- 入力文字列の組み立ての際に不正なOSコマンドが含まれた文字列を生成
- 不正な命令コマンドがシェルに受け渡され、実際にOSコマンドが実行される
OSコマンドインジェクションは、一定の文字列を入力した場合に、複数のプログラムを起動・実行できるソフトウェア「シェル」を使って行われます。不正な命令コマンドは、シェルを呼び出して攻撃者が意図した通りにプログラムを実行し、データ漏えいなどの攻撃を行います。
OSコマンドインジェクションで発生しうる脅威
攻撃者がWebアプリケーションを通じてOSを動かすコマンドを送る際、さまざまな操作を行うため、攻撃内容は多様です。システムを操作されて甚大な被害につながるケースもあります。
攻撃により発生しうる脅威には、サーバー内にあるファイルへのアクセス、改ざん、削除などがあります。さらに機密情報の漏えいや、ウイルスやワームといった不正なプログラムをダウンロード・実行されるなど、マルウェアへの感染にも注意が必要です。
気づかないうちに侵入されてサーバー自体を乗っ取られるケースや、迷惑メールの送信・システムを攻略するための調査など、他のシステムに対する攻撃の踏み台に使われるケースもあり、大きな問題が生じる恐れがあります。
OSコマンドインジェクションの事例
実際に、多くの企業がOSコマンドインジェクションの被害に遭っています。企業Webサイトへの不正アクセスや個人情報流出など、さまざまな被害事例を紹介します。
・企業Webサイトへの不正アクセスと改ざん
企業WebサイトにOSコマンドインジェクションによる攻撃が行われた事例では、Webサイトへの不正アクセス、改ざんによる被害が発生しました。サイトを運営しているベンダーが異常に気づき、不正が発見された事例です。
海外からMovableTypeの脆弱性を利用して行われた攻撃により、Webサイトのインデックスファイルと、作成・表示するCMS(Content Management System)であるWordPressファイルの一部が改ざんされました。個人情報などのファイルはWebサーバー上には保存されていなかったため、情報の漏えいや改ざん被害には遭っていません。
この事例では、攻撃者がWebサイトに不正にアクセス・改ざんした後、さらにWebサイト上のファイルに変更や不正ファイルを挿入しようとした際にWordPressが不安定になったため、攻撃者からのアクセスができなくなりました。
・テレビ局における個人情報流出
テレビ局がOSコマンドインジェクションの被害に遭った事例もあります。急激にサーバーの負荷が上昇したことから調査を行った結果、不正アクセスが行われた事実を確認、さらにデータベース内の非公開情報もコピーされていました。コピーされた情報は番組への応募フォームに投稿した約43万件の個人情報で、データから氏名・住所・電話番号などが分かってしまいます。
ログ解析の結果からOSコマンドインジェクションによる攻撃と判明したため、被害が発見されたソフトウェアを削除、データを安全な場所に移動する対策でそれ以降の被害を防止しています。テレビ局側は、より高度なセキュリティ対策の採用も検討しているとの発表もしています。
OSコマンドインジェクションの対策
OSコマンドインジェクション被害に遭わないためには、対策を立てなければなりません。Webサイトのシステム側に不正な文字列を実行しないように設定するさまざまな対策方法で、被害を防ぐことが可能です。
・シェルを利用する関数が使用できないようにする
入力フォームに書き込んだ内容からシェルが使用されると、不正な操作が実行されるため、攻撃を受けることになります。被害を防ぐための対策には、シェルを利用する関数が入力できないルールを設ける方法が有効です。
ユーザーがデータを入力した後に受付メールを送信する処理がある場合、データの入力・送信に伴い、別のプログラムも実行しなければなりません。そこでの対策として、シェル本来の働きを妨げずに不正なコマンドを防ぐ必要があります。入力フォームにコマンドを設定する文字列の入力を禁止することで、不正な操作は行えなくなります。
PHPの場合はexec()、passthru()、Perlの場合はopen()、system()など、コマンドの入力を防ぐ設定を設ける対策が可能です。
・エスケープ処理、サニタイジングを行う
エスケープ処理とは、特別な意味を持つ記号を、意味のない別の記号に変換して出力する処理です。また、サニタイジングは「無害化」を意味する言葉。特別な意味を持つ記号を削除したり変換したりして無害化することを意味し、エスケープ処理よりも幅広いケースで使われます。
エスケープ処理では、入力フォームに書き込まれたデータの中から「;」「|」「&」「<」などの危険な文字を見つけほかの無害な文字に置き換えて、コマンドが生成されない対策を取ります。PHPにはhtmlentities()、Perlはquotemeta()関数、Pythonはbleachといったライブラリが用意されているため、ライブラリを使用して置き換えの設定が可能です。
・WAFの導入による対策
Webアプリケーションの脆弱性に対する攻撃を防止するためには、脆弱性への対策が必要です。使用しているWebアプリケーションに脆弱性が見つかった場合は、すぐにプログラムの修正をしなければなりません。サイバー攻撃に備えるにはWebアプリケーションの修正を何度も行わなければならず、管理にコストや手間がかかります。
Webアプリケーションへの攻撃に対策する際には、WAF(Web Application Firewall)の導入が効果的です。WAFは、Webアプリケーションの脆弱性に対するOSコマンドインジェクションなどの攻撃を検知し、防御するサービスです。
ファイアウォールややIDS/IPSなど、従来のネットワーク・セキュリティ製品では対応しきれない危険なサイバー攻撃を検知して、WebサイトやWebサーバーなどの安全を守ります。
【関連記事】Cloudbric(クラウドブリック) Webセキュリティ
Webセキュリティについてさらに詳しく知りたい方はこちらへ
まとめ
OSコマンドインジェクションとは、Webアプリケーションの脆弱性を狙って仕掛けられるサイバー攻撃です。ユーザーが情報を書き込む入力フォームを使用して攻撃者が不正な文字を入力・送信すると、意図しないコマンドが強制的に実行され、攻撃の被害に遭います。
OSコマンドインジェクションでは、サーバー内のファイルへのアクセス・改ざん、マルウェア感染、システムの乗っ取りなど、さまざまなトラブルが発生します。Webアプリケーションが攻撃されないためには、シェルを利用されない工夫や、サニタイジング、WAFの導入などの対策をして攻撃に備え、重大なリスクを避けなければなりません。