Webサイト改ざんで訪問者がマルウェア感染!その手口と対策方法は?

2018.01.16

Webセキュリティ

image

Webサイトを運営している人々にとって脅威となるものにWeb改ざん(Webサイト改ざん)があります。
Web改ざんとは、Webサイトを管理者の意図しないコンテンツを置いたり、レイアウトに改ざんしてしまうことです。
中にはウイルスを仕込んでいるものもあったりと、サイトに足を運ぶ人々に危害を加える可能性もあります。
今回はWeb改ざんとは何か?その対策方法はどうすれば良いかを解説します。

目次

Web改ざんの手口とは一体何か?

Web改ざんは正規のWebサイトに攻撃者の主張する内容で書き換えたり、単なるイタズラであったりする場合もありますが、目的の大半はWebサイト閲覧者のパソコンにマルウェアを感染させるためであることが多いです。
Webサイト改ざんの手口は、大きく4つのパターンに分類されます。

A Webサイト管理用パソコンにマルウェアを感染させる
B Webサイトで使用しているサーバソフトウェアの脆弱性を突く
C Webサイトに配置され動作しているWebアプリケーションの脆弱性を突く
D 内部犯行によるもの


Aは管理者のID/パスワードが攻撃者に盗まれることによって改ざんが発生します。感染経路としては標的型メールの添付ファイルという攻撃が多いです。
標的型メール攻撃とは、組織内のメールに偽装し、マルウェアが添付されたメールを送り、添付ファイルを開かせようとする攻撃です。
次に考えられる感染経路としては、管理者が他の改ざんされたWebサイトを閲覧してマルウェアに感染してしまうものです。

Bはサーバ上で動作しているCMS(コンテンツマネジメントシステム)やWebアプリケーションフレームワークといったソフトウェアの脆弱性を狙ったものです。
特にCMSの場合は、利用者の多いWordPressが標的となりやすいので、対策を行う必要があります。
またWebアプリケーションフレームワークの脆弱性では、Apache Struts2の脆弱性を狙った攻撃がよく知られています。

Cは個別に開発され、サイトに公開するWebアプリケーションにSQLインジェクションの脆弱性を含んでいる例が多いです。
SQLインジェクションは、Webアプリケーションの脆弱性の一つです。Webアプリケーションはユーザからの各種情報入力を受けてサーバ側で処理し、結果をユーザに返すという処理があります。サーバの処理には、サーバやデータベースにアクセスし、情報参照・更新するという処理があります。
このような処理の過程では、Webアプリケーションは、ユーザから想定外の情報が入力されてもそのまま処理せず、正しくエラー処理を実施する必要があります。
しかし、こうした処理に不備があると、攻撃者から、SQLと呼ばれるデータベース処理をするためのコマンドを含む情報が入力された後、その内容でサーバが処理することで、サーバ上で攻撃者の思いのままにSQLが実行されてしまいます。
これにより、攻撃者は、不正なSQL実行によりデータベース内の重要情報漏えい、コンテンツの改ざんといった攻撃を行うことができます。
コンテンツの改ざんでは、多くの場合、Web 閲覧者にマルウェアの侵入を試みるプログラム (スクリプト) が書き込まれます。

Dは内部のアクセス権限を持たない者が、アクセス制御の不備をついたり、ソーシャルエンジニアリングによって管理者アカウントを不正に取得したりして、改ざんするケースです。セキュリティ対策製品を導入していても、内部犯行を想定しない設定をしている場合、犯行が表面化しにくいケースといえます。

Web改ざんを行うための4つの手口についてご紹介しました。
では、これらを防ぐためには具体的にどのような対策をすれば良いのでしょうか?

<補足記事>
<標的型攻撃について>
標的型攻撃の手法とその対策について
<WordPressの脆弱性攻撃について>
WordPressの脆弱性攻撃被害事例と今からできる対策とは?
<Apache Struts2の脆弱性について>
【注意喚起】Apache Struts2の脆弱性発覚!即時の対応を!
<SQLインジェクション攻撃について>
「サイバー攻撃解説」サーバに攻撃を仕掛けるSQLインジェクションについて
<ソーシャルエンジニアリングについて>
「サイバー攻撃解説」ソーシャルエンジニアリングについて

Web改ざんの対策はどうすれば良い?

Web改ざんの対策としては、組織の形態、予算、システム構成によってさまざまな選択肢があるので、今回は想定できる対策についてご紹介します。

①改ざん検知
事後の対策とはなりますが、事前の対策だけでは100%は保証できないので、改ざん検知の対策が必要となります。
事前にWebサイトのコンテンツを管理しておき、実際に公開されているWebサイトのコンテンツと定期的に比較することによって改ざんを検知します。

②サーバソフトウェアの最新バージョンを適用する
実際の例として、Apache Struts2の脆弱性に関しては、脆弱性情報入手からセキュリティパッチ適用またはサイトの一時停止という対応が早かったサイトが被害に遭わずに済んでいます。
さらに、情報入手だけでなく、重大インシデントが発生した際にセキュリティパッチ適用やサイトの一時停止といった対応手順を明確化し、普段から訓練しておくことが必要です。

③安全なWebアプリケーションの開発
Webアプリケーションの対策としては、ユーザから想定外の情報が入力されてもそのまま処理せず、正しくエラー処理を実施することが最重要となります。つまり、安全なWebアプリケーションを開発するということです。
開発者が個々にデータベースにアクセスするロジックを組んでしまうことにより脆弱性を含むものができないよう、開発環境を整えることが必要です。

④WAFの導入
WAF(Web Application Firewall)を導入すると、手間をかけずにSQLインジェクションによる攻撃を防止できます。この製品のタイプとして、アプライアンス型(ハードウェア)、ソフトウェア型、クラウド型の3種類があります。この中でも最近は、クラウド型WAFが注目されています。
これは、専門知識・専門家が不要、インフラの調達が不要、初期費用・運用コストが低い、柔軟なプラン契約というメリットがあるためです。
一方、WAFとしての性能はサービス提供者の品質に左右されるというデメリットがあるため、利用者は慎重にサービス提供者を選定しなければならない点には注意が必要です。

⑤定期的な脆弱性診断の実施
既知の攻撃事例を元に、攻撃者の視点で擬似的に脆弱性を利用した攻撃を実施し、それが再現するかを確認します。
ツールを利用した診断に加え、セキュリティ専門技術者による手動診断も実施します。
この診断の結果、潜在的な脆弱性を発見したり、安全であることを確認したりします。

ただし、コスト上、手動診断において、特に専門技術者によるオンサイトでの対応が必要なケースでは、予算によっては回数に制約がある可能性があります。

なお、コンプライアンス関連、例えばクレジットカードを取り扱う場合には、PCI DSSとよばれる業界標準に従うために脆弱性診断が必須となり、それに準拠した脆弱性診断ツールを定期的に実行することが必要になります。

⑥管理用パソコンの適切な管理
ウイルス感染されないためには、管理用パソコンに対して最新のセキュリティパッチが適用されていること、ウイルス対策ソフトがインストールされていること、ウイルス対策ソフトのパターンが最新であることを確実に実施します。

⑦管理用アカウントの適切な管理
管理者アカウントでの操作を常に監視することも必要です。
ソーシャルエンジニアリングに対しては、それ自体をかわすことは非常に難しいので、アカウント管理を適切にすることで、不用意にアカウントを流出することを防ぎます。
アカウントの付与や変更・削除に対して承認ワークフローを整備する、管理用アカウントの付与は必要最小限に留めるといったことになります。

⑧情報セキュリティ教育
ユーザの情報セキュリティ意識を高めることは、ユーザが気をつけることによりセキュリティ事故が防止できるだけでなく、ユーザが情報セキュリティ対策の重要性を理解するために必要です。
経営層、管理層に対しては特にセキュリティ対策の決定権を持っていることから、様々なセキュリティ対策に関してキモとなることといえます。

Webサイト運営者は、Webサイト改ざんを防ぐために可能な限り対策を行い、
自分たちの運営するWebサイトを守るためだけでなく、そのサイトを閲覧するサイト訪問者を危機に晒さないようにしましょう。