Flatt Security Blog

株式会社Flatt Securityの公式ブログです。プロダクト開発やプロダクトセキュリティに関する技術的な知見・トレンドを伝える記事を発信しています。

株式会社Flatt Securityの公式ブログです。
プロダクト開発やプロダクトセキュリティに関する技術的な知見・トレンドを伝える記事を発信しています。

Flatt Securityの脆弱性診断において「ソースコード診断を無料付帯する」方針の解説

なにをするのか

こんにちは。執行役員兼プロフェッショナルサービス事業 CTOの志賀です。

この度、通常のWebアプリケーション診断の料金でホワイトボックス診断のメリットの多くを享受できるようにサービスを大幅に改良します!!

具体的には、ソースコードをご提供いただける場合において、診断員が選択的に参照することで診断スピードや報告書の品質向上といったメリットを受けられるといったものです。

結論としてはそれで終わりなのですが、結論に至るにあたっての自分の考えも書いてみることにします。

脆弱性診断における理想とのギャップ

自分はFlatt Securityに転職する前には、事業会社でセキュリティエンジニアとして脆弱性診断(セキュリティ診断)やセキュア開発コンサルティングをメインに行なっていました。そこでの脆弱性診断は、基本的に社内プロダクトのソースコードを読みながらリスクと修正方法を提示するといった形で行なっていました。

しかし、いざこの「第三者診断を提供する外部ベンダー」の業界に入ってみると、想像通りではありつつブラックボックスで行われる脆弱性診断がやはり主流であると感じました。

ブラックボックス診断では、どうしても検知できる問題や提案できる修正内容の質に限界があり、歯がゆい思いをしたこともありました。これまで数百万行程度のコード読んできて、コードリーディングには一定の自信がある自分だから感じることかもしれませんが、確かな課題が存在していると考えています。

リスクフォーカス型診断による学び

我々はリスクフォーカス型の診断提供を正式リリース前から長らく続けております。リスクフォーカス型プランをざっくり説明すると「診断の範囲や観点をあえて事前に明確にしない/絞らないことで調査の自由度を高め、ビジネスリスクの大きな脆弱性から効率的に発見していく」ものです。バグバウンティに近いとも言え、日本では比較的珍しい形式だと思います。

このプランを継続して提供していく上で意外な発見がありました。それは、我々から「ソースコードを提供した方が明らかにコストパフォーマンスが良い」と伝えた上でソースコードの提供を依頼した際には、想像よりかなり多くのお客様が快諾していただいたという事実です。

これまで、脆弱性診断という市場においてブラックボックス診断が主流であることについて、依頼者側が開示できない等の理由によるところが大きいと思っていましたが、どうやらそうではない可能性が高いことが分かってきました。

また、これも我々がリスクフォーカス型診断やお見積もり時のスコープで得た知見の1つでもありますが、脆弱性診断を行うにあたって網羅的に見るということは時としてやや「オーバースペック」になります。これは我々が普段提供しているホワイトボックス診断でも同じことが言え、必ず網羅的にコードを読み込むという行為が本当にニーズに沿っているのかということにはかなりの疑問が生じていました。

選択的なホワイトボックス診断の適用

我々はホワイトボックス診断という名称で、コードを読むことによる調査を主体とするプランも提供しています。

ホワイトボックス診断を網羅的に行うにあたり、ある部分のコードを読んで理解するためには関連する他の部分のコードも読み込む必要があり、「ここだけ読めば良い」というような要望に対して適切な工数の見積もりが難しい状態にありました。そのため、ホワイトボックス診断サービスはリリース以降約2年もの間、スコープの提案があまり改善できないままに提供されてきました。

ただし、先ほど「ソースコードを提供した方が明らかにコストパフォーマンスが良い」と記載したところからも分かるように、基本的には選択的にコードを読むケースではシンプルなブラックボックス診断よりも効率がかなり良くなる傾向にあります。

例えば「認可制御の不備」を1つ取っても、共通の処理で全て認可処理を実装しているという開発者の方は多いのではないでしょうか。そういった「パターン化された処理」こそホワイトボックス診断の方が効率的かつ精度が出る部分になります。

こういった部分に絞って選択的にホワイトボックス診断を実施することは、我々にとってもお客様にとっても、基本的にはメリットしかないはずであるという考えに至るようになりました。

開発者のための脆弱性診断を提供するということ

自分がプロダクト開発者のために脆弱性診断を提供するにあたって重要だと考えている点は大きく3つです。

  1. コスト(効率)
  2. 脆弱性発見の精度
  3. 成果物(報告書)の品質

まず、開発者に限らず重要な点としてコスト面がありますが、冒頭に述べたとおり、今回の改善では料金に変更を加えていないというところが大きなポイントです。一般的にホワイトボックス診断(グラスボックス診断)ではソースコードへの深い理解が必要になり、対応できる人材やかかる工数からコストが大きくなりがちです。

また、工数が大きくなるということは納期にも影響を与えることとなりますが、脆弱性診断のご依頼をいただく場合においては、リリース前に確認したいという声はやはり多い状況です。開発スケジュールに余裕があれば良いのですが、修正対応も考えるとやはり診断可能な状態になってからレポートを受領するまでのスピードが重要となります。

しかし、今回我々が提供するのは、選択的にホワイトボックス診断を行うことで効率及び成果物の質(後述)に重きを置く形となります。そのような形で提供することで、コストを上げることなくこれまで以上の品質のサービスを提供できるのでは無いかと考えました。

次に精度に関する話ですが、これは非常にシンプルです。網羅型診断と言えど100%全ての脆弱性を洗い出すというのは難しいですが、単純に情報量が多ければ洗い出しの精度も高くなります。また、Flatt Security Developers' Quiz #5 で出題した問題のように「ソースコードを見なければ検出が難しい脆弱性がある」という事実も、脆弱性発見の精度はホワイトボックス診断の方が高いことを示しています。

最後に、成果物(報告書)の品質に関わるポイントです。ここは自分としては最も気にかけているポイントとなります。

報告書を読む開発者は、

  1. 報告書の内容を正しく理解し
  2. 修正方針を正しく理解し
  3. 修正方針を正しく実装する

ということを行う必要がありますが、特に3に関してミスが生じやすいです。

これは、「XXXが出来ないように修正してください」という抽象的な提案に対して、「XXXが出来ないようにするには何をどう実装したら良いか」という具体的な解決策を講じることに一定の難しさがあるからです。

しかし、ブラックボックス診断の場合、脆弱性の原因や修正点はどうしても抽象的に伝えざるを得ません。一方でホワイトボックス診断の場合、原因箇所をコードレベルで特定することが可能なケースが出てくるため、「どのコードのどこを変更すれば良いのか」といったレベルで具体的に修正方針を伝えられるケースがあります。

修正方針がすぐに分かり、修正漏れが発生しづらいということは先ほどのリリースまでのスピード感にも関わってきますし、シンプルに開発者の工数という意味でもメリットが大きいと考えています。

Flatt Securityだからできること

Flatt Securityのプロフェッショナルサービス事業部では、基本的に診断管理サービス(ORCAs)や診断の補助機能(権限マトリクスの網羅スキャンツールや/PoC自動生成ツール/gRPC-web対応/etc)、社内の便利ツール(勤怠管理など)やデータ分析基盤など事業に必要なあらゆるものを脆弱性診断員が実装しています。

「プロダクト開発者のためのセキュリティサービス」を謳っている以上、ここは完全には分業化していない部分です。これにより、診断員がただ外から入出力を監視するだけではなく、生きたソースコードに触れ続けている状態を維持できていると考えています。そんな我々だからこそ今回のように提供できる価値があると考え、サービスの改善を行いました。

既存の脆弱性診断への影響

今回のアップデートは、あくまで既存の脆弱性診断に無償のオプションがついたものとお考えいただければ幸いです。そのため、既存のブラックボックス診断も引き続き同様に提供いたします。また、ソースコードを網羅的に診断したいケースでは引き続き既存のホワイトボックス診断を推奨いたします。

「ソースコードを網羅して欲しいわけでは無いんだけど、コード提供は出来るから上記のようなメリットを享受したい」と考えていただける場合には是非ご検討ください。また、API単位での網羅性も不要である場合にはリスクフォーカス型診断もご検討ください。

よくある質問

ホワイトボックス診断ってSASTのことですか?

大まかには同義と考えて良いです。しかし、SASTツールを用いた診断と弊社のホワイトボックス診断のように手動で行われる診断は異なります。

SASTツールを用いた検査では、基本的には機械的に脆弱性と判別できるもののみが検出されます。しかし網羅的に脆弱性を検出するには複雑なサービスロジックを理解する必要があるため、コードパターンから機械的に検出可能な範囲には限界があります。

リスクフォーカス型プランって具体的に何が強みですか?

深刻な脆弱性を見つける上で一般的な診断よりもコストパフォーマンス(時間・費用)が圧倒的に高く、短期間で結果を得ることで次のアクションを策定しやすくなります。また、大規模な診断対象でも全体を対象に診断を行うことができるメリットがあります。詳細はリスクフォーカス型プランを参照してください

終わりに

今回の方針の発表に合わせてサービス紹介ページも一部リニューアルしています。ぜひご覧ください。

下記バナーより料金に関する資料もダウンロード可能です。

また、お客様のシステムにソースコードレベルで深く向き合い、自らの糧としつつ本質的な価値を提供していきたいセキュリティエンジニアを絶賛募集中です!以下の採用情報ページよりカジュアル面談のお申し込みが可能です。このブログを見たとお伝えいただければ、自分が対応させていただきます。お気軽にご連絡ください。

では、ここまでお読みいただきありがとうございました。