Notes
WordPressプラグインの脆弱性チェック|
調べ方と更新の判断
プラグインの脆弱性チェックは、名前を検索して終わる作業ではありません。入っている版を書き出し、一覧と照合し、更新するのか止めるのかを日付付きで残します。特定の番号は作りません。判断の材料だけを順に書きます。
WordPressプラグイン脆弱性の確認対象
確認対象は、今のサイトにファイルが残っているプラグイン全部です。有効、無効、必須、削除したつもりでディレクトリだけ残っているもの、を含めます。有効だけを対象にすると、無効の古いファイルが入口のまま残ります。必須は管理画面の一覧に出ないことがあるので、サーバー上の必須ディレクトリも一度見ます。
対象の書き出しは、名前、ディレクトリ名、今の版、配布元、有効か無効か、最後に更新した日、依存している機能です。名前とディレクトリ名が違うプラグインはよくあります。検索はディレクトリ名でも行います。依存している機能が空欄だと、止める判断のときに「これを外すと何が止まるか」から調べ直します。フォーム、会員、決済、バックアップ、キャッシュは、依存を必ず書きます。
対象から外してよいのは、今のサイトにファイルが無いプラグインです。昔使っていた名前を記憶だけで対象にすると、無い製品の解説を読んで更新した気になります。ファイルの有無は、管理画面とサーバーのディレクトリで確認します。管理画面に無いのにディレクトリがある場合は、対象に戻します。逆に、管理画面にあるのにディレクトリが空の場合は、残骸の表示なので、バックアップのあとで消し方を別途決めます。
本体とテーマは、この記事の主対象ではありません。ただしプラグインが特定のテーマ専用、特定の本体の版専用、という場合は、対象のメモにその条件を書きます。条件を書かないと、プラグインだけ上げてテーマ側の入口が残ります。本体側の一覧の見方は脆弱性一覧の見方です。両方を同じ操作で上げないでください。
有料プラグインと、配布が会員サイトだけのプラグインも対象です。更新ファイルが契約切れで来ない場合、管理画面に通知が出ないことがあります。通知が無いことを安全と読まないでください。契約の状態と、最後にファイルを入れた日を対象の表に足します。契約が切れて更新できない行は、チェックの結果が「調べられない」になります。調べられない行は、止める判断の候補です。
対象の人数が多いサイトは、誰が何を入れたかを表に足します。入れた人が分からない行は、止めたときの影響も分からない行です。影響が分からないまま無効化すると、予約や会員が止まっても原因の切り分けが長くなります。分からない行は、公開面のどの画面で使っているかを先に一つ書きます。一つも書けない行は、使っていない候補として、止める判断の手前に置きます。
プラグイン脆弱性チェックの手順
手順の骨格は、書き出す、バックアップを残す、配布ページの履歴を見る、一覧と照合する、更新する・止めるを決める、一つずつ実施する、公開面を見る、記録する、です。骨格を飛ばして検索窓にプラグイン名だけ入れると、別製品の同名や、古い解説に当たります。検索は、書き出した版を持ったあとの作業です。
書き出した表を、更新作業の日の朝に一度作り直します。先週の表を使い回すと、その週に上げた版が残りません。作り直しは、管理画面のプラグイン一覧を上から写すだけで足ります。美しい表は要りません。版の数字が正しければ、照合はできます。数字が「最新」という語になっている行は、照合できません。数字に直します。
バックアップは、チェックの前に一代残します。チェック自体は読む作業でも、そのあと更新や無効化へ進むためです。残し方はバックアップの取り方です。残さずに無効化すると、止めたプラグインの設定が消え、戻してもフォームの項目が空になることがあります。設定がデータベースに残る製品と、ファイル側に残る製品があります。分からない場合は、残してから無効化します。
配布ページの履歴は、一覧より先に見ます。履歴に修正の説明がある更新は、一覧にまだ出ていなくても自分の更新対象です。履歴が一年以上空、最終更新が古い、対応本体の版が自分よりかなり古い、といったページは、照合の前に「配布が薄い」と印を付けます。印のある製品は、一覧に名前が無くても、止める判断の候補へ寄せます。
手順の途中で管理画面が止まった場合は、次のプラグインへ進まないでください。止まった製品のディレクトリ名と、直前に押した操作を書いて、バックアップへ戻すか、そのディレクトリだけを止めるかを決めます。止め方が分からない場合は、これ以上のチェックをその日は終わりにします。途中のまま他の製品を上げると、どれで止まったか分からなくなります。
手順を短縮したくなるのは、通知の数が多い朝です。通知の数は、チェックの順番ではありません。先に、セキュリティと書かれた履歴がある行、決済と会員とフォーム、無効のまま残っている行、の順で表を並び替えます。並び替えずに上から全部上げると、見た目の更新で画面が変わり、本当に急ぐ行の確認が後回しになります。後回しになった行は、その日のうちに日付を付けて残します。
プラグイン脆弱性一覧との照合
照合は、自分の表の一行と、一覧の影響版を突き合わせることです。一覧の見方の一般論は脆弱性記事にあります。ここではプラグイン特有のずれ方を書きます。同じ表示名で作者が違う、日本語向けの再配布、古いフォーク、です。表示名だけで一致させると、別製品の修正版を自分へ当てます。ディレクトリ名と作者を、一致の条件にします。
影響版の書き方が「ある版より前」のとき、自分の版がその数字と同じなら、本文の含む・含まないを確認します。確認できない行は、対象として扱います。対象として扱うと更新が増えますが、対象外と自分で決めて残すより、後の被害は小さいです。対象外にするなら、確認できた本文の引用場所をメモします。引用場所が無い対象外は、見送りではなく未確認です。
一覧に名前が無いプラグインは、安全ではありません。名前が無い理由は、まだ収集されていない、配布が小さく載っていない、独自開発、です。独自開発は、最終更新日と、触れる人がいるかを見ます。触れる人がいない独自プラグインは、チェックの結果が「直せない」です。直せない行は、機能を本体や別の製品へ移す候補になります。移す作業は、この記事の更新判断ではなく、別日の改修です。
一つのプラグインに複数の行がある場合は、新しい行の修正版を見ます。古い行の修正版へ上げても、新しい行の対象に残ることがあります。新しい行で自分の版が対象外なら、その製品の照合はその日は終わりです。古い行を全部消化しようとすると、もう使っていない版の話で時間が終わります。
照合の材料に、スキャン結果を足す場合は、結果の製品名と版を自分の表と突き合わせます。件数が多くても、自分の表に無い名前は後回しです。後回しにせず全部直そうとすると、入っていない製品の更新を探し始めます。スキャンの範囲と限界は脆弱性診断に分けています。スキャンを正本にせず、表を正本にします。
WordPressプラグイン脆弱性の詳細
詳細で読む欄は、条件、直った版、回避策、影響する機能です。条件が「管理者としてログインした状態」なら、一般の閲覧者がその入口を踏む優先度は下がります。条件が「認証なしで特定のアドレスへ送る」なら、公開しているだけで対象です。条件の欄が空なら、詳細が足りない行です。足りない行は、配布ページの履歴と、公的な注意喚起の本文へ戻ります。
直った版は、数字だけでなく、その版の配布が今も受け取れるかを見ます。管理画面に更新が出ない、契約切れでファイルが来ない、配布ページが消えている、といった場合は、直った版が存在しても自分は当てられません。当てられない詳細は、更新する判断ではなく、止める判断の材料です。非公式のファイルを探して当てる作業は、この記事では行いません。
回避策が書かれている行は、更新までのつなぎです。特定の機能をオフにする、特定の権限のユーザーを作らない、特定のアドレスを閉じる、といった内容が多いです。回避策を本番へ入れる前に、その操作でフォームや予約が止まらないかを見ます。止まると分かっている回避策は、営業時間外に入れます。回避策を入れたことは、更新したことより忘れやすいので、日付と戻し方を残します。
影響する機能は、そのプラグインの全部ではありません。ショートコードの一つ、アップロードの一つ、REST の一つ、といった範囲のことがあります。範囲が狭い詳細でも、その機能を公開面で使っているなら対象です。使っていない機能の入口でも、無効にしていない限り残り得ます。使っていないなら、機能をオフにするか、プラグイン自体を止めるかを詳細のあとで決めます。
詳細の文章に攻撃の手順が書いてある場合でも、自分の公開サイトで試さないでください。試して止まった場合、脆弱性のせいなのか自分の送信のせいなのかが切れます。確認は、版の照合と、修正版の適用と、公開面の通常操作です。通常操作でおかしい画面が出た場合は、詳細の続きではなく、改ざんの切り分けへ移ります。
詳細が英語でも、版の数字と製品名は照合できます。全文を訳してから判断する必要はありません。数字が無い詳細だけが残る場合は、未確認として日付を付けます。未確認のまま更新ボタンを押すと、何を直したのかが残りません。未確認が決済やログインに関わる場合は、自分で訳して急ぐより、制作か運用の窓口へ材料を渡します。渡す材料は、ディレクトリ名、今の版、詳細の所在です。
プラグイン脆弱性チェックと更新の判断
判断は、調べた事実を、更新する・止めるの二つへ落とす作業です。様子を見るは、止める側の下に置きます。様子を見るを独立させると、翌月も同じ行が残ります。判断の前に、バックアップの日付と、そのプラグインが止められたときの代替を一行書きます。代替が無い決済や予約は、更新する側でも、当てる時間帯を営業時間外へ寄せます。
判断を一人で抱えない方がよい場合があります。制作がカスタムしたプラグイン、会員の課金、在庫連動です。自分だけで上げると、カスタムが消えても気づきが遅れます。渡す材料は、ディレクトリ名、今の版、直った版、依存している画面のURLです。材料が揃っていると、制作側も「上げてよい/ダメ」を返しやすくなります。返ってくるまで本番へ当てない判断も、止める側です。
更新する・止める
更新する・止めるは、同じ日に混ぜて全部やらない方が切り分けやすいです。先に更新する行を一塊にし、公開面を見てから、止める行へ進みます。止める行を先にやると、サイトの機能が欠けた状態で更新の確認をすることになります。欠けた状態の確認は、更新の失敗と機能停止が区別できません。
更新する
更新する条件は、直った版があり、その版を自分の環境で受け取れて、配布ページの互換が今の本体とPHPに合い、バックアップがある、です。条件が揃ったら、そのプラグインだけを上げます。上げた直後に、依存している画面を見ます。フォームなら送信、会員ならログイン、キャッシュなら一度消してから公開面、です。問題が無ければ、表の版の数字を新しい数字へ書き換えて終わります。
更新する側でも、メジャー更新と、セキュリティだけと書かれた更新は分けます。メジャーは画面の操作が変わることがあります。セキュリティだけと書かれた更新を、見た目の改修と同じ週に混ぜないでください。混ぜると、現場からの「画面が変わった」連絡と、入口を閉じた作業が同じ報告になります。報告が混ざると、翌月の定期確認で何を見ればよいかが分からなくなります。
止める
止める条件は、直った版が受け取れない、配布が止まっている、互換が今の本体に合わない、条件が認証なしなのに直せない、使っていない、です。止める操作は、先に無効化、動作確認、問題が無ければディレクトリ削除、です。無効化だけで終わる月があっても構いません。削除は、バックアップのあとで、名前を記録してから行います。削除だけ先にすると、設定の残骸がデータベースに残り、同名を入れ直したときに古い設定が混ざります。
止めてサイトの目的が立たない場合は、止める判断を保留し、代替の製品を探すか、公開を絞るかを別日にします。保留は、日付と、誰が代替を探すかを書きます。日付の無い保留は、更新しない放置です。放置の行が決済やログインに関わる場合は、自分の定期確認の範囲を超えています。超えた行は、後ろの章の相談へ回します。回す前に、その行のディレクトリ名と版だけは残してください。
プラグイン更新後の脆弱性チェック
更新後のチェックは、上げた製品が本当に直った版になったかを見ることです。管理画面の版表示と、ディレクトリ内の版情報と、表の数字が三つ揃うかを確認します。管理画面だけ新しい数字で、ファイルが古いことがあります。キャッシュや、更新の途中終了で起きます。三つが揃わない場合は、もう一度その製品だけ更新するか、バックアップから戻してやり直します。
次に、その製品に依存する画面の通常操作を見ます。脆弱性チェック用の特別な送信は不要です。いつもの投稿、いつもの問い合わせ、いつもの予約で足ります。いつもの操作で見知らぬ画面や、見知らぬ宛先へ飛ぶ場合は、更新の成功ではなく切り分けへ移ります。切り分けの途中で、他のプラグインを続けて上げないでください。
更新後に一覧をもう一度見る必要は、その製品の新しい行が出ていないかを確認する程度です。全部の一覧を最初から読み直すと、更新後の確認が長くなり、公開面を見る時間が減ります。公開面を見た記録が無い更新は、直った版へ上がっていても、運用としては未完了です。未完了の行は、翌月の定期確認でまた同じ作業になります。
更新後にサイトヘルスが警告を出すことがあります。警告の対象が、今上げた製品とは限られません。PHPの版、別のプラグイン、HTTPSの混在が同じ画面に出ます。今上げた製品の名前が警告に無いなら、その警告は別日の運用へ送ります。同じ日に全部消そうとすると、更新後チェックの範囲が壊れます。
更新後のチェックで問題が無い場合でも、その製品の自動更新をその場で全部オンにしないでください。一度成功した更新と、今後の自動は別です。自動にするなら、上がった内容が残る設定にしたうえで、マイナーだけに限ります。全部自動に戻すと、翌月の定期確認で「誰が上げたか」が消えます。消えると、止める判断の材料も消えます。
WordPressプラグイン脆弱性の定期確認
定期確認は、毎月の運用日に表を作り直し、更新通知と履歴と、気になる行だけ一覧を見る、です。毎日全プラグインを検索する定期は続きません。続かない定期は、忙しい月に空白ができます。空白の月に限って、配布が止まった製品の行が残ります。月一の表作りの方が、空白は減ります。
定期で厚く見る行は、前回見送り、配布が薄い印、決済と会員とフォーム、無効のまま残している、です。見た目を整えるだけのプラグインは、通知が出た月だけで足ります。全部を同じ厚さで見ると、厚いべき行が薄くなります。厚く見る行の条件は、サイトの目的から決めます。目的が問い合わせなら、フォーム系を厚くします。
定期の記録は、作った表の日付、更新した名前、止めた名前、保留の日付です。四点があれば、翌月の差分が見えます。美しい報告書は要りません。四点が管理画面の中だけにあると、管理画面が止まった日に定期の履歴も消えます。公開していないメモへ、同じ四点を残します。
プラグインを足した月は、定期の対象が一つ増えます。足す前に、履歴があるか、最終更新が近いか、今の本体で動くかを見ます。足した直後は、脆弱性チェックより先に、目的の機能が動くかを見ます。動かない追加を対象表に載せても、止める判断しか残りません。動かない追加は、その月のうちに外します。
定期を自分で持てない場合は、更新作業ごと寄せます。サイト当番のWordPress保守は、確認したうえで更新し、日次バックアップを残します。スタンダード月額17,800円(税別)が基本枠です。死活は全プランで24時間365日、1秒単位、マルウェアの常時監視はスタンダード以上です。定期確認の表作りを、常時監視の代わりにはしません。表は人の判断、監視は公開の異常を先に拾う作業です。
定期確認の日を、お知らせ投稿の日と同じにすると、現場の更新と入口の確認が混ざります。投稿が忙しい日は、表の作り直しが省略されます。省略が二回続くと、無効のまま残ったディレクトリを忘れます。確認の日は、投稿の無い午前に固定した方が続きやすいです。固定できない月は、その月の見送りを一行残して、次の固定日へ送ります。
プラグイン脆弱性チェックが自分で難しいとき
自分で難しい時点は、表の版が揃わない、直った版を当てたら管理画面が止まった、止めたい製品を外すと予約が立つ、無効のディレクトリがどれか分からない、警告がすでに出ている、です。この時点で別のチェック用プラグインを足すと、対象の表がさらに増えます。先に、公開URL、今の表、バックアップの日付を揃えます。
難しい作業を続ける場所は、点検です。すでに改ざんや検索警告がある場合の緊急は税別29,800円からで、人が問題かを見てから進めます。更新と表の定期まで含めて回したい場合は、WordPress保守の基本枠へ寄せます。公開URLを送っていただければ、入っているプラグインの遅れと、止めにくい製品があるかを切り分けて返します。新しい料金は作りません。
一覧の読み方自体が重い場合は、先に脆弱性記事の照合の章だけを使ってください。診断の道具から入りたい場合は診断記事です。どれから入っても、自分の表が無い状態で番号を集める作業には戻さないでください。番号を集めると、無い製品の話で時間が終わります。
あわせて見る
相談
プラグインの更新判断から見ます
公開URLを送っていただければ、入っているプラグインの版、更新の遅れ、止めにくい製品があるかを切り分けて返します。