Close

アトラシアンの脆弱性管理方法


アトラシアンでのセキュリティの脆弱性の取り扱いに対する当社のアプローチ

ソフトウェア開発工程において、セキュリティの脆弱性はある程度避けられない課題といえるでしょう。とはいえ、アトラシアンでは、自社製品・サービスに生じうる脆弱性を重大度と頻度の両面から最小限に抑えられるよう、たゆまぬ努力を重ねています。

この目的を果たすため、アトラシアンでは脆弱性管理に自動および手動の両方のプロセスを組み合わせた多面的方法を採用しています。これは、脆弱性が「見過ごされて」発見が遅れるリスクを抑えるために最も効果的な方法であるとアトラシアンは考えます。

このガイドでは、アトラシアンの製品とインフラストラクチャの脆弱性管理の実践方法について概説します。また、最新のツール、手法、思考方法を取り入れながら常に進化することで、これからも継続して効果的に脆弱性に対処する方法についても説明します。

脆弱性の特定と解決プロセスの概要

アトラシアンには、あらゆるタイプの脆弱性を特定、追跡、解決するための系統的プロセスがあります。

継続的なアセット ディスカバリーと帰属

継続的な内部アセット ディスカバリー - アトラシアンは、AWSConfig を使用してすべての EC2 とロード バランサー AWS アセットの棚卸しを行い、それを正しい所有者に帰属させるため、自社構築システムを使用します。当社は 1 年分の資産、合計 5,000 - 6,000 万の資産を保有しています。

継続的な社外アセットディスカバリー - 社外領域の継続的なアセットディスカバリーとセキュリティ分析には、Assetnote を使用しています。

脆弱性の特定

当社では、最高クラスの幅広い脆弱性検出ツールを導入しています。アトラシアン製品・インフラストラクチャに対して定期的に自動スキャンを実行し、脆弱性を検出しています。例として、Atlassian Cloud および Server 製品、Docker アプリケーションイメージ、社内/サードパーティのアプリケーションおよびモバイルアプリケーション、当社のインフラストラクチャ (オンプレミスとクラウドの両方) が挙げられます。これらのツールによって自動でスキャンを行い、存在する脆弱性を特定します。以下にその一例をご紹介します。

  • ネットワークスキャン – 現時点では、脆弱性管理ツールとして主に Nexpose を使用し、アトラシアン環境全体でアクティブなサービス、オープンポート、実行されているアプリケーション、およびネットワークレベルに存在するあらゆる脆弱性を特定しています。
  • コンテナ イメージ スキャン – 各種アトラシアン アプリケーションのデプロイには Docker コンテナを使用します。本番環境や本番前環境へのデプロイ前には随時、完全なセキュリティ スキャンでコンテナ内容物の詳細な調査を実施します。これには Snyk と呼ばれるツールを使用します。詳細については、このページの後半で説明します。
  • オープンソースの依存関係スキャン – アトラシアンの開発者が使用する可能性のあるオープンソースまたはサードパーティのコードに存在する脆弱性を特定するには、SourceClear を使用します。詳細については、このガイドの後半で説明します。
  • AWS 構成モニタリング - Trend Micro Cloud One - Conformity を使用して、AWS 環境に確立されている基準について、継続的な構成モニタリングを実施します。

アトラシアンでは、常に最新の利用可能なツールを検討しており、脆弱性検出能力が強化されると判断した場合は、使用ツール一式に追加します。

また、自動スキャンに多彩な追加手段を組み合わせることで脆弱性を特定します。以下は主な例です。

バグ報奨金プログラム – バグ報奨金プログラムの実行に使用される Bugcrowd は、専門的で信頼性の高いコミュニティへのアクセスを提供します。このコミュニティを構成する多数のサーバー セキュリティ調査員によりアトラシアン製品が継続的にテストされ、脆弱性が発見された際には報告されます。バグ報奨金プログラムは、2018 年と 2019 年、業界随一との評価を受けています

お客様 & ユーザーレポート – アトラシアン製品のユーザーがバグに遭遇した場合は、アトラシアンサポートを経由していつでもバグを報告できます。アトラシアンは報告ユーザーと協力して、必要となる詳細情報を収集し、脆弱性を内部でフラグし、(脆弱性が本物であり、誤検出でないことを検証したのちに) 修正していきます。バグ報告者にはアトラシアンのスタッフも含まれ、アトラシアン製品内で見つけた (内部または外部的な) 課題を直接セキュリティチームに報告するか、サポートチケットを登録します。

外部ペネトレーションテスト - アトラシアンでは、高リスク製品・インフラストラクチャを対象に、専門的なセキュリティコンサルティング会社によるホワイトボックス型のコード支援ペネトレーションテストを実施しています。詳細は、「社外セキュリティテストに対する当社のアプローチ」をご覧ください。

アトラシアンの製品開発チーム - アトラシアンでは、一部のコードを対象に手動またはツールを使った精査を実施しています。また、製品開発チームと密接に連携して、チームの内部検出能力を高め、コード到達前に脆弱性を解決します。

アトラシアンのレッドチーム – アトラシアンのレッドチームは、アトラシアンのシステム、プロセスや環境内に潜む脆弱性の特定や悪用を試みる敵の役割を模倣し、こうした脆弱性の早期特定・対処に万全を期します。

脆弱性の追跡と解決

脆弱性管理プログラムの効率性と効果を最大化するために、アトラシアンでは、脆弱性特定プロセスを一元化した内部チケットおよびエスカレーション システムと統合しています。具体的には、脆弱性の特定経路 (アトラシアンのスキャン ツールまたは前述した他の手段) にかかわらず、脆弱性ごとに専用チケットを作成して、セキュリティ バグ修正ポリシーで公開している SLO に従い、関連する製品チームに割り当てて解決を図ります。

セキュリティ チームはこのプロセスを監督し、製品チームやインフラストラクチャ チームと連携の上、脆弱性の精度を確認し、修正に関する質問に回答して、すべての脆弱性をアトラシアンの SLO の規定に従って確実に解決します。

脆弱性の修正プログラムが開発されると、徹底的なテストが実施され、クラウド製品の場合はデプロイに向けて CI/CD パイプラインに組み込まれます。Server 製品および Data Center 製品の場合は修正プログラムが新規リリースに組み込まれ、アトラシアンの標準的なリリースのタイミングに合わせて他の修正プログラムと共に定期的にデプロイされます。スキャン ツールによる脆弱性チケットは、後続の再スキャンでその脆弱性が見つからなくなると自動的にクローズされます。手動での検索による脆弱性チケットは、本番環境に修正がデプロイされると、製品、インフラストラクチャ、またはセキュリティのチーム メンバーによってクローズされます。

開発プロセスでの脆弱性の防止

コンテナイメージスキャン

アトラシアンでは、Docker コンテナイメージを使用して、アプリケーションの大半をデプロイしています。Docker コンテナは、当社の製品が個々のマシン構成パラメーターに左右されずに実行できるよう、必要な関連システムのライブラリ、ツール、構成設定その他の属性から成る自己完結型のパッケージ環境を提供しています。このコンテナの抽象化レイヤーによってソフトウェアコードが基盤インフラストラクチャから分離されるため、当社の製品は異なるマシン間で問題なく機能するのです。

コンテナは多様な環境で使用可能なコードのデプロイを可能にするという点で、開発者やお客様に大きなメリットを提供しますが、イメージの内容が古い場合や、安全でないライブラリやコンポーネントから構成される場合は、セキュリティの脆弱性の原因となる可能性があります。

この弱点に対処するため、アトラシアンでは開発、ステージングまたは実稼働環境にデプロイされるすべてのコンテナを対象とする完全セキュリティ スキャニング プロセスを、CI/CD パイプラインに組み入れています。そのために使用しているのが、オープン ソース エンジンの Snyk です。Snyk により、開発者がデプロイするすべてのコンテナ イメージの細部検査を実行するための一連のツールが提供されます。こうした検査には、コンテナに含まれる多様なコンポーネント (オペレーティング システム、アプリケーション パッケージ、サードパーティのライブラリ、構成ファイルなど) を特定するための詳細な分析が含まれます。

オープンソースの依存関係

アトラシアン自体のコードに含まれる脆弱性の検出と修正も重要ですが、アトラシアンの製品とサービスは多くのオープンソースライブラリにも依存しています。そのため、使用しているライブラリの内容を把握し、最新のセキュリティバグ修正で更新されるようにすることも同様に重要です。そのために利用しているのが SourceClear と呼ばれるツールです。SourceClear は、ソフトウェアビルドにおける依存関係を特定したうえで、こうしたライブラリを既知のセキュリティ脆弱性のデータベースと比較できるスキャナー機能を備えています。

特定された脆弱性は、Snyk または SourceClear のいずれを経由する場合でも、このページで前述した脆弱性管理プロセスに従って、正式な Jira チケットから関連製品チームに自動的に登録されます。

脆弱性対策のためのその他イニシアチブ

このガイドではこれまで、主にアトラシアンが脆弱性を管理するために「バックエンド」で講じている手段、すなわち、当社の製品またはプラットフォームで特定される脆弱性への対応手順について説明してきました。しかし、アトラシアンはそもそもこうしたことが発生する頻度を下げようと常に努力しています。そのため、当社は「フロントエンド」である開発工程でも独自の対策を採り入れ、当社の製品がセキュリティを念頭に構築されるよう万全を期しています。

セキュリティチャンピオンプログラム

2017 年にアトラシアンは、「セキュリティチャンピオン」プログラムを立ち上げ、各製品・サービスチーム内にセキュリティリーダーを配置しました。チャンピオンを対象に、アプリケーションのセキュリティ脆弱性の理解・特定、および安全なコードの記述プロセスを学ぶ専門トレーニングも実施しています。このプログラムでは、重要なセキュリティメッセージをチームメンバーに広めると共に、中央セキュリティチームにセキュリティ上の課題を報告し、コミュニケーションを円滑化する責任を担う専属チャンピオンを各チームに配置することを最終的に目指します。

アトラシアンのセキュリティチャンピオンは、月に一度のペースで会合し、最新のセキュリティ上の課題や直面している課題と関連するツールや知識を共有し、すべてのチームがメリットを受けられるように工夫しています。最終的には、チャンピオンプログラムを踏み台として、社風におけるセキュリティの位置付けをさらに高めることを目指します。アトラシアンは、この種のアプローチを脆弱性最小化戦略の主軸としてとらえています。

製品セキュリティエンジニア

脆弱性管理を語るうえで、製品セキュリティエンジニアがバグの解消や解消手段の改善において果たす重要な役割の説明は不可欠です。

Atlassian の製品セキュリティ エンジニアは、新たに報告された脆弱性について最初の選別を行い、製品エンジニア チームと共同で、課題に対する最適な修正を特定します。当社の製品セキュリティ エンジニアは、アプリケーション セキュリティ分野のエキスパートであり、世界中の拠点に常駐しているため、必要に応じて当社の製品エンジニアと最も効果的な共同作業が可能です。

アトラシアンのセキュリティエンジニアは、担当製品のセキュリティ管理のために先見性と即応性の両方が求められる役割を兼務します。以下に主な例を示します。

  • 新たに台頭しつつあるリスクの最新脅威モデルの検討と分析
  • 新機能のセキュリティの検討と分析
  • 手作業でのコードの見直し
  • ペネトレーションテストの実施
  • プラットフォームとアーキテクチャの見直し
  • プロジェクト関連の主要活動の追跡、および必要に応じてガイダンスを提供
  • バグ報奨金プログラムを通じた、報告された問題に対する選別、申請、報償付与、迅速な解決
  • 新規自動化プログラムの記述および既存自動化プログラムとツールの保守による、対応範囲と効率性の最大化

セキュリティスコアカード

アトラシアンでは、本ガイドで説明した各システムからの収集データを基に、チームと製品の基準点を相互に定めることによって、改善分野を積極的に特定できます。

概要

アトラシアンでは、製品とプラットフォーム全体にわたる脆弱性管理で多面的アプローチを採用しています。このアプローチでは、最高クラスのスキャンツール、当社のバグ報奨金プログラム、常時進化しているその他の多様なメカニズムを組み合わせ、早急に脆弱性を特定・解決し、根本的に脆弱性を少なくして、発見頻度が最小化されるように万全の体制を整えています。

詳細情報

このガイド内でも触れたように、さまざまなリソースから脆弱性管理やセキュリティ全般に対するアトラシアンのアプローチについて詳細な情報を得られます。

このページで言及される脆弱性とは、「バグ」と同義ととらえることができます。別ページ「Our Approach to Security Testing (アトラシアンのセキュリティ テスト方法)」では「バグ」という用語を使用しています。