- 課題
- 増え続けるプロダクトの診断要望に対し、社内リソースの不足と外部ベンダーとの調整に課題を抱えていた
- 導入
- 細かな設定が不要で利用が容易な点を評価し、導入を決定
- 効果
- プロダクト全体の網羅的な診断に貢献。セキュリティ品質の客観性を高め、外部にも明確に提示できるようになった
背景と課題
freeeは「スモールビジネスを、世界の主役に。」というミッションを掲げ、クラウド型会計ソフト「freee会計」を筆頭に、人事労務や販売管理など、企業のバックオフィス業務を効率化するSaaS型クラウドサービスを幅広く開発、提供している。
同社のPSIRT(Product Security Incident Response Team)は、開発組織と密接に連携しながら、脆弱性診断やペネトレーションテストを実施している。これにより、freeeが提供する各種プロダクトのセキュリティを確認し、継続的に向上させる役割を担っている。特に、レッドチームが攻撃者の視点に立って脆弱性を発見し、ブルーチームと連携して課題の早期発見と対応に努めるセキュリティ体制を築いてきた。
そしてPSIRTは、開発者にとっての「壁」ではなく、よりよいプロダクトを提供するための仲間やパートナーであることを常に心がけているという。

「freeeでは “ユーザーにとって本質的な価値があると自信を持っていえることをする” ことを社内で『マジ価値』という言葉で表現しているのですが、その言葉やfreeeのカルチャーに象徴されるように、組織全体でセキュリティ向上を実現し、本質的に価値あるプロダクトを提供できるように、という姿勢で取り組んでいます」(同社PSIRT、越智郁氏)
freeeが提供する複数のSaaSプロダクトは、一般的なWebサービスと同様に、頻繁な機能追加や修正が行われている。PSIRTでは、それらがリリースされるたびに、小さな単位で診断を実施し、脆弱性を検出した上でデプロイしていくサイクルを確立することを目指してきた。
しかし、外部のセキュリティベンダーに診断を定期的に依頼したり、内部で手作業――量をこなすというメンバーの「筋肉」で対処する従来のやり方では、徐々に限界が見え始めていた。
「開発サイクルが速い一方で、ベンダーへ依頼する場合はスケジュール調整に手間取り、小回りが利かないことがありました。内部リソースにも限りがあります。この課題とどう向き合うか、いつも考えていました。」(越智氏)
ソリューションの選定
Webアプリケーションの脆弱性は、コードに何らかの改修が加わったタイミングで入り込むことが多い。そのため、より良いプロダクトを目指す上では、改修のタイミングで脆弱性診断を行うのが望ましい。さらにリソースの関係から、診断チームの人手に頼らず自動で診断を実施するのが理想的だった。
そこでまず、オープンソースの「OWASP ZAP」をベースに診断ツールを自作し、CI/CDサイクルに組み込む方法を検討した。しかし実際に試してみると、誤検知の多さに悩まされたという。
「GitHubのCodeQLを導入してSASTを実施するとともに、OWASP ZAPを用いたDASTの結果をSARIF形式で出力し、開発者がDependabotのアラートなどと共にGitHub上で一元的に確認し、トリアージできる仕組みを想定していました。しかしDASTの誤検知結果が画面を埋め尽くすようになってしまい、開発者からも『どうしたらいいでしょうか』といった声が寄せられてしまいました」(同PSIRT、山下智也氏)
freeeのプロダクトに合わせて診断ルールをチューニングすれば誤検知は減らせるものの、その分メンテナンスコストが高くついてしまう。より良い解決策を模索し、情報収集を進める中で見つけたのが、Interop Tokyoに出展していたAeyeScanだった。

「将来的には自分たちの手を離れ、開発者自身に診断を実施してもらいたいと考えていました。そのため、導入が容易であることを重視しました。
また、一般的に診断を実施する際は事前の設定作業が必要となり、それが担当者にとって大きな負荷ですが、その点AeyeScanはAPIごとに細かく設定を行う必要がなく、内蔵されているブラウザで診断対象の画面を操作すれば自動でセットアップが終わります。他のツールと比較し、とても楽に設定できました。」(同PSIRT、臼井雄亮氏)
およそ2週間のトライアルでは、検証用の環境に対して診断を行い、脆弱性をきちんと検知した一方で、自作ツールに比べて誤検知が半分以下であることが確認できた。また、ユーザーインターフェースを持たないAPIに対する診断にも対応している点を高く評価し、AeyeScanの導入を決定した。
導入効果
freeeは2024年8月からAeyeScanの本格導入を開始した。
サービスは一層の拡張を迎え、ますます多くの診断依頼が寄せられるようになった。当初想定していた「開発者にリリース単位で診断してもらう」については、PSIRTの内製診断体制がより充実していったこともあり、さまざまな開発体制の開発者に個別に導入の案内をするよりも、引き続きPSIRT側で対応した方が良いと判断した。AeyeScanは運用を切り替え、freee会計をはじめとする主要プロダクトに対して定期的に全体診断を行うという、より網羅性を重視した運用へとした。
導入効果としてまず挙げられるのが、外部ベンダーに診断を依頼していた場合に比べ、診断期間を大幅に短縮できた点だ。
「外部に依頼する、特にfreeeの大小様々なプロダクトの診断を依頼するとなると、調整含め数ヶ月はかかりますが、AeyeScanではこのプロダクトを診断したい、となったら即実行できます。数ヶ月のものが数週間程度で終わり、迅速に診断できるようになりました」(越智氏)
また、顧客に対し、サードパーティのツールを用いて客観的な診断を実施していることを示し、freeeのセキュリティに関する説得力を高められた点も、大きな利点だと感じている。
機密情報や個人情報を預かるfreeeでは、「脆弱性診断は実施しているか」といった項目を含むセキュリティチェックシートの提出を求められる場面が少なくない。

「頑張って診断していても、自社内製の診断となると客観性を示しにくい部分がありました。AeyeScanでプロダクト全体をクロールするような形で診断し、レポートを出力することで、根拠を求められたときにすぐ対応ができるようになりました」(越智氏)
開発者とPSIRTの修正に向けたコミュニケーションでは、「危なそうだ」という推測ではなく、DASTによる診断で確実に脆弱性が存在することを示し、リスクに基づいた対話ができているとのこと。
「確実に脆弱性が刺さっており、その際のリクエストとレスポンスもわかりやすく表示されたレポートが上がってくるため、開発者にもわかりやすく、セキュリティチームがトリアージするにも有用なレポートだと評価しています」(山下氏)
手動診断では、リスク評価の上で診断対象外とする、優先順位が低い対象も出てくる。しかし、ツールを使えば網羅的にチェックが可能だ。
「クリティカルな脅威につながる問題ではなくても、ちょっとした指摘が上がってきた際、開発者も含めみんなで『ああ、そうだよね』と納得したこともありました。
リリースに合わせて細かく診断するという当初の想定とは異なり、全体を網羅的にチェックしていく形で活用することになりましたが、SASTのアプローチでは補えないところをDASTで補う、強力な味方と考えており、とても満足しています。」(越智氏)
今後の展望
freeeは引き続き、セキュリティを担保した形でプロダクトの価値を高めていく取り組みを多角的に実践していく。その一例が、AIエージェントを利用してソースコードの脆弱性診断を実施する「脆弱性診断 with AI エージェント」だ。
「数が多いところはAIエージェントを用いてソースコードを診断することで、量をこなすという、PSIRTメンバーの『筋肉』を使わずに解決しようと考えています。同時にサイト全体に対する診断では、第三者性があり、DASTで確実に脆弱性であるものを検出するAeyeScanが頼りになると考えています」(臼井氏)
攻撃者の視線から外部に露出しているリソースを洗い出す「ASM(アタックサーフェイスマネジメント)」のためのツール自作にも取り組んでいる。
「ASMで洗い出したもの一つひとつのソースコードを見ていくのは大変ですから、精度の高いDASTを素早くかけられるAeyeScanは協力なツールと考えています。」(山下氏)