はじめに
こんにちは、PSIRTの田口です。 今回は、自動脆弱性診断ツール「AeyeScan」の導入とそれを活用するための取り組みによってサイボウズの脆弱性診断がどのように変わったのかをご紹介します。 背景となる課題、導入に向けた検討、そして実際の運用に至るまでの取り組みををまとめました。
サイボウズの脆弱性検出
まず、サイボウズが日頃どのように脆弱性検出に取り組んでいるかをご紹介します。 サイボウズが開発・提供する各製品に対して、PSIRTのテスターが製品ごとの特性に応じた脆弱性診断を内製で実施しています。 診断の実施タイミングや規模は製品ごとに異なりますが、各製品の開発体制やリリースプロセスに応じて柔軟に方針を定め、開発チームと連携しながら対応しています。
また、外部ベンダーによる脆弱性診断も定期的に実施しており、内製できていない領域も含め幅広い対象で診断を実施しています。 他にもサイボウズが実施している脆弱性報奨金制度(バグバウンティ)も活用することで、多角的な検出体制を構築しています。
脆弱性検出に限らず、製品に関わるセキュリティ支援を幅広くPSIRTが担当しており、サイボウズ製品全体のセキュリティ品質向上に取り組んでいます。 詳しくは以下の記事もご覧ください。
導入まで
導入に至る背景
PSIRTでは、各製品の開発チームが実装した内容に対して、必要に応じて脆弱性診断を都度実施しています。 セキュリティ上の影響が考えられる修正や機能追加等が行われた際には、影響範囲を洗い出し、想定される脆弱性について網羅的に診断を行います。 これまでは、Burp SuiteのIntruderなど一部の補助機能は使っていたものの、診断の大部分は手動で実施していました。
しかし、複数の製品が並行して開発されており、各製品に割けるテスターの人数や診断スケジュールに限りがある中で、 すべての項目を毎回手動で診断することは大きな負担となっていました。 こうした背景を踏まえ、脆弱性診断の効率化を見直すことになり、ツール導入の検討を行いました。
ツール選定
複数の製品でトライアルを実施し、比較検討のうえ「AeyeScan」を導入することに決定しました。 AeyeScanは、エーアイセキュリティラボ社が提供するクラウドベースの自動Webアプリケーション脆弱性診断ツールです。 詳細は以下の公式サイトをご覧ください。
決め手となったのは以下のようなポイントです。
- 設定の手間が少なく容易にスキャンを実行できる手軽さ
- スキャン単位が細かく指定でき、柔軟な運用が可能
- APIが充実しており、弊社の業務基盤であるkintoneと連携がしやすい
- ドキュメントが充実している
導入後
診断フローに組み込むための仕組みづくりと効率化
AeyeScanの導入にあたっては、ツールそのものの活用だけでなく、その運用を支える周辺の仕組みも含めて効率化・自動化を進めました。 実運用にうまく組み込めなければ、かえって新たな手間や作業が発生し、効率化の効果が薄れてしまうと考えたためです。 そのため、スキャン実行から結果の確認までを可能な限りスムーズに行えるような仕組みを整備しました。 全体像を以下の図でご紹介します。
テスターがAeyeScanでスキャンを実行すると、AWS上に構築した中間サーバがWebhookをトリガーとしてAeyeScanから結果を取得し、自動でkintoneアプリへ登録される仕組みです。 これにより、日常的に利用しているkintone上で通知を受け取り、診断結果を一元的に確認・管理することが可能です。 検出結果の確認やトリアージ(対応の要否判断)もすべてkintone上で完結できるように整備しており、結果の参照や他データとの連携もスムーズに行えます。 また、スキャン実行時に診断環境が最新の開発バージョンに更新されておらず手間となるケースがあったため、診断環境のバージョンを自動更新する仕組みも併せて構築しました。
チーム内での方針策定
自動診断をチームで適切に運用していくため、 社内で定めている診断項目とAeyeScanの対応範囲を照らし合わせ、自動化する項目と手動での確認を必須とする項目の分類を行いました。
- 自動化する診断項目:
- パラメータに対する入力チェックやHTTPヘッダの確認など、パターン化されツールで効率的に検出可能なもの
- 手動で対応する診断項目:
- アクセス制御やAI関連機能、製品特有の機能、特定の条件下でのみ発生する脆弱性など、仕様理解やコンテキストに基づく判断が求められるもの
AeyeScanで対応していることが確認できた診断項目については、基本的に自動診断を実施し、必要に応じて手動で追加確認を行う方針としています。加えて、製品ごとの状況に応じて各担当の判断で柔軟に調整できる運用としています。
運用
AeyeScanの運用においては、手動巡回機能を活用し、スキャン範囲をコンパクトに設定して小さい単位でテストを実施するスタイルを採っています。 これは、前述のとおり、実装内容に応じて都度診断を行うサイボウズの診断プロセスに適しているためです。 また、スキャン効率を高めるため以下のような工夫をしています。
- 診断対象外の画面はスキャン対象から除外
- PSIRT内で定めた方針に基づいたルールセットの作成・適用
スキャン対象画面や診断項目を必要なもののみに絞ることで、スキャン時間の短縮や結果確認の効率化を行い、全体としてスムーズな運用につなげています。
検出結果のトリアージ
検出結果は1件ずつ内容を確認し、それが有効な指摘か、対応が必要かを判断しています。
対応するメンバーによって判断に差が出ないよう、判断基準を明文化しています。
対応が必要と判断した場合は、手動で再現確認を行い、誤検知でないことを確認したうえで開発チームに報告します。
一方で、対応不要と判断した場合には、その理由を記録に残すことで、後に類似の検出があった際の参考にできるようにしています。
また、頻出の検知パターンについてはあらかじめ対応方針を定めることで、トリアージの効率化を図っています。
どう変化したか
AeyeScanの導入とその後の取り組みから、手動診断と自動診断の役割分担が明確になり、適切に組み合わせることで診断全体の効率が大きく向上しました。 定型的でパターン化される診断項目はAeyeScanに任せることで、短時間で多くのケースを網羅的に診断できるというツールの強みが活かされています。 一方で、ツールでカバーできない診断項目については、テスターが本来注力すべき領域として重点的に確認できるようになり、より効率的かつ効果的な診断が可能になりました。
また、製品に関する深い知識がなくてもスキャンを実行できるため、自身で担当していない製品でも診断作業を一部実施できるようになりました。 さらに、リリース前に必要な診断を実施した上で、機能単位やバージョン単位で回帰試験をまとめて自動実行するといった運用も可能になり、 診断効率と網羅性の両立という観点でも、柔軟な体制が実現できつつあると感じています。
今後の展望
ここからは個人としての展望になりますが、今後取り組みたいことを簡単にご紹介します。
現在、AeyeScanを利用していない時間帯も多くあるため、今後はその空き時間を活用して、自動巡回機能を用いた回帰試験の継続的な実施を計画しています。 また、現時点ではPSIRT中心でAeyeScanを運用していますが、今後はCIパイプラインへの組み込みなどを通じて、開発チーム側でも活用を進めていくことを一部の製品で検討中です。
さらに、現状手動で対応している診断項目についても、ツールを活用した効率化・高度化の可能性を模索していきたいと考えています。 診断業務の効率化が進むことで、他のセキュリティ領域への取り組みや、より高度な脆弱性検出・探究にリソースを充てる余地が生まれ、 結果として製品全体のセキュリティ品質向上につながると考えています。
おわりに
今回は、自動脆弱性診断ツール「AeyeScan」の導入背景と、脆弱性診断の効率化への取り組みをご紹介しました。 単にツールを導入するだけでなく、それを現場の運用に組み込み、チーム全体で活用していくための仕組みや方針を整えることで、診断業務の効率化を実現することができました。 今後、脆弱性診断の自動化・高度化はますます進んでいくと考えられますが、その中で限られたリソースをどこに注ぐべきかという視点が一層重要になってくると感じました。 より柔軟で持続可能な診断体制を築いていけるよう、引き続き改善や効率化に取り組んでいきたいと思います。
PSIRTでは一緒に働く仲間を募集中です!ご興味のある方は以下をご覧ください。