セキュリティ脆弱性への対応策
歴史を振り返る
2018 年 11 月 27 日、npm のセキュリティ脆弱性が発表され、直接的または間接的に event-stream パッケージに依存しているすべてのユーザーにアナウンスされました。それは、Copay ビットコインウォレットをインストールした場合のみ有効となり、その内容を盗もうとする、とても焦点を絞った標的型攻撃でした。
私たちのプロジェクトのうち、 interactive-examples と BoB の 2 つは、npm-run-all という npm パッケージに依存しており、さらにそのパッケージは event-stream パッケージに依存していました。
これは、スタッフが危険にさらされているだけでなく、これらのリポジトリーのいずれかをフォークしている人々も同様に影響を受けている可能性があることを意味しています。ありがたいことに、影響を受けたパッケージのメンテナーは迅速に対応し、この問題に対処するためのアップデートをリリースしてくれました。私たちはこれらのリポジトリーに対して Renovate bot を実行しているため、マージするためのプルリクエストが用意されていました。
しかし、これは問題の一端を解決したに過ぎません。私たちのユーザーには、まだ通知が必要でした。
取った対応
特に interactive-examples プロジェクトのコミュニティはかなり大きく、全員がアクティブというわけではありませんでしたが、それでも全員に連絡を取る方法が必要でした。最初の対応は、各リポジトリーに対して、問題の詳細を示す issue を開くものでした。
ユーザーは必ずしも積極的に issue を監視しているわけではないので、それだけでは十分ではありません。そこで、私たちは自分のプロジェクトのフォークをすべて見ていく必要がありました。
そして、これらのユーザーのユーザー名をすべてコピーし、上記の課題に対してコメントするなどしてプッシュしてみました。
これは、issue が受け取ったレスポンスから判断するととても効果的でしたが、放置するわけにはいきませんでした。次の手順は、開いているプルリクエストのそれぞれにコメントを投稿し、問題点と次のステップをユーザーに知らせることでした。これが私たちの回答の例です。
これで、私たちがリーチしたことと、npm やその他のチャンネルでこの問題が取り上げられたことで、ユーザーの安全を確保することができたと確信が持てました。
最終段階として、私たちは公式ツイッターアカウントからツイートし、この課題に対する認識を高めました。
終わりに
このような種類のインシデントは、今後、ほとんど発生しないことを期待します。しかし、万が一このような事態が起こった場合、上記は対応策の確かな指針を提供するものです。