ソフトウェア・インテグリティ

 

セキュアSDLC 101

機能的なソフトウェアの開発、リリース、保守のみを目的とした環境については多くの組織が整備していますが、ソフトウェアのセキュリティが不十分なことに伴う懸念やビジネス・リスクの増大とともに、開発プロセスにセキュリティを統合する必要性に対する注目が高まっています。適切なセキュア・ソフトウェア開発ライフサイクル(SSDLC)の実装が今こそ重要です。

SSDLCのしくみと要注目の理由

ソフトウェア開発ライフサイクル(SDLC)とは、組織がアプリケーションを構築するために用いる、方向付けから廃止までのプロセスを定義するフレームワークです。長年にわたり、さまざまな標準SDLCモデル(ウォーターフォール、イテレーション、アジャイルなど)が提案され、個別の状況に応じてその用いられ方もさまざまです。しかし、一般的にSDLCには以下のフェーズが含まれることは確実です。

  • プランニングと要件定義
  • アーキテクチャと設計
  • テスト・プランニング
  • コーディング
  • テストと結果
  • リリースと保守

以前は、セキュリティ関連のアクティビティは一般にテストのみに組み込まれていましたが、このような事後的手法では多くの問題の発見が手遅れになる(あるいは発見されないまま残る)のが通例です。これに比べて、SDLC全体にアクティビティを統合して脆弱性を早期に発見・低減し、セキュリティを効果的に組み込む方法ははるかに優れています。

このような考え方からセキュアSDLCの概念が生まれました。セキュアSDLCのプロセスでは、ペネトレーション・テストコード・レビューアーキテクチャ解析などのセキュリティ保証アクティビティを開発プロジェクトに欠かせない要素として組み込みます。セキュアSDLC手法を目指すことには主に以下の利点があります。

  • セキュリティが継続的な課題になることによるソフトウェア・セキュリティの向上
  • セキュリティ課題に対するステークホルダーの意識向上
  • システムの欠陥を早期発見
  • 問題の早期発見・解決によるコスト削減
  • 組織に内在するビジネス・リスク全体の低減

セキュアSDLCのしくみ

一般に、セキュアSDLCは既存の開発プロセスにセキュリティ関連のアクティビティを追加することによって装備されます。たとえば、セキュリティ要件の作成と機能要件の作成を並行して行う、SDLCの設計フェーズでアーキテクチャ・リスク解析を行うなどの形をとります。

これまでに多くのセキュアSDLCモデルが提案されていますが、その一部を以下に示します。

  • MS Security Development Lifecycle(MS SDL):従来のSDLCのフェーズに関連してMicrosoftが提案したMS SDLは、この種のものとしては最初期のモデルです。
  • NIST 800-64:セキュリティに関する考慮事項をSDLCに組み込みます。アメリカ国立標準技術研究所によって策定され、米国連邦政府機関が監督する規格です。
  • OWASP CLASP(Comprehensive, Lightweight Application Security Process):MS SDLをベースにしたシンプルな実装の規格であり、セキュリティ・アクティビティを組織の役割に対応付けます。

開始方法

開発者またはテスト担当者は、組織のセキュリティ体制の向上のために以下のようなアクションを日常のアクティビティに取り入れることができます。

  • セキュア・コーディングのベストプラクティスと利用可能なセキュリティ・フレームワークについて学習し、同僚にも教える。
  • テスト・ケースの作成/計画時にセキュリティを考慮する。
  • SecureAssistCoverity、AppScan Sourceなどのコード・スキャン・ツールを使用する。

ただし、より大きなインパクトを実現するには、経営陣が参画して戦略的アプローチを考案する必要があります。完全なSSDLCを一から実装することに関心がある意思決定者の方は、以下のことから始めてください。

  • 現在組織に存在するアクティビティ/ポリシーとその有効性を特定するギャップ分析を行う。
  • 現実的で達成可能な目標と成功指標の定義を定めることにより、ソフトウェア・セキュリティ対策(SSI)を策定する。セキュリティ・アクティビティのプロセスはSSIの策定段階で具体化する必要があります。
  • 採用・社員研修と適切なツールに投資する。
  • 必要に応じて外部の支援を利用する。

SSDLCの実装後に やるべきこと

セキュアSDLCを既に実装済みの場合は、まだ必ず 改善の余地があります。現状を確認する一つの方法は、他の組織のセキュリティ・プログラムの構築方法およびその組織が行っているアクティビティを自社組織と比較することです。BSIMM(Building Security In Maturity Model)はその支援を行います。

BSIMMコミュニティへの参加方法はこちらをご覧ください