脆弱性の特定

複数の独立したハッキングが行われている可能性があるため、1 つの脆弱性を見つけて修正できた場合でも、他の脆弱性の検索を続けることをおすすめします。まず、スパマーがウェブサイトのハッキングでよく利用する手段をお読みください。

次のものが必要です。

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

次のアクション

サイトが侵害される一般的な手法を複数ご紹介します。そのうちの一つがご自身のサイトに当てはまること、あるいは少なくとも他の可能性への気づきになれば幸いです。

脆弱性スキャナはウイルス対策スキャナとは異なることに注意してください。脆弱性スキャナは、攻撃を受ける可能性が非常に高く、サイトに望ましくない損害を与える可能性が高くなります。Scanner を実行する前に、サイトのバックアップなどのすべての指示に従ってください。

潜在的な脆弱性 {Potential-Vulnerability}

調査すべき潜在的な脆弱性には、次のようなものがあります。

ウイルスに感染した管理者のコンピュータ

管理者がウイルスに感染したコンピュータに、ハッカーがサイト管理者のキー入力を記録するスパイウェアをインストールしている可能性があります。

  • 管理者のシステムでウイルス感染の有無を確認する。管理者がサイトへのログインに使用したすべてのコンピュータで、複数の信頼できるウイルス対策(AV)スキャナを実行することをおすすめします。新しいマルウェア感染は、スキャナをすり抜けるために絶えず設計されているため、これは確実なウイルス検出方法ではありません。複数のスキャナを実行すると、誤検出を回避し、脆弱性が存在するかどうかを判断するためのデータポイントを増やすことができます。また、念のため、ウェブサーバーと、サイトの更新や投稿に使用しているすべてのデバイスの両方をスキャンすることも検討してください。
    • AV スキャナでスパイウェア、ウイルス、トロイの木馬、その他の不審なプログラムが検出された場合は、サイトのサーバーログを調べて、感染したパソコンを所有する管理者によるアクティビティを確認します。
    • ハッカーがログファイルを改ざんした可能性があります。関連付けられていない場合、管理者のユーザー名をログファイル内の不審なコマンドと関連付けると、管理者のシステムのウイルスによってサイトが脆弱になったことがさらに証拠となります。

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

脆弱なパスワードはハッカーが発見しやすいため、サーバーに直接アクセスできます。安全なパスワードとは、文字と数字、句読点の組み合わせで構成され、辞書に載っていない単語やスラングが含まれないパスワードです。パスワードは 1 つのアプリケーションでのみ使用し、ウェブ全体で再利用しないでください。パスワードを再利用すると、1 つのアプリでセキュリティ侵害が 1 回発生すれば、ハッカーが他の場所で使用できるログイン情報とパスワードを見つけられるようになります。

サーバーログで、管理者による複数回のログイン試行や、予期しないコマンドの実行など、望ましくないアクティビティを確認します。不審なアクティビティが発生した日時をメモしておきます。ハッキングが最初に行われた日時を把握することで、まだクリーンでないバックアップを特定するのに役立ちます。

古い状態のソフトウェア

サーバーに、オペレーティング システム、コンテンツ管理システム、ブログ作成プラットフォーム、アプリケーション、プラグイン、サイトで使用しているその他のソフトウェアの最新バージョンがインストールされていることを確認します。

  • インストールされているすべてのソフトウェアを調査(ウェブ検索などを利用)して、バージョンにセキュリティ アドバイザリが含まれているかどうかを確認します。もしそうなら、古いソフトウェアによってサイトが脆弱になった可能性があります。
  • ベスト プラクティスとして、古いソフトウェアが特定の脆弱性の問題を引き起こしたかどうかにかかわらず、サーバーのソフトウェアを常に最新の状態に保つことをおすすめします。

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

オープン リダイレクト

オープン リダイレクトは、ユーザーがサイト上の有用なファイルやページにアクセスできるように、別の URL を追加できるように URL 構造を意図してコーディングされます。次に例を示します。

http://example.com/page.php?url=http://example.com/good-file.pdf

or

http://example.com/page.php?url=malware-attack-site>

  • サイトがオープン リダイレクトによって悪用されている場合、不適切なリンク先へのオープン リダイレクトを含むサンプル URL が Search Console のメッセージで提供されていたことがあります。
  • 今後オープン リダイレクトを防ぐには、次の点を確認します。
    • ソフトウェアで [オープン リダイレクトを許可する] をデフォルトでオンにするかどうか。
    • コードでドメイン外へのリダイレクトを禁止できるかどうか。
    • 適切にハッシュされた URL と正しい暗号署名を使用したリダイレクトのみが続行されるように、リダイレクトに署名できるかどうか。

SQL インジェクション

SQL インジェクションは、データベースが実行するユーザー入力フィールドにハッカーが不正なコマンドを追加できる場合に発生します。SQL インジェクションでは、データベースのレコードを望ましくないスパムやマルウェア コンテンツで更新したり、重要なデータをハッカーのために出力にダンプしたりできます。サイトでデータベースを使用している場合、特にマルウェアに感染している場合は、SQL インジェクションによってサイトが不正使用されている可能性があります。

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