脆弱性が公表されると、その情報は利用者だけでなく攻撃者にも届き、未更新のサイトを狙う攻撃がまもなく自動化されます。危ないのは、修正版が公開されてから、自分のサイトを更新するまでの時間です。更新を後回しにするほど、その時間は長くなります。
「表示が崩れると困るから、落ち着いたら更新しよう」。その判断が、攻撃者に時間を与えることになります。
弱点が見つかってから、攻撃されるまで
脆弱性は、ソフトウェアの作りの不備による弱点のことです。見つかってから実際の攻撃に使われるまでには、おおむね次の5つのステップがあります。
1. 脆弱性が見つかる
弱点を見つけるのは、開発者自身のこともあれば、セキュリティの研究者や利用者のこともあります。善意の発見者は、まず開発者にこっそり知らせ、修正の準備ができるまで内容を公表しないのが一般的です。
ただし、攻撃者が先に見つけることもあります。その場合は、後で触れる「ゼロデイ攻撃」になります。
2. 開発者が修正版を出す
知らせを受けた開発者は、弱点を直した修正版を作ります。脆弱性を直すための修正はパッチと呼ばれ、WordPressでは本体・テーマ・プラグインの「更新」の形で届きます。更新履歴には「セキュリティの修正」とだけ書かれ、詳しい内容は伏せられていることもあります。
3. 脆弱性の情報が公表される
修正版が出たころ、脆弱性の情報が公表されます。多くの場合、CVEという共通の番号が付けられ、「どのソフトの、どのバージョンに、どんな種類の弱点があるか」がわかるようになります。
公表されるのは、利用者に「このバージョンは危ないので更新してください」と知らせるためです。利用者にとっては必要な情報です。
4. 攻撃が自動化される
同じ情報を、攻撃者も読んでいます。さらに、修正版と以前のバージョンを見比べれば、どこが直されたのか、つまりどこに弱点があったのかを読み取ることもできます。
攻撃者はこれをもとに、その弱点を突く手順をプログラムに組み込みます。インターネット上のサイトを巡回するプログラムに、「このプラグインの、このバージョンを使っているか」という確認が一つ加わるわけです。
5. 未更新のサイトが一斉に狙われる
あとは機械的です。同じプラグインを使っているサイトが、規模や業種に関係なく、次々に確かめられていきます。更新済みのサイトは素通りされ、未更新のサイトだけが入られます。
入られたサイトには、Webシェルが置かれたり、攻撃者用の管理者ユーザーが作られたりします。その先の流れは「WordPressサイトが乗っ取られるまでの5つの段階」で解説しています。
危ないのは「公表」と「更新」のあいだ
この流れで大事なのは、ステップ3の「公表」です。公表される前は、弱点を知っている人はごく限られています。公表されたあとは、誰でも知ることができます。
鍵メーカーが「この型の錠前は、ある方法で開けられてしまいます。新しい錠前に交換してください」と発表したら、泥棒もその発表を読みます。交換を済ませた家は無事ですが、交換を先延ばしにしている家は、開け方が広く知られた錠前を付けたままになります。
守る側がやることは、更新ボタンを押すことです。攻撃する側は、公表された情報を読んでプログラムを用意する必要があります。本来は守る側が先に動けるはずなのに、更新を後回しにすると順番が逆転してしまいます。
なお、更新を済ませたからといって、それ以前に入られていないとは限りません。更新が遅れていた期間があった場合は、見覚えのない管理者ユーザーやファイルが増えていないかもあわせて確認してください。
修正版がまだないとき
弱点が公表される前、あるいは修正版が出る前から攻撃が始まることもあります。これがゼロデイ攻撃で、更新をきちんと続けているサイトでも防ぎきれないことがあります。
開発が止まったプラグインは、さらに深刻です。弱点が見つかっても修正版そのものが出ないため、ゼロデイと同じ状態がいつまでも続きます。
修正版を待つしかない間にも、できることはあります。
- WAFを使う:よくある攻撃のパターンを、サイトに届く前に遮断します。修正版が出るまでの時間稼ぎになることがあります
- 使っていないものを削除する:停止しただけのプラグインやテーマもファイルは残っていて、狙われることがあります。使わないものは削除して、入口そのものを減らします
- 元に戻せるようにしておく:バックアップと、ファイルの改ざん検知があれば、入られてもすぐに気づき、元の状態に戻せます
なぜプラグインが主な入口になるのか
WordPressサイトで脆弱性を突かれる場所として、特に多いのがプラグインです。理由はいくつかあります。
- 数が多い:本体は1つですが、プラグインはサイトごとに何種類も入っています。入れている数だけ、弱点を抱える可能性のある場所が増えます
- 作り手がさまざま:プラグインは、WordPress本体とは別の開発者がそれぞれ作っています。品質も、弱点が見つかったときの対応の速さも、プラグインごとに違います
- 自動では更新されない:WordPress本体は、標準でセキュリティ修正を含む小さな更新が自動で適用されます(サーバーや設定によって異なります)。プラグインは、自動更新を自分で有効にしない限り、更新ボタンを押すまで古いままです
- 更新が止まったものが残りやすい:開発が終わったプラグインも、管理画面では普段どおり動いて見えるため、そのまま使われ続けがちです
利用者が多いプラグインほど、1つの弱点で多くのサイトを狙えるため、攻撃者にとって効率のよい標的になります。
更新に追いつくための実際のやり方
自動更新を使う
プラグイン > インストール済みプラグイン の一覧には、プラグインごとに「自動更新を有効化」のリンクがあります。テーマも 外観 > テーマ から、テーマの詳細を開いて同じように設定できます。
自動更新には、まれに表示が崩れる心配もあります。サイトの見た目や機能の中心になっているプラグインは手動で、それ以外は自動で、と分けて考えるのも一つの方法です。
有料のプラグインやテーマは、ライセンスの期限が切れると更新が届かなくなるものがあります。ダッシュボード > 更新 に何も出ていなくても、実は更新が止まっている、ということがあるので注意してください。
更新の前にバックアップを取る
更新をためらう一番の理由は、「何かあったら戻せない」という不安です。ファイルとデータベースの両方のバックアップがあれば、更新で不具合が出ても元に戻せます。
レンタルサーバーの自動バックアップを使っている場合は、何日前まで残っているのか、実際に戻す手順はどうなっているのかを一度確かめておくと安心です。
更新が止まったプラグインを見分ける
次のような様子があれば、乗り換えを検討する時期です。
- WordPress公式のプラグインディレクトリで、プラグインのページの「最終更新」が長い間止まっている
- 同じページに、最近のWordPressでは動作確認されていない旨の注意書きが出ている
- 公式ディレクトリで配布が終了している、あるいはページそのものが見つからない
- 有料プラグインの開発元のサイトで、更新やサポートの案内が途絶えている
ときどき一覧を見直す
最後に、インストール済みのプラグインとテーマを定期的に見直してください。昔一度だけ使ったもの、別のもので置き換えたもの、停止したままのものは、削除して構いません。入れていないプラグインの弱点は、突かれようがありません。
更新は、守る側が先に動ける唯一の手段
脆弱性の公表は、利用者と攻撃者に同時に届きます。その後、どちらが先に動くかで結果が決まります。自動更新とバックアップを用意し、使わないものを削除しておけば、多くの場合は攻撃者より先に弱点を塞げます。
更新の確認や、更新前のバックアップ、不具合が出たときの対応まで手が回らない場合は、セキュリティーデスクの保守プランでお任せいただくこともできます。パスワードの側の入口については「パスワードが破られる3つの経路」もあわせてご覧ください。
