他人事じゃない!WEBサイトに対する10の攻撃パターンと対策方法まとめ

      2016/12/07

Code部

Web 制作初心者にとって、web デザインやサイト構成など考えることがたくさんある中で、さらに追い打ちをかけるように「セキュリティ」に関しても一応の知識が求められます。「Web サイトといってもブログだから大丈夫」「簡単な商品紹介のサイトだから大丈夫」と安易に思っていると、知らない間に自分の作ったサイトが誰かに作り変えられて、知らない間に加害者になっているという事例もあります。
せっかく一所懸命作るサイトを悪意ある人に邪魔されないためにも、基本的なセキュリティー対策を講じておく方が賢明と考えられますよ。

Web サイトとセキュリティ

引用:Symantec’s 2015 Internet Security Threat Report

 

2015年に入って世界のネット利用者数は30億人を超えて、今もなお右肩上がりに増加しています。それに伴って悪意ある攻撃者による被害も増加の一途をたどっており、ウェブの利用者をはじめweb 制作者、管理者にとっても悪意ある攻撃者から web サイトを守ることは重要なミッションとなっています。Web 被害の特徴としては、攻撃された際に被害者に留まらず、加害者にもなりうるという危険が潜んでいます。
悪意ある攻撃者は、web サイトに限らず、サーバーやブラウザなどありとあらゆる糸口から web サイトへの不正な侵入経路を探っていますが、今回は web サイトに限った点で話を進めていきます。

2015 年第一四半期の web サイト被害(JPCERT 調べ)

直近3カ月の傾向
一般社団法人 JPCERT コーディネーションセンター

安全でないウェブサイトの件数推移(Google)

安全ではないwebsite-google
google.com

web サイトの脆弱性を突かれた被害事例

2015.3.3 成田国際空港の公式サイト

悪意ある攻撃者によってサイトを改ざんされ、ユーザーは悪意あるサイトへと自動転送されるようになっていました。

勝手に書き込まれた問題のコード(アクセスしないで下さい

<iframe src=”hxxp://acds.pw/” frameBorder=0 width=0 scrolling=no height=0></iframe>

https://malwr.com/analysis/YjczZmI5NzUwMmRiNDFlZmIzNDE4OWY2YTRmN2RhMTI/

原因は、成田国際空港が使用していたCMS への不正アクセスといわれています。

photo : piyolog

web サイトがスパムメールの発信基地に

WordPress のアップデートを約2年実行せずに放置していたら、何者かに乗っ取られスパムメールの踏み台にされていた事例がありました。さらに被害拡大を防ぐためにサーバー管理会社がアカウントを強制凍結していたというオチです。web 管理の重要性が伺えます。(参照:はぴらき合理化幻想

代表的なweb サイト被害 – web サイトの改ざん


photo : トレンドマイクロ

国内で起きている多くの web サイト被害は、「サイトの改ざん」となっています。サイトが改ざんされる原因としては以下の 4 点が挙げられます。

  1. 管理パソコンがウイルスに感染し、パスワードなどが漏えい。悪意ある攻撃者によってサイトが改ざん。
  2. web サイトで使っているソフトの脆弱性を突かれて、データ改ざん。
  3. web サイトに含まれているファイルの脆弱性を突かれて、データ改ざん。
  4. 内部犯行

Web 制作におけるセキュリティ観点から考えると、サイトが改ざんされる原因の 2 と 3 について知っておく必要があります。特に WordPress などの CMS に頼らず、ご自身でシステム開発を行う場合は、注意が必要です。

 

代表的な攻撃パターン

Education-Example

photo : HACKMAGEDDON

web セキュリティー会社 OpenDNS のスタッフ Paolo Passeri さんが提供する情報によると、現在の攻撃の大半は SQL インジェクション(SQLi)で、次いでサイトの書き換え(Defacement)となっています。2013年ごろは DDoS と SQLi、サイトの書き換えが攻撃の大半を占めていましたが、時代の流れと共に攻撃の種類も変化してきています。 こちらでは「独立行政法人 情報処理推進機構セキュリティセンター」が提供している情報を元に、攻撃パターンについて学習していきたいと思います。

SQL インジェクション

sqlインジェクション
photo : 独立行政法人 情報処理推進機構セキュリティーセンター

対象/データーベースを利用しているサイト
起こりうる被害/ウェブページの改ざんや個人情報の漏えい、乗っ取り

対策

  1. SQL 文の組み立ては、全てプレースホルダで実装する。
  2. SQL 文の組み立てを文字列連結により行う場合は、エスケープ処理等を行うデータベースエンジンの API を使って、SQL 文のリテラルを正しく構成する。
  3. ウェブに送るパラメータに SQL 文を直接指定しない。
    など

クロスサイト・スクリプティング(XSS)

対象/Cookie を 利用してログインのセッション管理を行うサイト
起こりうる被害/本物サイト上に偽のページが表示されたり、ブラウザが保存しているCookie を不正に取得されます。また任意の Cookie をブラウザに保存させられる可能性もあります。

 

対策

  1. /HTML テキスト入力を許可していない場合/
    ウェブページに出力する全ての要素に対して、エスケープ処理を施す。URL を出力するときは、「http://」や 「https://」で始まる URL のみを許可する。<script>・・・</script>// 要素の内容を動的に生成しない。スタイルシートを任意のサイトから取り込めるようにしない。
  2. /HTML テキスト入力を許可する場合/
    入力された HTML テキストから構文解析文を作成し、スクリプトを含まない必要な 要素のみを抽出する。入力された HTML テキストから、スクリプトに該当する文字列を排除する。
  3. /共通の対策/ HTTP レスポンスヘッダの Content-Type フィールドに文字コード(charset)を 指定する。

 

OS コマンド・インジェクション

対象/Perl や PHP などの外部プログラムを呼び出し動作させるウェブページ(ウェブアプリケーション)
起こりうる被害/サーバー内ファイルの閲覧、改ざん、削除やOSのシャットダウン、ユーザーのウイルス感染、他のシステムへの攻撃の踏み台

対策

  1. シェルを起動できる言語機能の利用を避ける。(Perl の場合、open 関数ではなく sysopen 関数を利用するなど)

セッション管理の不備

対象/ログインが伴うウェブサイト
起こりうる被害/ユーザーの乗っ取り

対策

  1. セッション ID を複雑なものにする。
  2. セッション ID を URL パラメータに格納しない。
  3. HTTPS 通信で利用する Cookie には secure 属性を加える。
  4. ログイン成功後は、新しいセッションで開始する。
  5. ログイン成功後は、既存のセッション ID とは別に秘密情報を発行し、ページの遷移毎にその値を確認する。
    など

CSRF(クロスサイト・リクエスト・フォージェリ)

対象/Cookie を用いたセッション管理、Basic 認証、SSL クライアント認証を使っているウェブサイト(ログインが伴うサイト)
起こりうる被害/ログイン後に利用者のみが利用可能なサービスの悪用やログイン後の利用者のみが編集可能な情報の改ざん

対策

  1. 処理を実行するページを POST メソッドでアクセスするようにして、「hidden パ ラメータ」に秘密情報が挿入されるように前のページを自動生成し、実行ページではその値が正しい場合のみ処理を実行する。
  2. 処理を実行する直前のページで再度パスワードの入力を求め、実行ページでは、再度入力されたパスワードが正しい場合のみ処理を実行する。
  3. Referer が正しいリンク元かを確認し、正しい場合のみ処理を実行する。

メールヘッダ・インジェクション

対象/管理者宛にメール送信する機能があるウェブサイト
起こりうる被害/迷惑メールの送信に悪用される

対策

  1. メールヘッダを固定値にして、外部からの入力はすべてメール本文に出力する。
  2. メールヘッダを固定値にできない場合、ウェブアプリケーションの実行環境や言語に用意されているメール送信用 API を使用する。
  3. HTML で宛先を指定しない。

クリックジャッキング

対象/マウス操作のみで利用できるウェブサイト
起こりうる被害/ユーザーアカウントの乗っ取り

対策

  1. HTTP レスポンスヘッダに、X-Frame-Options ヘッダフィールドを出力し、他ドメ インのサイトからの frame 要素や iframe 要素による読み込みを制限する。
  2. 処理を実行する直前のページで再度パスワードの入力を求め、実行ページでは再度入力されたパスワードが正しい場合のみ処理を実行する。

バッファオーバーフロー

対象/C、C++ などの直接メモリを操作できる言語で記述されている場合
起こりうる被害/ウイルス、ワーム、ボット等への感染、バックドアの設置、他のシステムへの攻撃、重要情報 の漏えい 等

対策

  1. 直接メモリにアクセスできない PHP や Perl、 Java などで記述する。
  2. 直接メモリにアクセスできる C言語やC++ での記述を最小限にする。
  3. 脆弱性が修正されたバージョンのライブラリを使用する。

ネットワーク盗聴

対象/ログイン等が伴うウェブサイト
起こりうる被害/ログイン情報、パスワードの漏えい

対策

  1. 重要な情報を取り扱うウェブページでは、通信経路を暗号化する。https の手続き。

フィッシング詐欺サイト

対象/ログインが伴うウェブサイト
起こりうる被害/ログイン情報、パスワードの漏えい、ユーザーへの経済的被害

対策

  1. EV SSL 証明書を取得し、サイトの運営者が誰であるかを証明する
  2. フレームを利用する場合、子フレームの URL を外部パラメータから生成しないように 実装する
  3. 利用者がログイン後に移動するページをリダイレクト機能で動的に実装しているウェ ブサイトについて、リダイレクト先の URL として使用されるパラメータの値には、自サ イトのドメインのみを許可するようにする

 

web 制作者のセキュリティ対策まとめ

  • OS やソフトウェアの脆弱性情報を継続的に入手し、脆弱性への対処を行う。
  • WordPress の場合は、最新バージョンへ更新する。
  • ウェブサイト運営に必要のないソフトをウェブサーバに放置しておかない。
  • 公開しないファイルは、ウェブ公開用のディレクトリ以下に置かない。
  • なるべくファイアウォール(WAF)などセキュリティ強化をしているレンタルサーバーを検討する。(さくらインターネットやロリポップなど)
  • Web サイトのデータ・バックアップをこまめにとっておく。
  • Google ウェブマスターなどのウェブスキャン・ツールを活用する。
  • 有料の web サイト・セキュリティソフトの利用検討(CSCARBORCLOUDFLAREなど)

もしかすると、不安に思った時の確認方法

ブラウザ上で確認

Google もしくは Firefox に URL を書き込み、検索してみます。もし改ざんされていれば、「このサイトはコンピュータに損害を与える可能性があります。」と検索結果に表示されます。

photo : インターネットみんなの安心安全ガイド 

サイトスキャンをしてチェック

以下のサイトにアクセスして、自分の web ページもしくは気になるサイトの URL を入力するとセキュリティ・スキャン(無料)してくれます。

・トレンドマイクロ Site Safety Center
Virustotal

検査ツールでチェック

英語表記のツールにはなりますが、無料でサイト・セキュリティに問題が無いかチェックしてくれます。

Achilles 
Paros

まとめ

Web のセキュリティに関しては現在進行形で攻撃方法が進化しており、それに伴った防御が必要となります。

 

1 からweb 制作やシステム開発を進めることは非常にやりがいがありますが、注意しないといけないこととしては制作後にサイトを放置しないことです。

 

適度に web セキュリティ情報を仕入れ、必要に応じて更新する必要があります。Web セキュリティに関してはこれで絶対大丈夫というゴールはなく、常にリスクを背負う必要があります。

 

最後に2015年4月に公開されたばかりなのに WordPress 4.2 で見つかった XSS 攻撃に対する脆弱性の様子をご覧ください。見事にweb サイトのコア情報がすっぱ抜かれています。(最新の WordPress は対策済みです。)

引用:WordPress 4.2 stored XSS

 - IT, ビジネス ,