ウェブサイトやウェブアプリに脆弱性があると、攻撃者が入力欄に不正なコマンドを入力されて想定しない動作をさせることができてしまいます。その結果、サーバー内の機密情報を漏洩させたり、サーバーを乗っ取ったりすることができてしまいます。これを「OSコマンドインジェクション」といいます。その被害の内容と対策を、詳しく解説しましょう。
OSコマンドインジェクションとは
ウェブサイトやウェブアプリには、お問い合わせフォームなど入力を必要とする画面があります。「OSコマンドインジェクション」はウェブサイトやウェブアプリに存在する脆弱性を突いた攻撃の一種です。ウェブサーバーへ入力するデータの中にOSへのコマンド(命令)を紛れ込ませて挿入(Injection:インジェクション)し、不正に実行させることを言います。OSコマンドインジェクション攻撃の流れ
OSコマンドインジェクション攻撃の流れを説明しましょう。
- 攻撃者はウェブサイトのお問い合わせフォームやウェブアプリの入力欄に、攻撃の内容を含む文字列を入力して送信します。ウェブサイトやウェブアプリでは入力されたデータを処理しようとしますが、そこに脆弱性があると、含まれた攻撃の内容をそのまま処理してOSへのコマンドにしてしまいます。そしてそれがシェルに受け渡されると、自動的にコマンドが実行され、攻撃が成功します。
- 攻撃が成功すると、機密情報の流出などが発生します。
- また、サーバーそのものを乗っ取られ、マルウェアの感染源となったりDoS攻撃(Denial of Service attack)やDDoS攻撃(Distributed Denial of Service attack)の踏み台となったりします。
OSコマンドインジェクションで起こる被害
OSコマンドインジェクション攻撃を受けた場合、以下のような被害が想定されます。深刻な場合は、ウェブサイトの閉鎖やウェブアプリの利用中止の必要が生じます。情報流出
サーバー内に保存されているファイルにアクセスできた場合、アカウント情報などの機密情報やサーバーの設定情報が閲覧できてしまいます。また、それらを閲覧するだけでなく、メールで送信する、不特定多数にばらまくといった情報流出が発生する可能性があります。サーバー内データの改ざん・削除、暗号化
ファイルを閲覧されるだけでなく、ファイルやデータベースを勝手に編集されてしまったり、別のファイルと置き換えられたり、削除されたりしてしまいます。また、必要なファイルを勝手に暗号化されて復号できなくされるかもしれません。アクセス権の変更
攻撃者がファイルやディレクトリへのアクセス権限を変更してしまい、正規のアクセス権を持っているのにファイルが閲覧できなくなったり、サーバーが動かなくなったりしてしまいます。マルウェアへの感染
コンピュータウイルスやトロイの木馬などマルウェアの感染源にさせられ、アクセス者を感染させてしまいます。それと同時にサーバー自体もマルウェアに感染させられてしまいます。サーバーの乗っ取り、攻撃の踏み台
ログイン情報を盗まれるとサーバー自体を乗っ取られ、バックドアを設置されるなど、攻撃者のやりたい放題にされてしまいます。そして、DoS(Denial of Service)攻撃やDDoS(Distributed Denial of Service)攻撃、SPAMメールの送信など、踏み台として悪用されるようになります。OSコマンドインジェクションへの対策は
OSコマンドインジェクションへの対策は、ウェブサイトやウェブアプリを開発する段階で行う必要があります。順に説明しましょう。サニタイジング(エスケープ処理)を実施する
OSコマンドインジェクションは、ウェブサイトやウェブアプリが入力された値をそのまま処理しようとすることで生じます。そのため、HTMLタグや本文に頻出する特定の文字に対してサーバー側で「サニタイジング(sanitizing、無害化)」と呼ばれる処理を行います。具体的には、Webページの表示に影響する特別な記号文字を、「HTMLエンティティ」と呼ばれる文字列に置換、または除去します。 サニタイジングが必要な文字としては、以下などが挙げられます。サニタイジング前の文字 | HTMLエンティティ | 文字の役割 |
< |
< |
タグの開始 |
> |
> |
タグの終了 |
& |
& |
エンティティや文字参照の開始 |
“ |
" |
属性の値の開始や終了 |
‘ |
' |
特殊文字をそのまま表示 |