Missed the action at the 2018 Chrome Dev Summit? Catch up with our playlist on the Google Chrome Developers channel on YouTube. Watch now.

サイトの脆弱性を特定する

複数のハッキングが個々に発生していることがあるため、1 つの脆弱性を見つけて修正できた場合でも、他の脆弱性を探し続けることをおすすめします。調査を始めるにあたっては、スパマーがウェブサイトのハッキングでよく利用する手段のガイドをご覧ください。

必要なもの:

  • サイトのサーバー(ウェブ、データベース、ファイル)へのシェル/ターミナルの管理者アクセス権限
  • シェル/ターミナル コマンドの知識
  • コードの理解(PHP や JavaScript など)
  • 2 つのウィルス対策スキャナを実行する能力

次の対策:

サイトが侵害される一般的な手法を複数ご紹介します。以下の脆弱性の中におそらく、ご自分のサイトで該当するものや、他の可能性に気づくきっかけになるものがあります。

脆弱性スキャナウイルス対策スキャナとは異なります。脆弱性スキャナのほうがサイトに広く侵入し、サイトに思わぬ損害を与える可能性が大きくなります。スキャナを実行する前にサイトのバックアップを行うなど、すべて指示どおりに操作してください。

調査する潜在的な脆弱性は以下のとおりです。

1. ウイルスに感染した管理者のパソコン

管理者のパソコンがウイルスに感染していると、ハッカーがサイト管理者のキー入力を記録するスパイウェアをインストールしているおそれがあります。

  • 管理者のシステムでウイルスの有無を確認します。管理者がサイトへのログインに使用しているすべてのパソコンで、信頼性の高い複数のウイルス対策スキャナを実行することをおすすめします。しかし、スキャナから逃れるために新しいマルウェアが絶えず設計されているため、この対策は確実なウイルス検出方法とは言えません。ウイルス対策スキャナは誤検出を報告することがあるため、複数のスキャナを実行するほうが、脆弱性の存在を判断するためのデータを確実に得られます。また、念のため、ウェブサーバーと、サイトの更新や投稿に使用しているすべてのデバイスの両方をスキャンすることも検討します。
    • ウイルス対策スキャナでスパイウェア、ウイルス、トロイの木馬、その他の疑わしいプログラムが検出された場合は、サイトのサーバーログを調べて、感染したパソコンを所有する管理者のアクティビティを確認します。
    • ログファイルがハッカーによって改変されている場合があります。改変されていない場合、ログファイルで管理者のユーザー名と疑わしいコマンドを照合すると、管理者のシステムでウイルスによってサイトの脆弱性が発生したことを示す証拠が得られます。

2. 弱いパスワード、パスワードの再利用

弱いパスワードを破るのはハッカーにとって比較的簡単であり、サーバーへの直接アクセスを許すことになります。強力なパスワードにするには、文字と数字、記号を組み合わせます。辞書にあるような単語やスラングは使わないようにします。1 つのパスワードは 1 つのアプリケーションだけに使用し、ウェブ全般で再利用することは避けます。パスワードを再利用すると、1 つのアプリケーションの 1 つのセキュリティ上の欠陥だけで、ハッカーがログインとパスワードの情報を見つけ出し、他の場所で再利用するのを許すことになります。

  • サーバーログで、各管理者による複数のログイン試行や予期しないコマンドの使用など、不要なアクティビティがないかどうかを確認します。疑わしいアクティビティがあればその発生日時を書き留めます。ハッキングが最初に行われた時期を把握すると、どのバックアップが正常かを判断しやすくなります。

3. 古い状態のソフトウェア

サーバーにオペレーティング システム、コンテンツ管理システム、ブログ作成プラットフォーム、アプリケーション、プラグインなどの最新版がインストールされているかどうかを確認します。

  • インストールしているすべてのソフトウェアについて(ウェブ検索などで)調べて、ご使用のバージョンに関するセキュリティ情報がないかどうか確認します。情報があれば、古い状態のソフトウェアが原因でサイトに脆弱性が発生した可能性が高まります。
  • 現時点で、古い状態のソフトウェアによる脆弱性の問題がなくても、サーバーのソフトウェアは常に最新の状態に保つことをおすすめします。

4. 寛容なコーディング手法(オープン リダイレクトや SQL インジェクションなど)

  • オープン リダイレクト
  • オープン リダイレクトとは、ユーザーがサイト上の便利なファイルやウェブページにアクセスできるように、URL 構文に別の URL を追加できるようにするコーディング方法です。次に例を示します。

    http://example.com/page.php?url=http://example.com/good-file.pdf
    ハッカーがサイトのオープン リダイレクトにスパムやマルウェアのページを追加して、オープン リダイレクトを悪用する場合があります。次に例を示します。
    http://example.com/page.php?url=<malware-attack-site>

    • サイトがオープン リダイレクトによって悪用された場合、Search Console のメッセージに、望まないリンク先へのオープン リダイレクトを含んだ URL の例が表示されることがあります。
    • 今後、オープン リダイレクトを防ぐために、ソフトウェアのデフォルトで「オープン リダイレクトを許可する」が有効になっているかどうか、コードで外部ドメインへのリダイレクトを禁止できるかどうか、適切にハッシュ化された URL と暗号化署名を含む場合にのみリダイレクトできるようにリダイレクトに署名できるかどうかを検討します。
  • SQL インジェクション
  • SQL インジェクションは、データベースによって実行されるように、ハッカーが悪質なコマンドをユーザー入力フィールドに指定できる場合に発生します。SQL インジェクションによって、データベースのレコードに不要なスパムやマルウェアのコンテンツを含めるように更新されたり、ハッカー向けに重要なデータが出力にダンプされたりします。サイトでデータベースを使用している場合、特にサイトが SQL インジェクション タイプのマルウェアに感染していた場合は、SQL インジェクションによって侵害されたおそれがあります。

    • データベース サーバーにログインして、データベースに疑わしいコンテンツがないかどうか確認します。たとえば、通常のテキスト フィールドのはずなのに iframe やスクリプトが表示される場合などです。
    • 疑わしい値がある場合は、ユーザー入力を検証しているかどうか、コードとして実行できないように適切にエスケープまたは強く型付けされているかどうかを確認します。データベースの処理の前にユーザー入力がチェックされない場合、SQL インジェクションがサイトの脆弱性の根本原因となるおそれがあります。

次のステップ

プロセスの次のステップは、サイトの問題を修正して管理するです。