ロードされるページ: 作成した Web サイトの訪問者がマルウェアに感染する仕組み

開発者による、悪意のある Web サイト概論

Google によれば、1 日に 9,500 の Web サイトが、サイトの訪問者に害を与えることを目的としたマルウェアに感染しています。Web サイトがマルウェアに感染する仕組みと、マルウェアに感染するのを阻止するために講じることができる対策を理解することが、訪問者のコンピューターをマルウェアから隔離するのに役立ちます。

Jeff Orloff, Technology Coordinator/Consultant, Sequoia Media Services Inc.

Jeff Orloff はフリーのテクニカル・ライターであり、米国フロリダ州にある School District of Palm Beach County (パームビーチ郡学区) の技術コーディネーターでもあります。彼はセキュリティーを専門として、一貫して Web 技術を扱ってきました。彼はこれまで、SafeWave の技術担当ディレクター、Applicure Technologies のセキュリティー・エバンジェリスト、Developer Drive (Web サイト開発に関するチュートリアルを専門とするブログ) の編集者を務めた経験があります。



2013年 8月 08日

長年にわたり、「マルウェア」という言葉は、ウィルスや、トロイの木馬、ワーム、スパイウェア、スケアウェア、アドウェアなど、あらゆるタイプの悪意のあるソフトウェアを表すために使用されてきました。コンピューターの歴史がまだ浅い頃、マルウェアは、破壊的な行為によって人々を困らせるため、あるいはプログラミング・スキルを誇示するための悪ふざけであると見なされていました。基本的には、悪意のあるプログラムを作成し、そのプログラムに感染した人が多ければ多いほど、特定のサークルでの自分のステータスが上がるというわけです。当時の悪意のあるプログラムは、対象とする犠牲者に e-メールの添付ファイルとして送信され、リムーバブル・ストレージ・メディアやファイル共有サービスによって共有されるのが通常でした。

この類いのマルウェアは、その犠牲者には山積みの問題をもたらしましたが、マルウェア作成の動機が多くの人々を引きつけてマルウェアの作成に関わらせることはありませんでした。というのも、マルウェアを作成することによる見返りは、作成に関わった人々に広く利益をもたらすようなものではなかったからです。現在、その動機は、お金に変わっています。現在のマルウェアによる攻撃は、金銭的見返りが動機となっているため、巷にはかつてないほどマルウェアが氾濫しています。マルウェアの作成と配布に関与する人々が増えただけではありません。攻撃も今まで以上に高度になっています。サイバー犯罪者たちがこれまで学んだ、マルウェアを使って大きな利益を生み出す方法には以下のものがあります。

  • 広告を表示してクリックさせる
  • 機密データを盗む
  • ユーザー・セッションを乗っ取る
  • ユーザー・ログイン資格情報を漏洩する
  • 金融情報を盗む
  • 詐欺的な購入を行う
  • スパムを作成する
  • サービス妨害 (DoS) 攻撃を開始する

悪意のあるソフトウェアをできるだけ多くの犠牲者に送り付けるために、サイバー犯罪者たちはソフトウェアの主な配布元の 1 つとして Web サイトに目をつけるようになりました。

なぜ Web サイトがターゲットにされるのか?

人々は、e-メールに添付されたファイルをダウンロードしてはならないことを学んでいます。また、マルウェアに感染しているファイルが多いことから、人気の高いファイル共有サービスにも近づかないようにしています。その一方、人々は相変わらず Web サーフィンを続けています。Internet World Stats によると (「参考文献」のリンクを参照)、2011年にはアクティブなインターネット・ユーザーが 2,279,709,629 人に上り、その数は増加し続けているということです。

これほど膨大な攻撃対象があり、疑いを持たないユーザーが非常に多い Web サイトが、ユーザーをマルウェアに感染させるための格好の媒体として利用されるようになったのは当然のことです。事実、悪意のある Web サイトは氾濫しており、Google では毎日約 6,000 の Web サイトを、訪問者にとって危険な何らかの悪意のあるソフトウェアがあるサイトとして、ブラックリストに追加しています。

マルウェアが Web サイトを通して拡散する仕組み

Web サイトをマルウェアに感染させようとする人々は、以下の 3 つのいずれかの方法を取ります。

  • 悪意のある Web サイトを自分自身で作成する
  • Web サーバーやその構成の脆弱性を悪用する
  • Web サイトが利用するアプリケーションの脆弱性を悪用する

この記事で焦点とするのは、Web サイトがこれらの攻撃の犠牲にならないようにするための手段なので、上記のうち、最後の 2 つの方法を取り上げます。

攻撃者は、うまく悪用できそうな脆弱性を見つけた後は、その Web サイトの訪問者にマルウェアを配布する手段を決めなければなりません。表 1 に、マルウェアを配布する一般的な手段をいくつか記載します。

表 1. Web サイトからマルウェアを配布する一般的手段
手段説明

ダウンロード

ユーザーをだまして悪意のあるコードをダウンロードさせます。一般的な戦術としては、訪問者に動画を閲覧するにはマルチメディア・ソフトウェアを更新する必要があると通知したり、犠牲者をだまし、実際にはマルウェアが含まれる PDF やその他のタイプのファイルをダウンロードさせたりします。

バナー広告

感染した広告を Web サイトに表示し、ユーザーがそれをクリックすると、悪意のあるファイルがダウンロードされるようにします。

自動ダウンロード

この手段が使用される場合、訪問者は Web サイトにアクセスするだけで、他には何のアクションを実行しなくてもマルウェアがダウンロードされることになります。マルウェアは、インラインフレームや難読化されていない JavaScript コードなど、サイトには表示されない要素の中に隠されている可能性があります。さらには、画像、動画、Adobe Flash アニメーションといったマルチメディア・ファイルにマルウェアが埋め込まれている可能性もあります。そのようなページがロードされると、マルウェアはブラウザーやプラグインの脆弱性を利用して、訪問者のコンピューターを感染します。


サーバーの脆弱性を利用した Web サイトへの感染

サーバー・ベースの脆弱性に対処する対象として私が調べたのは、市場に出ている人気の高い Web サーバーのうち、Apache と Microsoft Internet Information Services (IIS) です。この 2 つのサーバーによって、全 Web サイトの78.65 パーセントが駆動されています。

Apache と IIS には (そして他のどの Web サーバーにも)、悪意のある攻撃者が利用できる脆弱性があります。攻撃者がサーバー・ソフトウェアやサーバー自体のセキュリティーを侵害することができれば、彼らは悪意のあるコードをアップロードすることも、さらにはサイトの訪問者にマルウェアを配布する Web ページそのものをアップロードすることもできます。このような攻撃を許してしまう脆弱性には、2 つの主要な原因があります。

デフォルト・インストールにある脆弱性

Web サーバー・ソフトウェアをインストールする場合、そのデフォルト構成は Web サイトを簡単に公開できるように設定されており、Web サイトをセキュアに公開するようには設定されていないのが通常です。Web サーバーのデフォルト・インストールには、不要なモジュールやサービスが含まれることもあります。これらの余分なモジュールやサービスは、攻撃者に Web サイトのファイルに無制限にアクセスする余地を与える可能性があります。

オペレーティング・システム、Web サーバー・ソフトウェア、そしてこれらの各バージョンには、いずれもそれぞれに特有の脆弱性があります。これらの脆弱性は、簡単な Web 検索で見つけることができます。Web サイトを本番稼働する前に、既知の脆弱性のすべてに対処してください。

破られた認証およびセッション管理

この原因には、ユーザー認証とアクティブ・セッションのすべての側面が含まれています。OWASP (Open Web Application Security Project) によると、「アカウントおよびセッション管理のさまざまな不備が、ユーザー・アカウントまたはシステム管理者アカウントのセキュリティー侵害を招く原因となります。サイトの全側面で資格情報が適切に保護されるように認証およびセッション管理スキームを設計する複雑さを、開発チームが甘く見ていることは珍しくありません」。

このタイプの脆弱性を軽減するには、Web サーバーおよび Web サイトの管理担当者が、すべてのパスワードの強度、保管、変更管理を決定するパスワード・ポリシーを順守しなければなりません。さらに、ユーザー資格情報が送信中に漏えいすることがないように、Web サーバーのリモート管理機能をセキュアにするか、場合によっては無効にする必要もあります。


Web サイトの脆弱性を利用したマルウェアのアップロード

Web サイトが未だに静的テキストと画像で構成されていたとしたら、悪事を働く人たちが正当な Web サイトを使って悪意のあるソフトウェアを配布するのは、今よりも格段に難しいことだったでしょう。けれども現在の Web サイトは、それよりもはるかにリッチなユーザー・エクスペリエンスを実現するためにデータベース、複雑なコード、そしてサード・パーティーのアプリケーションによって駆動されています。それは同時に、Web サイトをさまざまな脆弱性にさらすことにもなります。

WordPress を例に取ると、このブログ・アプリケーションは、ちょっとした専門知識を持っていれば、誰もが充実したマルチメディア機能を備えたインタラクティブな Web サイトを簡単に作成できるようにすることで、Web サイトの作成方法を変革しました。WordPress は絶大な人気を誇り、5000 万を超える Web サイトで使用されているほどです。その一方、WordPress を実行する 30,000 から 100,000 のサイトで、比較的最近、訪問者が悪意のあるサイトにリダイレクトされて犠牲者になるという事態が勃発したのは、このアプリケーションの使いやすさが原因でした。

つまり、ある特定のプラグインをインストールした WordPress のサイトで、そのサイトのページが訪問者を別のサイトにリダイレクトするコードに感染していることが発覚したのです。こうしたサイトは、犠牲者のコンピューターをそのコンピューターが実行しているオペレーティング・システムやアプリケーションをベースとしたマルウェアで感染することになります。このセキュリティー上の弱点を突いた手段によって広がった悪意のあるプログラムの 1 つが、500,000 台を超える Mac を感染させた Flashback というトロイの木馬です。

このような例は、WordPress だけに限られません。Joomla!、Drupal、MediaWiki、Magento、Zen Cart、そしてその他多くのアプリケーションには、悪意のあるハッカーがマルウェアをサイトにアップロードして、そのサイトの訪問者にそれを配布することを可能にするだけの脆弱性がありました。


Web アプリケーションに対する攻撃の防止

攻撃者が Web アプリケーションを悪用する場合、そのアプリケーションに何らかのタイプの脆弱性を見つけなければなりません。Web サイトの所有者にとっては残念なことに、既知の脆弱性にはさまざまなタイプがあり、ここにすべてを記載することは不可能です。しかし、そのなかの一部については皆さんもよく知っているかもしれません。

  • クロスサイト・スクリプティング (XSS)
  • SQL (Structured Query Language) インジェクション
  • クロスサイト・リクエスト・フォージェリー
  • URL リダイレクト
  • コード実行
  • Cookie 改ざん

この他にも多種多様なタイプがあります。

Web アプリケーションの脅威を軽減させる

幸い、サイトが既知の悪用手段のいずれかに対して脆弱であるかどうかを突き止めるには、Web アプリケーション侵入手法を利用したいくつかの方法があります。Web サイトに既知の脆弱性があるかどうかを徹底的にテストすることで、脆弱性を操作した攻撃によって Web サイトの訪問者にマルウェアが配布されるようになる前に、そうした脆弱性をついた攻撃の脅威に対処することができます。それには、各種のオープンソース・ツールや商用ツールを使用することも、この分野を専門とする会社にサービスをアウトソースすることもできます。

侵入テストは Web サイトのコードで修正しなければならない問題を特定する場合には役立ちますが、脅威がサイトに到達するのを阻止する手段となるのは、Web アプリケーション・ファイアウォール (WAF) です。既知の攻撃パターンを特定すれば、悪意のあるハッカーがサイトにダメージを与える前に、その試みを阻止することが可能になります。より高度な Web アプリケーション・ファイアウォールは、不法なトラフィックを識別することにより、まだ出現したばかりの未知の脅威でさえも防ぐことができます。


Apache における脆弱性の制限

どのようなときでもサーバーを構成する際のベスト・プラクティスは、必要なモジュールとアプリケーションのみをインストールすることです。今では、これはベスト・プラクティスというだけでなく、常識となっています。

Apache の Web サーバーに存在する脆弱性を制限するには、他にも講じておくべき基本的な措置があります。この記事では一貫して、Linux の Ubuntu ディストリビューションに関連するコマンドを使用します。それ以外のオペレーティング・システムやディストリビューション上で Apache が実行されている場合には、それぞれのタスクを実行するために必要な手順を検索してください。

バナーを使用不可にする

Web に対してリクエストがあると、Apache はデフォルトでその名前とバージョン番号を示すため、潜在する攻撃者にその Web サイトを実行している Web サーバーの正確な情報を知らせることになります。このバナーを使用不可にすれば、脆弱性にピンポイントで狙いを定めるのが難しくなります。バナーを使用不可にするには、/etc/apache2/apache2.conf にナビゲートして、ServerSignature および ServerTokens エントリーを無効にしてください。

ディレクトリー索引付けを使用不可にする

Apache のデフォルト設定では、Web サイトのディレクトリーで見つかったファイルのリストを出力することもできます。攻撃者は、これを利用することで、使用されているサーバーを割り出して、潜在的に脆弱なファイルを特定することができます。この問題を軽減するには、autoindex モジュールを使用不可にする必要があります。単純にターミナル・ソフトを開いて、以下のコマンドを実行してください。

  • rm -f /etc/apache2/mods-enabled/autoindex.load
  • rm -f /etc/apache2/mods-enabled/autoindex.conf

WebDAV を使用不可にする

WebDAV (Web-based Distributed Authoring and Versioning) とは、Web サイト上のファイル・コンテンツをアップロード、ダウンロード、および変更するために使用される HTTP のファイル・アクセス・プロトコルです。本番 Web サイトでは必ず、攻撃者がファイルを変更して悪意のあるコードをアップロードすることができないように、WebDAV を使用不可にしなければなりません。

ターミナル・ソフトを使用して、以下のコマンドを実行して dav、dav_fs、dav_lock ファイルを削除することで、これらのファイルを使用不可にします。

  • rm -f /etc/apache2/mods-enabled/dav.load
  • rm -f /etc/apache2/mods-enabled/dav_fs.conf
  • rm -f /etc/apache2/mods-enabled/dav_fs.load
  • rm -f /etc/apache2/mods-enabled/dav_lock.load

TRACE HTTP リクエストを無効にする

HTTP TRACE リクエストを操作してセッション cookie を出力させることは可能です。その場合、この情報を使用してユーザー・セッションが乗っ取られ、XSS 攻撃が開始される恐れがあります。このトレースを無効にするには、/etc/apache2/apache2.conf ファイルにナビゲートして、TraceEnableTraceEnable off に設定します。


IIS における脆弱性の制限

Windows Server 製品がコンシューマー市場にとって魅力的である理由の 1 つは、簡単にインストールできることです。IIS を使用すると、企業は数回クリックするだけで Web サーバーを稼働状態にすることができます。このようにサーバー・ソフトウェアがそのまま簡単にインストールされる場合、構成は自動的に行われ、構成を行う必要はほとんどありません。

Microsoft は、Web サーバー製品のセキュリティー問題に対処するために、IIS の構成方法とデフォルトでインストールされる内容に大幅な変更を加えました。しかしそれとは別に、脅威に対する保護をさらに強化するためにいくつかの措置を講じることができます。

アンチマルウェア・ソフトウェアをインストールする

コード・レッド (Code Red) とニムダ (Nimda) は Windows Server オペレーティング・システムを攻撃対象とするワームであり、どちらもかなりの損害を与えました。ホスト・オペレーティング・システム自体に適切なアンチマルウェア対策が講じられていない Web サイトは、瞬く間に攻撃に対して脆弱になってしまいます。キーストローク・ロガーやトロイの木馬など、さまざまなマルウェアを使用して、攻撃者は Web 管理者のログイン資格情報を漏えいさせるだけでなく、サイトの訪問者に提供されるファイルに悪意のあるコードを組み込むことさえできます。

アンチマルウェア・ソフトウェアがインストールされたら、直ちに更新を行って実行し、その後で Web サイトのファイルがアップロードされるようにしてください。アンチマルウェア・ソフトウェアによって何かが検出された場合は、すべてのパスワードを即時に変更する必要があります。

その他すべてのものを更新する

IIS を実行する Web サーバーを稼働する前に、必ず Microsoft からの最新アップデートでオペレーティング・システム・ソフトウェアと Web サーバー・ソフトウェアを更新してください。これらのアップデートには通常、Microsoft 製品に固有の脆弱性に対処するパッチが含まれています。


攻撃後のクリーンアップ

Web サイトが訪問者に害を及ぼしている場合には、即刻、措置を講じる必要があります。まずは、サイトを停止して隔離します。ビジネスの中断を避けるためにサイトを稼働状態にしておかなければならないとしたら、マルウェアに感染していないことが検証されているバックアップを利用してください。

Web プレゼンスの対策を講じたら、感染したファイルをクリーンなファイルにします。数行のコードを削除するだけで済む場合もあれば、ファイル全体を作成し直さなければならないような、より高度な攻撃の場合もあります。サイトからマルウェアを除去するために必要な措置が何であれ、この時点ですべての措置を講じる必要があります。


評判の回復

Google やその他の検索エンジンでは、サイトがマルウェアを配布していることを発見した時点で、そのサイトを検索結果から除外します。これによって、ビジネスに計り知れない影響が及ぼされることもあります。

すべてのマルウェアが除去され、あらゆる脆弱性にパッチが適用された後は、サイトを検索エンジンにサブミットして、レビューしてもらいます。検索エンジンで、そのサイトが訪問者にとって脅威でなくなったと判断すると、Web サイトは再び検索結果に含まれるようになり、検索エンジンからのトラフィックが復元されます。

マルウェアの感染によってユーザー・アカウント情報が漏えいした場合は、即刻すべてのユーザーに通知し、ユーザーがあらゆる悪影響に対処できるようにしてください。さらに、組織はセキュリティー侵害によって法律や規制に対する違反が発生したかどうかを調べ、あらゆる否定的影響を軽減してコンプライアンス遵守を維持するための適切な対策を取る必要があります。


まとめ

Dasient 社の報告では、2010年第 4 四半期に、約 110 万の Web サイトに何らかのタイプのマルウェアが検出されたということです。その他の調査では、全マルウェアの 85 パーセントが Web から感染されたものであることを示しています。ここで、あらゆる問題を引き起こしているサイトが始めから悪意の下に行っているとしたら、簡単に記事を書き上げられたと思いますが、多くのコンピューターを感染させているのはあいにく、中小企業の Web サイトや、教会の Web サイト、さらには非常に尊敬を集めているニュース・サイトなどです。

Web サイトを攻撃から守る責任は、Web 開発者の肩にかかっています。椅子にふんぞり返って見事なコードを作成する時代は終わりました。今や開発者は、作成するコードが機能するとともにセキュアであることを確実にしなければなりません。

この記事に記載した手法は、Web サイトのセキュリティーについて理解していない開発者が知識の基盤を築くのに役立ちますが、それだけで終わらせないでください。脅威の様相は、日々変わっています。セキュリティー上の弱点を突いた手段が登場し、サイバー犯罪者が対抗手段に適応するなか、Web 開発者もサイバー犯罪者の新しい手段に適応し、サイトのセキュリティーを強化する方法を常に探し求める必要があります。

参考文献

学ぶために

製品や技術を入手するために

  • IBM 製品の評価版: DB2、Lotus、Rational、Tivoli、および WebSphere のアプリケーション開発ツールとミドルウェア製品を体験するには、評価版をダウンロードするか、IBM SOA Sandbox のオンライン試用版を試してみてください。

議論するために

  • developerWorks コミュニティー: ここでは他の developerWorks ユーザーとのつながりを持てる他、開発者によるブログ、フォーラム、グループ、Wiki を調べることができます。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Web development
ArticleID=939326
ArticleTitle=ロードされるページ: 作成した Web サイトの訪問者がマルウェアに感染する仕組み
publish-date=08082013