プロダクト開発が高速化するなか、脆弱性対策は追いついているか?
DevOpsやアジャイル開発という言葉が浸透し、実践も進んできた。現在、開発の高速化はどのくらい進んでいるだろうか。Google「State of DevOps 2021」によると、SDO(Software delivery and operational)パフォーマンス評価で「高」以上に該当する企業は全体の66%を占める。これらの企業はデプロイの頻度が少なくとも月に1度、変更のリードタイム(コードをコミットしてから本番で正常に稼働するまでの時間)が1週間以下、インシデントや不具合発生からサービス復旧までの時間が1日未満とされる。

プロダクト開発をアジャイルやDevOpsという手法を通じて高速化するなか、新しい脆弱性にも対応していく必要がある。記憶に新しいところだと、Log4jやArgoCDの脆弱性が話題になった。慌てて対応したシステム担当者も多いことだろう。脆弱性は対応せずに放置していると、攻撃されてしまいかねない。ここ1年で見ても、脆弱性を攻撃されたことから情報漏えいに繋がったインシデントが後を絶たない。
スリーシェイク 手塚氏は対策として、何らかのセキュリティ対策を導入することや脆弱性診断を挙げた。0day攻撃に対しては、パッチを当てるまでの短い期間はWAFなどでパッチの提供まで時間を稼ぎ、パッチ提供後は速やかに検証を行ってパッチの適用を行う必要がある。
XSSやLog4jのようなpayloadを難読化しやすいものに関しては、多くのWAFでbypassができ、またWAF自体を迂回できるケースもあるため、脆弱性の対策としてWAFを利用することは非常に危険と考えている。
WAFは攻撃者の診断や調査の難易度を上げるため、緊急時の一時的な対策としてのみ利用するべきである。そのため手塚氏は「サイト自体の弱点(脆弱性)をなくし、堅牢なものにすることが重要」と述べる。
後者の脆弱性診断も欠かせない。かつてのウォーターフォール型開発ならリリース直前程度にしかやらなかったかもしれないが、昨今では大きな機能アップデートリリース時に、あるいは一定期間おきの実施が多いのではないだろうか。冒頭で述べたように、今では半数以上の企業が高頻度でリリースしている。もしかしたら脆弱性診断から次の脆弱性診断までの間に細かなリリースもあるのではないだろうか。そうなると脆弱性診断をしてから次の脆弱性診断をするまでの間に隙ができてしまう。高頻度で脆弱性診断をしたくても人員が限られてしまってできないか、費用が高額で諦めているケースもあるだろう。
開発を高速化するなら、脆弱性対策も追随して高速化していく必要がある。手塚氏は解決策として「継続的セキュリティ対策」というアプローチを提案する。発想としてはDevSecOpsに近い。開発プロセスには企画、設計、実装、テスト、リリースがあり、このライフサイクルを高速に回していくものになる。

脆弱性が混入してしまいがちなタイミングは企画・設計、および実装だ。脆弱性の発見や修正は、後のプロセスでいくつかの方法がある。設計段階ならセキュアコーディング、実装段階ならSAST(静的アプリケーション セキュリティ テスト:Static Application Security Testing)、テスト段階ならDAST(動的アプリケーション セキュリティ テスト:Dynamic Application Security Testing)やIAST(インタラクティブ アプリケーション セキュリティ テスト:Interactive Application Security Testing)など、リリース前なら脆弱性診断がある。
また利用しているOSSに既知の脆弱性がないか管理するにはSCA(Software Composition Analysis)もある。コンテナを用いているならコンテナイメージの脆弱性スキャン(Trivyなど)、いずれかのクラウドサービスを用いているなら設定をアセスメントするためのCSPM(クラウドセキュリティの状態管理:Cloud Security Posture Management)も有効になるだろう。
こうした各種ツールはCI/CDに組み込むことで、開発と同時に脆弱性の発見と改修を継続的に実行していくことが可能となる。高速開発にセキュリティ対策を追随させることになり、DevSecOpsの実現でもある。
プロダクト開発におけるセキュリティ人材不足を解消するには
現状ではプロダクト開発におけるセキュリティ対策には、これまで挙げたようなツールや解決策がある。しかしまだ課題は残る。「全体像を把握したうえで仕組みを構築する」「ツールを理解したうえでどれを採用するかを取捨選択する」「脆弱性の発見後にどのくらい早急に対応すべきかトリアージを判断する」など、こうしたことができる人材がいるのかという課題がまだ残っている。
この課題に対する解決策として手塚氏は「脆弱性診断の自動化と、実質的に無限となるリソースの活用」を掲げた。スリーシェイクのサービスでいうと、前者は手軽にできる脆弱性診断「Securify」、後者は4万人のバグハンターと連携するバグバウンティ(バグ報奨金制度)運用代行サービス「Bugty」がこれに当たる。
脆弱性診断ツール「Securify」では、専門知識がなくても直感的に診断できるため、自社のプロダクトに対して手軽に何度でも脆弱性診断を実施できるようになる。手塚氏は「脆弱性診断というのは、ある日脆弱性が発見されなかったとしても、翌日や数日後に発見される可能性はあります。そのため最低限のベースラインの担保のためにも高頻度で継続的に実施することが重要です」と強調する。
診断は3ステップで開始できる。新規プロジェクトを作成し、診断対象ドメインの所有を確認した後、診断対象のURLを登録ればいい。後は自動クローリングで脆弱性を診断する。診断後には分かりやすい診断結果が表示される。発見された脆弱性ごとに概要、根拠、該当箇所や修正方法の提案も表示される。診断結果は報告や共有のためにPDFファイルで出力したり、チャットツール(SlackやTeams)やメールで関係者に通知することも可能だ。

ダッシュボードでは現状のステータスを一目で確認できるようになっている。危険度ごとの脆弱性件数、脆弱性数の推移、定期実行をしているなら次回の実行日時などが可視化されている。実施可能な診断項目はSQLインジェクション、クロスサイトスクリプティング、CORSの設定不備、クリックジャッキングなど約900項目ある。
手塚氏は「Securifyで日次や週次で継続的に脆弱性の状況をモニタリングし、必要に応じて対応することで、セキュリティのベースライン品質担保を実現できます」と話す。
また「Bugty」はバグバウンティ運用代行サービスだ。バグバウンティはバグ報奨金制度とも言われており、プログラムやシステム内のバグを発見した時の報奨金を設定し、バグハンター(エシカルハッカーやホワイトハッカーなど)に公開する。もしバグハンターがバグや脆弱性を発見したら、企業は報告者に報奨金を支払う。この仕組みがバグバウンティだ。

一般的に企業がセキュリティ対策として実施するペネトレーションテストや脆弱性診断は限られた領域を対象としており、単発であったり少人数で実施されたりすることが多い。どんなに優秀な人材だとしても、少人数では限界がある。一方、バグバウンティでは世界中に多数いるバグハンターに協力してもらうため、それぞれの知見や経験から多角的かつ定常的にバグ調査が行われることになる。
海外では大手IT企業のMeta(旧Facebook)、Microsoft、Googleほか、米国国防総省、スターバックス、Uberなどが導入している。特に、高いセキュリティが求められる金融機関では導入事例が多い。またZoomはパンデミックで急速に利用者が増えると同時にセキュリティ強化の需要が高まり、2020年4月からバグバウンティを開始した。日本では任天堂、サイボウズ、ピクシブ、LINEなどが導入しているものの、海外に比べるとまだ多くはない。
導入企業がバグバウンティを実施しているのは必要性とコストが見合っているからだろう。どの企業も自社でいろいろと工夫しながら開発しているものの、バグや脆弱性の発見はなかなか難しい。特に自社内でやろうとすると目が行き届かない。発見できないままではいつか攻撃されてしまい、それで致命的あるいは多大な被害が生じてしまうこともある。そうした被害を未然に防げるなら、報奨金のほうが安上がりという考えだ。実際、Googleではバグバウンティ開始から10年で1万1000以上のバグが見つかり、2000人以上のバグハンターに合計3000万米ドルほどの報奨金を支払った。テックジャイアントもバグバウンティに頼っているのだ。
とはいえ、自前でバグバウンティを導入するとなると、世界中のバグハンターとコミュニケーションする言語力、報告されたバグの内容を理解するためのセキュリティ知見、適切な額の報奨金を設定する判断力などが必要になる。
そこでスリーシェイクではバグバウンティ運用代行「Bugty」を提供している。ヨーロッパのバグバウンティプラットフォーム「Intigriti」と提携しているため、4万人のバグハンターが味方になる。バグハンターとのコミュニケーションやトリアージはBugtyのセキュリティエンジニアが代行する。もちろん、利用企業への報告書は日本語で提供される。
最後に手塚氏は次のように述べた。「ビジネススピードの変化に応じるために開発の高速化が重要になる一方、セキュリティ対策も避けては通れません。継続的セキュリティを実現するためには脆弱性診断の自動化やバグバウンティのアプローチが有効になります。大事なのは脆弱性に向き合い続けることです。そうした姿勢がプロダクトの透明性、ひいてはお客様からの信頼獲得に繋がります」。
関連情報
スリーシェイクでは、定期セミナーを開催しています! イベントを見逃してしまった方やSecurify Scanを実際に触ってみたい方など、少しでも興味があれば是非ご参加ください! ※事前登録が必要です。
- セミナーの一覧はこちらから