Drupalは世界一安全なオープンソースCMSと言われており、世界各国の政府機関に採用された実績を持ちます。Drupalが安全である理由はさまざまにあるのですが、まず一番重要なものとしてセキュリティチームの存在が挙げられるかと思います。Drupalのセキュリティチームはコアやコントリビュートモジュールの品質を管理したり、脆弱性解決のディレクションを行ったり、開発者向けに教育を行う役割を果たしています。Drupalのように多様な人達が参加するオープンソースソフトウェアでも常に高い基準でセキュリティが保たれているのは彼らの働きのおかげと言っても過言ではありません。今回は彼らがどういう人々で、どのような仕事をしているのかを詳しく見てみたいと思います。

メンバーはどんな人達?

セキュリティチームはDrupalを生み出したドリスを含む、世界各国から集められた30〜40人の有志の開発者から成ります。多くは民間企業の開発者で、セキュリティ専門の仕事をしている開発者も何人かいます。また、大学のIT分野の研究者や、過去にアメリカ政府のようにセキュリティに厳しい公的機関でエンジニアとして働いた経験のある人もおり、経験豊富で知識のある人材が多く集まっている印象です。どのメンバーもDrupal歴は10年以上あり、Drupalコアやコントリビュートモジュールに数百〜数千コミットしてるのが普通です。またDrupalConでプレゼンテーションを行ったり、自著を出版した経験のある人も多く、彼らが選り抜きのエリート集団であることが伺えます。

セキュリティチームのメンバーのリスト(英語)(Drupal.orgでよく見かける顔がいっぱい!)
セキュリティチームの手続き

どういう基準でメンバーが選出されているの?

セキュリティチームのメンバーとして満たすべき条件には、以下のようなものがあります。

  • 少なくとも5つのコアの公開セキュリティイシューに取り組んだ経験がある
  • 少なくとも3つの非公開セキュリティイシューに取り組んだ経験がある
  • コアか使用頻度トップ30のモジュールの公開イシューのうち少なくとも30に取り組んだことがある
  • 実力を保証してくれるセキュリティチームのメンバーがいる

上記実績を持つ方であれば、セキュリティチームへの所属申請を行うことができます。申請後、現行のセキュリティイシューに対処して実力を証明するなどして、セキュリティチーム全員の承認を得ることができれば、晴れてメンバーの一員となることができます。

Drupalのセキュリティチームに入るには(英語)

どんな仕事をしてるの?

セキュリティのチームは主に以下のような仕事を行っています。

パッチの作成やレビュー

  • コアやコントリビュートモジュールのパッチを作成する
  • セキュリティチーム以外のメンバーが作成したパッチのレビューを行う

コントリビュートモジュールの品質管理

  • Vetted Roleの審査(モジュールコントリビューターの入門審査)のレビューをサポートする
  • Vetter Roleを通過した開発者の作成したリリースをセキュリティカバレッジ(セキュリティチームによるサポート対象)に含み、脆弱性が発見された場合に迅速に解決のためのディレクションを行うことを約束する

脆弱性の解決

  • Security.drupal.org(セキュリティチームしかアクセスできないサイト) に列挙されている脆弱性を解決するためのディレクションを行う
  • イシューについての情報やパッチのリリースをDrupal利用者に周知するためのセキュリティアドバイザリーを作成する

セキュリティに関する教育

  • Drupal関係のイベントでセキュリティのトピックについてプレゼンテーションを行う
  • セキュリティに関するブログを書く
  • Drupal.org ハンドブックのセキュリティに関するページをを編集する

セキュリティ向上のための情報共有

  • DrupalConで2年に1回開催されるミーティングに参加する
  • 外部のセキュリティ研究者からレポートを貰い、分析に役立てる

セキュリティチームの基本情報(英語)
セキュリティメンバーの仕事(英語)

どうやってイシューを解決してるの?

上で書いたように、Drupalのコアやコントリビュートモジュールで見つかった脆弱性を確実に解決できるようにディレクションを行うのもセキュリティチームの重要な仕事です。脆弱性はイシュー(課題)としてモジュールの使用者などから専用のフォームを通して内々に報告されますが、セキュリティチームはイシューの報告を受けると、以下のような流れでイシューに対処します。

  • 新しいイシューで報告されている脆弱性が本当に存在することを確かめる
  • イシューを確認してDrupalの全てのリリースに対しての影響を推定する
  • もし対処が必要なイシューであれば、コアやコントリビュートモジュールの管理者にそれを取り除くよう要請する
  • モジュールの管理者が新しいバージョンを作り、レビューし、テストし、新しいリリースを作成するのをサポートする
  • 今回見つかった脆弱性と新しいリリースを発表するセキュリティアドバイザリーを発行し、Drupal.orgやニュースレター、RSS、ソーシャルメディアなどでユーザーに通知する
  • 2週間アップデートがないイシューに対してアップデートを促す/自らアップデートを行う
  • 管理者が締め切りまでに問題を解決しなかった場合、該当プロジェクトを無効化することを勧めるアドバイザリーを発行し、Drupal.orgの該当プロジェクトをセキュリティカバレッジから外す

ちなみに、Drupalはオープンソースなので開発についての議論は誰からも読めるようになっていますが、セキュリティに関することは公に知らせる必要があるもの以外は基本的に関係者しかアクセスできないようになっています。

セキュリティチームにコンタクトを取るには

Drupalの公式スラックの#security-teamというチャンネルでセキュリティチームに直接質問することができます。筆者も過去にDrupalのセキュリティ審査について質問したことがありましたが、ほとんどの質問に数分〜20分くらいで返事をもらいました!一つの質問に複数人から回答をもらうこともあり、親切な人たちだなぁと感動しました。

おわりに

というわけで、今回はセキュリティチームの紹介をしました。Drupalのセキュリティはどのように維持されてるの?と疑問に思った人たちの参考になれば幸いです。開発者としては、このように活発なセキュリティチームがあるということはとてもありがたいことですね。