「プロダクトセキュリティの主な役割は、プロダクトセキュリティのコンサルティング、セキュリティデザインのレビューや脅威のモデリング、アプリケーションセキュリティのテスティング、脆弱(ぜいじゃく)性の管理および報告窓口の運用、プロダクトセキュリティツールの開発・運用です。大事にしている考え方としては、まずシステム開発の上流でセキュリティを組み込むシフトレフトがあります。開発の早い段階から早期確認、定期確認を行います。また、開発ライフサイクルを強化し、統制を網羅的に担保するためにゴールデンパスの導入も進めています。さらに、開発者の摩擦を最小限にするため、日常のワークフローへのセキュリティの埋め込みを意識し、従業員中心設計や、手動なプロセスをなくして早期かつ頻繁に自動化するGRC(Governance Risk and Compliance)エンジニアリングに基づいた自動化にも力を入れています」
では、こうしたシフトレフトやゴールデンパス、従業員中心設計などの考え方はどのようにアプリケーション開発に組み込まれているのか。メルカリでは開発ライフサイクルの全体を通して、要件定義からリリースまで具体的なセキュリティ対策を実施している。具体的には、セキュアな要件と設計、セキュアコーディング、継続的ビルド/インテグレーション/テスト、継続的デリバリー/デプロイメント、ランタイムの防御と監視などだ。このうち、要件定義やコーディング、デリバリーに関わるセキュリティ対策について、SCA(ソフトウェア構成分析)、SAST(静的アプリケーションセキュリティテスト)、DAST(動的アプリケーションセキュリティテスト)、脅威モデリング、セキュリティチャンピオン、ダッシュボード可視化の取り組みを詳しく解説した。
SCA(ソフトウェア構成分析)は、サードパーティーやオープンソースのコンポーネントを特定し、コンポーネントの脆弱性やライセンスを評価するために行っている。また、ソフトウェアサプライチェーンの可視性を高め、セキュリティとコンプライアンスのリスク軽減にもつなげている。
「メルカリにはサプライチェーン攻撃を受けた経験があります。Codecovというコードカバレッジツールが第三者により不正アクセスを受け、Codecovに接続するCI環境にある認証情報が流出、ソースコードの一部への不正アクセスが起こりました。そこでソフトウェアサプライチェーンのセキュリティを強化するためSLSA(Supply-chain Levels for Software Artifacts)フレームワークを導入しました。SLSAによる評価で、サプライチェーン攻撃のリスクを大幅に軽減できるようになりました」
SASTは、アプリケーションのソースコードを解析し、潜在的な脆弱性を検出するものだが、メルカリでは、開発ライフサイクルの早期段階で、SQLインジェクションやクロスサイトスクリプティングなどの一般的な脆弱性を特定し、修正コストを削減している。また、自動化による効率的なテストで開発者の負担を軽減し、セキュリティのベストプラクティスを促進し、コード品質の向上を心掛けている。
「SASTには誤検知とノイズの課題や、対応する全ての脆弱性をカバーできないという課題もあります。また、ツールや学習コスト、運用コストもかかります。そこでメルカリではGitHub Advanced SecurityのCodeQLをメインのツールとし、開発ワークフローに組み込みやすいものを選んでいます」
DASTはアプリケーションの実行中に脆弱性を検出するものだが、開発の初期段階では使用が難しい、DASTだけでは全ての脆弱性をカバーできない、精度向上と開発者の負担軽減が難しい、テスト実行に時間がかかるなどの課題がある。
「DASTをどのようなサービスに実施するかを特定するために、ASM(アタックサーフェス管理)が重要になってきます。ASMは潜在的な攻撃経路を特定・管理するものですが、攻撃対象領域は常に変化することや、組織のシステム全体の可視化が難しく、IaC(Infrastructure as Code)では限界があります。これらの課題を克服するために、継続的な監視と評価を自動化する社内ツールを開発し、各部署で協力する体制を敷いています」
ランサムウェアなどの高度化する脅威については、WAF(Web Application Firewall)によって防御している。WAFでは過検知や誤検知、検知ロジックの更新、運用管理コスト、ログ監視・分析コストなどが課題になるが、プラットフォームチームのネットワーク担当者と協力し、運用負荷を下げながら実施している。
「近年は、暗号化だけでなく、アプリケーションに負荷をかけて継続性を奪う、システム可用性標的型のランサムウェア攻撃も増えています。このためクラウドネイティブな環境でスケールアップするなど、WAFの可用性を担保することも重要になっています」
脅威モデリングは、システムに対する潜在的な脅威を特定し評価するプロセスであり、今後起こり得る脅威に対するシステムの脆弱性を特定する狙いがある。メルカリではSTRIDE/DREADモデルを使用しており、STRIDEは潜在的な脅威の特定に、DREADは特定された脅威を評価するためにそれぞれ使用している。
「メルカリでは5つのステップで脅威モデリングを実践しています。『Mermaidを使用したモデル作成』『開発チームとのブレーンストーミング』『有効なイシューの特定(STRIDE)』『リスク評価・分析の実施(DREAD)』『イシューへの対応』です。近年は、セキュリティだけではなく、プライバシーについての脅威モデリングやプライバシー影響調査(PIA)も求められます。プライバシー侵害の定義に基づいてプライバシー脅威モデリングに取り組もうとしているところです。またAI/LLMを用いた脅威モデリングの実証・検証にも取り組んでいます」
セキュリティチャンピオンプログラムでセキュリティ意識の向上や、チームでのセキュリティ能力の向上にも取り組んでいる。「セキュリティチャンピオンは、セキュリティチームと開発チームの間のギャップを埋める重要な役割を果たします。いまはボランティアベースですが、理想としては各チームに1人のセキュリティチャンピオンを設置したいと考えています」
ダッシュボード可視化は、セキュリティダッシュボードを用いたセキュリティ状況の可視化の取り組みだ。セキュリティ設定や脆弱性に関連する構造をリポジトリヘルス(Repo Health)として可視化し、自社開発したダッシュボードで開発者がセキュリティ情報を共有できるようにしている。
「リポジトリを修正することで自身のランクが上がるといった、ゲーミフィケーションの要素を取り入れることで、開発者や利用者が積極的に参加できるようにしています」
最後にフェルナンデス氏は、「事業のモメンタムを保ちながらセキュリティバイデザイン・バイデフォルト、アットスケールを目指すことは容易ではありません。そうした中で、ゴールデンパスや従業員中心設計、自動化中心設計などを意識して、開発者に沿ったワークフローを構築することで一貫した開発ライフサイクルの下でセキュリティ対策を実施することができます」と述べ、講演を締めくくった。
Copyright © ITmedia, Inc. All Rights Reserved.
Cloud Native Central 記事ランキング