更新しました。次に何をすればよいですか?
私からのセキュリティ通知を受け取られたあとに プラグインや CMS を更新されたのであれば、それで結構です。それが重要な一歩であり、多くの サイトではそれだけで十分です。
更新は、これ以降について穴をふさぎます。ただし、それを閉じる前に誰かがその穴を 見つけていたかどうかまでは教えてくれません。このページは、その問いにご自身で答えていた だくための、およそ 30 分の実践的な自己点検の手引きです。セキュリティの専門知識も予算も お持ちでないサイト運営者の方に向けて書いています。これは一般的なご案内であって、お使いの サイトについての調査結果ではありません。外部から私に分かるのは、サイトがどのソフトウェア バージョンを報告しているかということだけで、それ以上のことは分かりません。
ステップ 1: その欠陥で実際に何ができるのかを確認する
すべての脆弱性が同じ対応を必要とするわけではありません。サイト通知のページ でご自身の通知を探し、それがどの分類に当たるかをご確認ください(各通知ページの冒頭付近に 記載しています)。
- アカウント乗っ取り、またはコード実行(攻撃者が管理者権限を得たり、独自のコードを 実行できたりする場合): 以下のチェックリストをすべて実施してください。
- データの読み取り(攻撃者がデータベースの情報を読み取れるものの、サイトを変更する ことはできない場合): ステップ 2 と 5 を中心にご確認ください。問題になるのは、サイトが 改変されたかどうかではなく、どのようなデータが保存されていたか、という点です。
- より限定的な問題(特定の設定が必要な欠陥や、管理画面にしか及ばない欠陥): 何を確認 する価値があるかは、お使いのコンポーネントの通知ページに記載しています。多くの場合、 更新だけで十分です。
ステップ 2: 露出期間を見極める
問題になる期間は、二つの日付で挟まれます。
- お使いのサイトで穴が開いた日。 通常は、影響を受けるバージョンを導入した日です。 その日付が分からない場合は、通知に記載した CVE アドバイザリー(各通知ページからリンク しています)の日付が妥当な代わりになります。公開された時点から先は、攻撃者も知って いたということだからです。
- 更新した日。 穴を閉じた日です。
以下の内容は、すべてこの期間についてのものです。たとえばアドバイザリー公開から 1 日か 2 日で更新されたというように期間が短ければ、リスクは実在するとはいえ小さなものです。 期間が数か月に及ぶ場合は、このチェックリストを真剣に受け止めてください。
ステップ 3: サイトにアクセスできる人を見直す
侵入に成功した攻撃者は、ほぼ必ず再び入るための手段を残していきます。次の順に確認して ください。
- 管理者アカウント。 WordPress では「ユーザー」を開き、管理者で絞り込みます。Joomla では「ユーザー」から「ユーザー管理」を開きます。ご自身で作成した覚えのないアカウントが ないかご確認ください。ただし注意点があります。 一部の欠陥(たとえば Simple Membership のもの)では、攻撃者が新しいアカウントを作るのではなく、既存のアカウントを乗っ取る ことができます。そのため、この確認だけでは何も証明できません。ユーザー一覧に問題が なさそうに見えても、ステップ 4 の認証情報の変更が重要なのはそのためです。
- ご自身で導入した覚えのない、最近追加されたプラグイン、テーマ、拡張機能。
- スケジュールされたタスク(WordPress では WP Crontrol プラグインで一覧できます。 多くのバックドアは、スケジュールされたジョブから自身を再インストールします)。
- アプリケーションパスワード(WordPress では「ユーザー」から「プロフィール」、 「アプリケーションパスワード」)。パスワードを変更したあとも API 経由のアクセスを ひそかに保ち続ける手段です。
ステップ 4: 認証情報を変更する
お受け取りの通知がアカウント乗っ取りまたはコード実行の分類に当たり、かつ露出期間が数日 より長かった場合は、ステップ 3 で何も見つからなかったとしても変更してください。
- すべての管理者アカウントのパスワード。
wp-config.php(WordPress)内の認証用の秘密鍵とソルト。これによってすべての ユーザーがログアウトされ、セッションを盗んだ攻撃者がいたとしてもログアウトされます。 新しい値は公式の生成ツールで得られ ます。Joomla では、configuration.phpの$secretの値がこれに当たります。- ホスティングの管理画面と FTP / SFTP のパスワード。他の方と共有している場合や、 長く変更していない場合。
これには 10 分ほどしかかかりませんし、実際に侵入があったかどうかにかかわらず、盗まれた セッションや解読されたパスワードハッシュへの扉を閉じることができます。
ステップ 5: スキャンとファイルの確認
- ホスティングの管理画面にマルウェアスキャンの機能があれば(共用ホスティングの多くには あります)、ホスティング事業者のマルウェアスキャンを実行してください。信頼できる 無料のスキャナーでも構いません。WordPress であれば、Wordfence の無料スキャンがお使いの ファイルを公式の配布物と比較してくれます。
- 露出期間の開始前後から後に変更されたファイルを確認してください。とくにアップロード 用ディレクトリ内の PHP ファイルにご注意ください。そこには本来、PHP ファイルがまず 存在しないはずです。
- ホスティング事業者がアクセスログを保存している場合は、その期間について、見覚えの ないアドレスから当該コンポーネントへのリクエストがないか目を通してください。ログは 古いものから消えていくため、何も見つからないことにはあまり意味がありませんが、見つ かった場合は決定的です。
自己点検で何か見つかった場合
まだ何も削除しないでください。まず完全なバックアップ(ファイルとデータベース)を 取得し、何が起きたのかを後から調べられるようにしてください。そのうえで、費用の少ない順に 次のようにお進めください。
- ホスティング事業者。 多くの事業者はマルウェア駆除のサービスを提供していますし、 少なくとも自社のスキャナーが何を検出しているかは教えてくれます。小規模なサイトの多く にとっては、これが最初の相談先として適切です。
- 専門家。 サイトが顧客データや決済を扱っている場合、あるいはスキャンでバックドアが 見つかった場合は、何が読み取られたのかを明らかにするために費用を払う価値があります。 多くの国や地域では、データ保護に関する法律の適用がその答えによって決まります。
- 必ずうまくいく最終手段。 露出期間より前のバックアップから復元するか、CMS と プラグインを公式の配布元から入れ直し、ご自身のコンテンツだけを引き継いでください。 そのうえで、上記のとおり更新と認証情報の変更を行ってください。
ご覧になっているものが何なのか判断がつかない場合は、単に通知メールに返信していただいて も構いません。私はすべての返信に目を通していますし、進むべき方向をお示しすることは、 そもそも私がこうした通知をお送りしている理由の一つです。私は駆除サービスを販売しており ませんし、このページも売り込みではありません。開示ポリシー もあわせてご覧ください。
私のメールが届く前にすでに更新していた場合
同じ考え方が当てはまります。この通知は、お使いのサイトが最近影響を受けるバージョンを 報告していたことを意味しますので、いまは閉じているとしても、そうした期間は存在していま した。ステップ 2 から 4 は、いずれも肝心の問いに答えるものです。