オープンソースの脆弱性とセキュリティ:MicrosoftのJeff McAffer氏に聞く
Hayley Denbraver
2019年11月20日
0 分で読めます2019年も終わりに近づいてきました。ポッドキャスト「The Secure Developer」の素晴らしいエピソードをいくつか振り返ります。最初の記事はこちら。
The Secure Developer Podcastは、ベンダーに依存しないセキュリティ教育に特化したコミュニティ、MyDevSecOpsの一部です。以前はThe Secure Developerとしても知られていたこのコミュニティは、Slackグループやオンラインイベントを通じてバーチャルに、また世界各地で開催されるDevSecConイベントで対面形式で交流しています。
ゲストについて
Jeff McAffer氏は、Microsoftのオープンソースプログラムオフィスのディレクターです。同氏は同オフィスを率い、Microsoftがオープンソースに対する見方を変えている中、社内全体でポリシー、プロセス、ツール、文化の変革を推進しています。最近、The Secure Developerポッドキャストに出演し、次のテーマについて話してくれました。
セキュリティプロセスの効率化
脆弱性管理
オープンソースの管理など
今回は、Jeff氏との対談のハイライトをお届けします。
プロセスの効率化
Jeff氏のチームは12名で、「排除、自動化、委任」をモットーに、Microsoftのオープンソースプロセスの効率化に取り組んできました。その意味を見てみましょう。
排除:可能であれば、チームはポリシーや質問、障壁を特定し、解消します。
自動化:チームは、データやコンテキストを取り込んで回答を出せる、高度に自動化されたポリシーを作成します。
委任:外部からの意見が必要なリスクをチームが特定した場合は、弁護士やビジネスに精通したチームメンバーなど、関連する専門知識を持つ第三者に委任します。
Jeff氏によると、このワークフローを適用し、申請・承認モデルから登録・レビューのモデルへ移行したことで、「ビルドシステムとの連携、自動化されたポリシー、そして質の高いデータにより、現在ではオープンソースの利用の約99%が自動的に検出され、人手を介さずにポリシーエンジンを通過するようになりました」とのことです。
システムを可能な限り自動化する努力をしても、ツールは完璧ではありません。Jeff氏の言葉を借りれば、人間は人間であり、ツールはツールだからです。そのため、発生する可能性のある脆弱性に対処できるよう、セキュリティ計画をあらかじめ用意しておくことが重要です。
脆弱性への対応
Microsoftのセキュリティへの取り組みには、2つの異なる段階があります。
開発中:最初の段階では、開発中のセキュリティコンポーネントに重点を置きます。セキュリティやライセンスに問題のあるコンポーネントが追加されると、フラグが付けられてチームに通知され、対応を開始できます。
インシデント対応:深刻度の高い脆弱性が公開された場合は、セキュリティインシデント対応チームに引き継がれ、入手可能な情報に基づいて判断が下されます。警告を発するかどうかは、SLAの定義によって決まります。
この2つの段階で、ほとんどのユースケースに対応できます。しかしJeff氏によると、「どのような評価情報があればもっとよいのか。ユーザーとして、自分が脆弱な状態かどうかをどうすれば判断できるのか」と考えることにも意味があります。Snykもこの問いに賛同します(当社のツールを使えば、依存関係に含まれる脆弱性を常に特定できます)。このアプローチにより、企業は脆弱性の管理について全面的に透明性を保ち、その取り組みの成果を示すことができます。
標準的なCDEやその他の方法を通じて脆弱性を積極的に報告することは、オープンソースコミュニティ全体に対する責任ある敬意ある行動です。これは、オープンソースのメンテナーとして責任を持つことの一環です。オープンソースコンポーネントを利用する場合、Jeff氏は、コードを配布する際に関連する脆弱性を追跡・報告し、コンポーネントに責任を持つことを推奨しています。
オープンソースをより適切に管理する
同様に、脆弱性の特定を支援する取り組みと並行して、Microsoftはライセンスデータのクラウドソーシングを支援するため、ClearlyDefined.ioを立ち上げました。このコミュニティでは、追跡が難しいライセンスや著作権者の情報に注釈を付け、常に最新の情報を維持できるようにしています。
ClearlyDefinedの情報は、他のオープンソースへの貢献と同様にレビューされ、その後オープンソースコンポーネントの定義に統合されます。理想的には、元のコンポーネントに反映することで、今後のバージョンがさらに「明確に定義」されるようにします。
Jeff氏は次のように話してくれました。「多くの人は今でも、『オープンソースだから、ただ持ってきて使えばいい。それだけだ』と思っています。しかし、これは自分のコードと同じように扱う必要があります。自分ではコードを書かないとしても、プログラミング言語を知らないとしても、自分のシステムの一部として扱わなければなりません。そのセキュリティに気を配り、開発チームやプロジェクトチームと連携して、『一緒にどうすればよいものにできるか。誰もが安全に利用できるよう、どうすれば安全なプロジェクトにできるか』を話し合う必要があります。」私たちも、オープンソースを適切に管理するというこの考え方を全面的に支持します。
MyDevSecOpsは、Jeff McAffer氏のような素晴らしいスピーカーを、オンラインセッションやポッドキャスト「The Secure Developer」にお迎えしています。セキュリティのあらゆる側面について詳しく知りたい方は、ぜひ コミュニティに参加してください。
