セキュリティ上の問題がある場合、維持されているプラグインをWordPressリポジトリから一時停止する必要がありますか?
公開: 2020-03-122020年2月27日午後9時34分(CET)に、プラグインWPアクティビティログが「エクスプロイトのためにWordPress.orgプラグインディレクトリから一時的に削除された」ことを通知するメールを受け取りました。
2020年2月28日金曜日の午後4時8分に修正を送信しました。 修正をリリースするのに16.5時間しかかかりませんでした。 サポートの応答時間が非常に長いため(ヨーロッパに拠点を置いています)、これが通常の勤務時間中に発生した場合は、問題をはるかに早く修正できたはずです(参照)。
プラグインは2020年3月2日月曜日の午後1時に復元されました。 これは、修正を送信してから69時間後です。 週末のため、チームがプラグインを復元するのに非常に長い時間がかかったことに注意することが重要です。
なぜ私はこれを書いているのですか?
セキュリティ上の問題があるメンテナンスされていないプラグインは、WordPressリポジトリから一時停止する必要があると私は信じていることを指摘したいと思います。 また、プラグインレビューチームのボランティアの仕事に多大な敬意を払い、報告されたセキュリティ問題についても全責任を負います。
ただし、保守されているプラグインで報告されたセキュリティの問題は、より適切に処理される可能性があると思います。 現在の処理方法が原因で、プラグインの評判は大きな悪影響を受け、そのユーザーとそのWebサイトは危険にさらされています。 したがって、この投稿の最後に、役立つ可能性のあるいくつかの改善点を強調し、それらを検討する必要があると思います。 アイデアは、常にリスクのあるユーザーを減らし、プラグインと開発者への影響を減らすことです。
この投稿では、何が起こったかの詳細をすべて文書化し、プラグインで報告された重大度の低いエッジケースの脆弱性について説明します。
WordPressプラグインのセキュリティ問題を報告する手順は何ですか?
プラグインハンドブックの公式ガイドラインから:
プラグインを報告する前に、開発者に直接連絡する必要があります(これは難しい場合があることは理解していますが、最初にプラグインのソースコードを確認してください。多くの開発者は、メールをリストしています)。 個人的に連絡が取れない場合は、直接ご連絡いただければサポートさせていただきます。
私たちの場合はどうなりましたか?
プラグインを開発するプラグインでそれを非常に明確にします。 リポジトリのプラグインページを見るだけで、アイデアが浮かびます。 また、お問い合わせも簡単に承っております。
ただし、プラグインがプラグインリポジトリから一時的に削除される前に、セキュリティの問題を報告した人は誰もいませんでした。 そのため、誰かがWordPressプラグインレビューチームに問題を報告し、事前の通知なしに一時的にリポジトリからプラグインを撤回しました。
理由と内容、そして何が良いか、悪いか、何を改善できるかを説明する前に、プラグインの脆弱性と私たちが誰であるかについて簡単に説明しましょう。
プラグインの脆弱性は何でしたか?
WPアクティビティログには、ユーザーがプラグインを構成するのに役立つインストールウィザードがあります。 ウィザードの設定の1つを使用すると、管理者以外のユーザーがアクティビティログを読み取ることができます。
しかし、私たちは間違いを犯しました。 ウィザードを実行しているユーザーが認証されているかどうかは確認しませんでした。 したがって、認証されていないユーザーがウィザードを実行し、別のユーザーまたはロールにプラグインの設定へのアクセスを許可する可能性があります。 ただし、これは重大度の低いエッジケースの問題です。
なぜこれは重大度の低いエッジケースのセキュリティ問題なのですか?
攻撃者は、次の場合にのみこれを悪用できます。
- インストールウィザードがインストーラーによって完了されることはありませんでした。
- 攻撃者はすでにユーザーを持っていた/ウェブサイト上のユーザーにアクセスできた、
- 攻撃者は、プラグインの設定とアクティビティログにのみアクセスできます。
このセキュリティ問題を悪用することにより、攻撃者はWordPressWebサイト上の他の特権にアクセスできなくなります。 したがって、このエクスプロイトはWebサイトの動作や機能自体に悪影響を与えることはありません。
コンセプトの証明
POCは非常に単純です。 認証されていないユーザーとしてこのページにアクセスします。
http://example.com/wp-admin/admin-post.php?page=wsal-setup¤t-step=access
これは、ログを表示できるユーザーを指定できるウィザードのステップです。 HTMLページのソースで「_wpnonce」ナンスを検索し、それをコピーして次のcurlコマンドに挿入します。
$ curl'http://example.com/wp-admin/admin-post.php?page = wsal-setup&current-step = access '-d'_wpnonce = INSERT-NONCE-HERE&wsal-access = yes&editors%5B%5D = subscriber&save_step = Next '
サブスクライバーとしてログインすると、プラグイン設定に完全にアクセスできるようになります。
なぜこの事件は誤って扱われたと思いますか?
送信されたメールには、次のようなものがありました。
プラグインを軽く閉じることはありません。セキュリティの問題に関しては、ユーザーの数と開発者の履歴と、レポートの重大度と損傷の可能性とのバランスをとろうとしています。
しかし、私たちのプラグインは時期尚早に撤回されたと思います。 ここのところ;
- 過去に問題が発生したときは、常に数時間以内に対処しました。 今回も同じことをしました。
- プラグインレビューチームが連絡をとったとき、私たちは常に時間通りに返信しました。
- セキュリティの問題はプラグインにのみ影響し(重大度は低い)、それはエッジケースでした。
- セキュリティの問題を自動的に悪用することはできませんでした。
- 攻撃者が行う可能性のある唯一の損害は、プラグイン設定の変更、アクティビティログの読み取り、またはそれらのパージでした。
他の開発者はそのような状況についてどう思いますか?
私たちのほとんどは、同様の問題に関するソーシャルメディア上の記事、ツイート、またはメッセージをすでに読んでいます。 しかし、私は他の人々、特に開発者がこれについてどう思っているかを自分で知りたいと思いました。 私が見ていないことがあるかもしれないので、これは重要だと思います。
まず、問題を特定した人にメールを送り、責任ある開示に感謝しました。 彼の応答は次のとおりです。
「プラグインの問題がすぐに修正されたことをうれしく思います。 ところで、wordpress.orgの人々が数日間それを閉じたことに気づきました。それは少し厳しく、本当に必要ではありませんでした。」- Jerome Bruandet
また、FacebookグループのSelling WordPressProductsで小さな世論調査を行いました。 このグループは小規模ですが、そのメンバーの大部分はプラグインとテーマの開発者です。 世論調査から、開発者は、低から中程度の重大度の問題の場合、開発者に連絡して、プラグインを撤回するのではなく、修正を提供する機会を与えるべきであることに満場一致で同意することがわかります。
これらの手順をどのように改善できますか?
私の知る限り、プラグインのセキュリティ問題を誰かが報告した場合の手順は文書化されていません。 この場合、以下のような手順は開発者を助け、危険にさらされる人を減らすことができます。
プラグインを閉じる前に、開発者に連絡して行動計画に同意してください
プラグインレビューチームは、プラグインを閉じる前に、開発者に連絡して脆弱性を確認することができます。 開発者は、修正の妥当な日付を含む行動計画を返信する必要があります。
必要に応じて、プラグインレビューチームが期限を設定できます。 たとえば、開発者は問題を修正するために12〜24時間かかる必要があります。 ただし、タイムゾーンなどによっては、さらに時間がかかる場合があります。開発者が応答しない場合は、プラグインをリポジトリから削除する必要があります。
セキュリティ問題の重大度とタイプを判別します
これは議論の余地があるかもしれません。 ただし、セキュリティの経験が少しある人なら、報告されたセキュリティの問題が自動的に悪用される可能性があるかどうか、エッジケースであるかどうか、および報告された概念実証(POC)からの影響を簡単に知ることができます。
開発者が行動計画に固執していることを確認します
開発者が時間どおりに修正を提出し、行動計画に含まれる他のタスクに固執することを確認するために、ある種のチェックを実施する必要があります。
維持されているプラグインをリポジトリから撤回しても効果はありません
維持されているプラグインの場合、リポジトリからプラグインを撤回することは、良いことよりも害を及ぼします。 例えば;
- プラグインに問題があること、おそらくセキュリティの問題があることを公開します。 これにより多くのアラームが発生し、プラグインにスポットライトが当てられます。 これは、攻撃者を招待して、プラグイン内の何かが悪用される可能性があることを攻撃者に伝えるようなものでもあります。
- 突然、彼らのWebサイトがターゲットになったため、現在のプラグインのユーザーベースが公開されます。 ほとんどのユーザーは、特にプラグインの機能がWebサイトやビジネスの中核である場合、何をすべきかを理解していません。
- 修正が遅れる可能性が高くなります。 これは通常、コミュニケーションの欠如、または休日や週末が原因で発生します。
リポジトリからプラグインを撤回することで、感染の伝播を阻止していると主張する人もいるかもしれません。 ただし、セキュリティの問題の重大度が低く、悪用を自動化できず、開示に責任がある場合、リスクがないか、リスクが非常に低い場合。
免責事項:これは攻撃ではありません
これは、WordPressプラグインレビューチームやこれらのプロセスに関与する人に対する攻撃ではないことを指摘したいと思います。 私は正直に彼らの仕事を尊重し、彼らがしていることは誠実に行われていることを知っています。 ただし、他のすべてのシステムやプロセスと同様に、確かに改善の余地があります。
多くの人が、変更が必要な場合は、この投稿を書く代わりにボランティアをするべきだと言うでしょう。
私はかなり長い間参加しようとしてきました。 私はさまざまなWordCampsの何人かの人々と話をして参加しました。また、MakeWordPressプラグインページでボランティアの募集を監視しています。 しかし、ここ数年、彼らには欠員がありませんでした。 彼らが助けを必要としたとき、彼らは招待だけで新しいメンバーを追加しました。