プラグインとテーマの開発者:これは、SDKのセキュリティの脆弱性から学ぶことができるものです
公開: 2019-03-02今週はセキュリティの脆弱性に対処しなければならなかったため、私たちのチームにとってはかなり激しいものでした。 セキュリティは私たちにとって最優先事項であり、これは私たちのSDKで4年ぶりに発見された主要な脆弱性です。 残念ながら、他のソフトウェアと同様に、開発者も人間であるため、インディー開発者、20人のテーマショップ、Googleのいずれであっても、間違いが発生します。 この記事の目的は、まず透明性だけでなく、インシデントをどのように処理したか、そしてそこから何を学ぶことができるかについての洞察を提供することです。
2019年2月25日月曜日に、WooCommerceリポジトリでGitHubの問題に遭遇した、役立つ開発者からサポートメールを受け取りました。 この問題は、サーバーでの疑わしいアクティビティに気付いた小さなホスティング会社の代表者によって作成されました。 担当者には、2つの潜在的な攻撃を示す関連アクティビティログが含まれており、そのうちの1つはFreemiusSDKを実行しているプラグインをターゲットにしていました。
セキュリティを非常に重視しているため、すぐに徹底的な調査を行い、脆弱性が実際にSDKにあることを確認しました。
脆弱性の深刻さのため、私たちはすぐに修正に取り組み始めました。 わずか数時間後、パッチを適用したタグをリリースし、脆弱なSDKバージョンを使用しているすべての開発者に通知して、すべての製品のSDKをできるだけ早く更新しました。 また、元のGitHubの問題を更新して、WooCommerceチームに通知しました(露出を減らすために数時間後に削除したGHの問題)。
露出を軽減し、修正バージョンに更新するための「猶予」期間を全員に与えるために、開発者に2つのことを尋ねました。
(a)このセキュリティアップグレードが変更ログに含まれる場合は、「セキュリティ修正」などの一般的な表現のみを使用してください。
(b)パッチを適用したバージョンを更新してリリースした後でも、今後30日間はこの問題を開示しないでください。これにより、すべてのパートナーとそのユーザーが更新できるようになります。
ちょうど1日後、プラグインの脆弱性をカバーするWebサイト(意図的にプラグインにリンクしたり、名前を言及したりしない)が、影響を受けるプラグインのいくつかに名前を付けながら悪用する方法に関する情報を含む、脆弱性に関する投稿を公開しました。 プラグインとテーマの開発者に24時間以内に問題について通知したばかりなので、これには驚きました。 彼らは私たちに連絡せず、責任ある開示の市場慣行にも従いませんでした。
露出を減らし、より多くのハッカーから不要な注目を集める前に、開発者とそのユーザーにパッチを適用したバージョンに更新する機会を与えるために、レポートを一時的に非公開にするように依頼しました。 しかし、私がコミュニケーションをとった人は、名前を明かすことはありませんでした(私は彼らに尋ねました)、彼ら自身の正しいイデオロギーを持っており、常識は彼らに本当に魅力的ではないようです。 問題のある状況と、多くの開発者やユーザーにさらされているリスクの増大について説明しようとしましたが、私の努力は耳に聞こえず、メール交換は時間の無駄であることに気づきました。
開発者のコミュニティがプラグインとテーマをリリースした新しくパッチを適用したSDKに更新しているときに、2つの問題を発見しました。
- 何人かの開発者は、チェックしていないメールアドレスでFreemiusに登録したため、アラートメールを受け取りませんでした。
- 注目を集めることを避けるために、パッチを適用したGitHubタグを公式リリースとして意図的にフラグを立てませんでした。 ただし、Composerを使用してライブラリを更新していた開発者は、タグを明示的に指定しない限り、packgistがリリースのみをフェッチするため、最新の更新を取得していないことがわかりました。
これらの問題を克服するには:
- この脆弱性はすでに公開されているため、2日前にパッチを適用したバージョンに公式リリースのフラグを付け、packgistに依存する開発者が更新できるようにしました。
- 今朝早く、すべての製品のSDKをまだ更新していない開発者にメッセージの別のバッチを電子メールで送信しました。 今回は、すべての人が適切にメールを受信する可能性を高めるために、公式のサポートチャネルにメッセージを送信しました。
この脆弱性の公開を少なくとも2週間延期したかったのですが、WP Tavernから、開発者のキーボードを壊したストローであるトピックに関する独自の記事を公開する前に、入力を求める問い合わせがありました。
私たちが犯した間違いとあなたがそれらから学ぶことができること
事件を振り返ると、私たちは簡単に回避でき、すべての人の生活をはるかに楽にしていたであろういくつかの間違いを犯しました。
サイレントモードに入り、知る必要がある人だけに警告する
私たちはこの問題をできるだけ早く修正することに熱心だったので、私は個人的に「新人」のミスを犯し、あまりにも早く不要な注目を集めました。 私は先に進み、SDKの管理に使用するGitHubリポジトリに修正をコミットしました。 リポジトリは公開されているだけでなく、修正について説明し、「セキュリティ」という言葉を使用しました。
より良いアプローチは、リポジトリのプライベート/クローズドバージョンを作成し、そこでセキュリティの問題にパッチを適用し、公開するのではなく、関連する開発者にのみ公開することでした。 これは「脆弱性ハンター」からの注目を集めることはありません。
「セキュリティトロール」にエネルギーを浪費しないでください
2番目の間違いは、脆弱性を公開したサイトの背後にある会社とやり取りしようとしたことでした。 それは時間とエネルギーの完全な浪費であり、脆弱性についての別の投稿に終わったより多くの敵意を引き起こしただけでした。 プラグインやテーマのユーザーを危険にさらす投稿の作成者に連絡する価値があるかどうかを判断するための良い指標は、投稿/ウェブサイト/会社の後ろに名前があるかどうかです。 彼らが代理人の後ろに隠れて不合理に行動している場合、あなたが彼らと感覚を話すことができる可能性は事実上ゼロです。
これが私のアドバイスです。サイレントモードに入り、脆弱性について知っておく必要のある人にのみ通知してください。 プラグイン/テーマの場合、それはあなたのユーザーです。 これは、ユーザーのメールを収集することの重要性を強調する良い機会でもあります。 ユーザーと非公開で通信する方法がない場合、セキュリティの問題について非公開でユーザーに通知する効果的な方法がありません。
インシデントの現状
SDKを使用している開発者の60%以上が、パッチを適用したバージョンにすでにアップグレードしています。 さらに、SDKには、同じWordPress Webサイトにインストールされている複数のFreemiusサポートプラグインまたはテーマが、製品の1つが既に更新されている場合に、最新バージョンのSDKを使用できるようにする特別なメカニズムが付属しています。 いいですね。
とはいえ、脆弱なサイトはまだたくさんあります。 そのため、脆弱性自体や影響を受ける製品に関する技術的な詳細については触れませんでした。 開発者に製品にパッチを適用し、ユーザーが安全なバージョンに更新できるようにする機会を提供したいと考えています。
WordPressプラグイン/テーマのセキュリティリスクを軽減する方法は?
セキュリティのバックグラウンドがない場合は、Googleの「ウェブセキュリティのベストプラクティス」をご覧ください。たくさんの記事やプラクティスが見つかります。 それらのいくつかを読んで、現代的で典型的な潜在的なリスクと間違いに注意してください。 開発およびテストプロセスでは、これらを念頭に置いてください。 もう1つの良い方法は、セキュリティ研究者を雇って定期的にセキュリティ監査を実施することです。 それは数百ドルの費用がかかります、しかしあなたがあなたの主な収入源としてあなたの製品に頼っているならば、それは簡単なことではありません。
残念ながら、私たちの場合のように、悪いことがまだ起こる可能性があります。 私たちは非常に強力なセキュリティのバックグラウンドを持っていますが、徹底的なコードレビューを実施し、HackerOneコミュニティの経験豊富なセキュリティ研究者と協力しています。 😔
これが発生した理由の1つは、脆弱なコードが実際にエッジケースをデバッグするために追加されたものであり、SDKのコア機能の一部ではないためだと思います。 したがって、ここに教訓がある場合は、実際のビジネスロジックの一部であるかどうかに関係なく、製品内のコードを同じように扱います。
要約
ソフトウェアの世界では、セキュリティの問題は避けられません。 私たち/あなたがそれを好むかどうかにかかわらず、いつかあなたのプラグインまたはテーマにセキュリティの問題が発生します。 問題は、コード、使用しているライブラリ/フレームワーク、予期しない結果を提供するWordPressコアメソッド、およびその他の多くのシナリオにある可能性があります。
それが起こったとき(私はそれが起こらないことを願っています)、ストレスをかけないで(私たちは間違いなくそうしました)、衝動的に行動します-それはより多くのダメージを与えるだけです。 方法論的な復旧計画を作成し、影響を受ける関係者に通知し、ユーザーがサイトを保護できるように支援します。 セキュリティの問題が発生することは誰もが知っています。さらに重要なのは、状況にどのように対処するかです。
とはいえ、Freemiusチーム全体を代表して、ご不便をおかけして申し訳ございません。週末を通して、この問題に関連するサポート、アドバイス、その他のサポートを提供します。 そして、私たちの新しいユーザーにとって、第一印象がどれほど重要であるかを私は知っています、そしてこれは間違いなく良いものではありません。 Freemiusにもう一度チャンスを与えてくれることを願っています。そして、時間の経過とともに、WordPressプラグインとテーマに提供されるすばらしい機能をご覧ください。