この記事は、CYBOZU SUMMER BLOG FES '24 (QA Engineer Stage) DAY 3の記事です。
こんにちは!開発本部のセキュリティチームであるCy-PSIRTに所属している小西です。
今回は、Cy-PSIRTが行っている弊社開発チームへのセキュリティ的な支援について紹介していこうと思います。 紹介に入る前にサイボウズのセキュリティチームの1つであるCy-PSIRTについて簡単に紹介します。
Cy-PSIRTとは
Cy-PSIRTとは、Cybozu inc. Product Security Incident Response Teamの略称です。サイボウズ製品のセキュリティを向上させるために活動しているチームです。
主にセキュリティテストによる脆弱性の検出や評価、ソフトウェア属性情報管理、脆弱性情報の公開といった業務に加えて脆弱性報奨金制度の運用業務なども行っています。
業務の詳細について興味がある方はCybozu Inside Outで公開されている「Cy-PSIRTの紹介」ブログをご覧ください。
blog.cybozu.io
Cy-PSIRTが行う開発チームへの支援活動について
今回は、製品セキュリティを向上させるためにCy-PSIRTが実施している開発チームへの支援活動について紹介していこうと思います。 Cy-PSIRTでは多くのセキュリティに関する支援を行っていますが、今回は下記の4つの支援に関して取り扱います。
- 支援1: 開発体制にあわせたセキュリティテストによる支援
- 支援2: セキュリティ情報の提供による支援
- 支援3: 設計時のセキュリティ支援
- 支援4: 緊急時の支援
支援1: 開発体制にあわせたセキュリティテストによる支援
弊社では、日夜新しい機能が続々と開発・リリースされています。 Cy-PSIRTでは新機能やアップデート部分に対するセキュリティテストを実施して脆弱性がないか確認を行っています。
テストの実施以外にセキュリティテストの対応フローやテスト方針についても開発チームと相談して検討しています。 検討が必要な理由は開発するチームによって開発体制やリリース頻度が異なるためです。 例えば、機能単位でリリースするチームと一定のスプリント単位でリリースを行うチームではそれぞれセキュリティテストが必要なタイミングが異なってきます。また、各開発チームで利用している技術や開発環境も違うためその点も考慮する必要があります。
対応フローやテスト方針は作成して終わりではなく、実施していく中で開発チームと調整しながら、より実際の開発体制に合うものに改善しています。
また、機能の実装前にセキュリティテストが必要な要件かを開発チーム側が把握できるような取り組みを実施したケースもあります。 このケースではCy-PSIRT側でセキュリティテストが必要と判断する機能やテストにかかる時間を記載したチェックシートを作成し、開発チームに共有しました。
開発チームは実装前の段階でシートを確認することで、セキュリティ的な観点について事前に把握できるのでセキュアな開発につながりました。 同時にセキュリティテストにかかる工数も事前に予測して計画を立てられるようになりました。
その他にもCy-PSIRTではセキュリティと開発のバランスを保つため、開発チームと定期的なコミュニケーションや自動検証ツールによるテストの高速化も実施しています。
支援2: セキュリティ情報の提供による支援
製品やフェーズごとに開発チームが必要とするセキュリティ情報について情報提供しています。
その1つとして新しい技術に対するセキュリティ面での調査や情報提供を行っています。 弊社の製品では新機能の開発の際に新しい技術やシステム構成が導入されることがあります。 新しい技術の導入は様々な機能の実現をサポートできますが、同時にセキュリティ事項について考慮する必要が出てきます。 そこで、Cy-PSIRTでは開発に用いられる新しい技術に対してセキュリティ面での技術調査を実施する場合があります。 調査では、技術に関するセキュリティ的に気をつける観点について情報収集を行っています。 収集した情報はチーム内で整理し、開発チームに共有しています。
共有の方法に関しては開発チームからの要望があれば勉強会の形式で実施する場合もあります。 過去にはフロントエンドで用いられる技術においてどのような脆弱性が発生するかやその注意点について共有する勉強会を実施しました。
また、Cy-PSIRTが脆弱性情報を入手した場合、開発チームがその脆弱性に対する対応方針を判断するための情報提供も行っています。 具体的には、取得した脆弱性情報に対してリスクの分析や評価を実施して、開発チームに脆弱性情報と併せて報告しています。 リスクの分析では報告された挙動についてどんなセキュリティ的な問題があるか検討を行っています。 そして、評価ではCVSSを利用して客観的にどれぐらい問題があるか計測し情報を提供しています。その他にも改修のために参考となる情報やアドバイスを提供する場合もあります。
支援3: 設計時のセキュリティ支援
Cy-PSIRTでは、開発チームからの依頼ベースで機能設計に関するセキュリティ支援を行っています。 開発チームから今後実装を考えている機能に対して相談を受け、早い段階でセキュリティ面でのサポートを実施しています。 サポート内容としては、相談内容に基づいてCy-PSIRT側でレビューや技術的な調査を行い、どのようなセキュリティリスクが考えられるかを洗い出し情報を提供しています。 また、開発チームと共にリスクを防止するためのセキュリティ対策やセキュアな設計について検討やアドバイスを行っています。
設計の段階で開発チームと協力することで早い段階でリスクに対応してもらい、セキュアな開発につなげています。
支援4: 緊急時の支援
Cy-PSIRTは、製品起因のインシデントハンドリング対応も行っています。 例えば、製品で利用しているOSSライブラリや製品の開発に利用しているサービスにおいてセキュリティに関する重大な問題が報告された場合に対応しています。
インシデントハンドリングではCy-PSIRTが中心となって事象に対する状況の管理や整理を行い、インシデントが収束に向かうように取り組んでいます。 具体的な対応としては、入手したセキュリティ情報に対して影響範囲や影響受ける製品の特定を行い、対象となる製品を担当しているチームに報告や調査依頼を実施しています。 調査の結果、影響があればインシデントの宣言を行い、収束するまで全体のハンドリング対応を行っています。
また、インシデント対応が円滑に進むようにインシデント対応のマニュアルやフローの作成、検討についても普段から行っています。 その他にもCy-PSIRTチームや開発チームのメンバーで定期的なインシデントハンドリングの訓練を実施してインシデントの発生に備える活動もしています。
おわりに
本記事では、Cy-PSIRTが行っている弊社開発チームへのセキュリティ的な支援活動について紹介しました。
Cy-PSIRTでは開発チームのセキュリティに関する支援を行うことで開発を円滑に進めてもらいつつ、製品セキュリティの向上に繋げています。
これらの支援活動を通してセキュリティに関わっていくことができるのは、開発とのつながりが深いユーザ企業のセキュリティチームならではの活動の1つかと思います。
もし、社内でのセキュリティ支援を通して製品セキュリティを向上させることに興味がある方がいらっしゃればCy-PSIRTへの参加をお待ちしております!