システムの開発において、脆弱性への対策も重要な工程である。脆弱性を残したまま出荷されたソフトウエアやシステムに脆弱性が発見されると、製品の改修やシステム設計の見直しが必要になる可能性がある。この対策のために掛かるコストは、出荷前に発見した場合と比較してはるかに大きくなる可能性がある。また、ソフトウエア出荷後に、脆弱性が悪用された攻撃が原因で利用者に被害が生じた場合、利用者からのクレームだけでなく、ソフトウエアを開発した企業にも被害に対する賠償負担や社会的責任が生じてくることが予想される。

 こうした事態を招かないためにも、プログラムの品質管理と同様に、脆弱性を作り込まないための対策や、作り込んだ脆弱性をシステムのライフサイクルの早いフェーズ(製品を出荷する前)で解消しておく対策が必須となる。今回はシステムのライフサイクルにおけるソフトウエアの脆弱性対策の全般およびそのシステムのライフサイクルのフェーズの一つである実装フェーズに焦点を当てて紹介する。

 システムのライフサイクルとは要件定義から運用、そして廃棄(サービス終了)に至るまでの一連のフェーズのことである。一般的にシステムの開発はシステムのライフサイクルに従って行われるため、セキュリティー対策を行う場合、そのライフサイクル全体で対策を行うことが重要である。情報処理推進機構(IPA)ではこのシステムのライフサイクルを「1.要件定義」「2.設計」「3.実装」「4.テスト」「5.運用/ 利用」「6.廃棄」に分類している(図1)。システムのライフサイクルの各フェーズにおいて、セキュリティー脅威となり得る要因を洗い出し、対策や方針の決定を行うことで、運用・利用フェーズにおいて被害に遭うリスクを低減していくことが重要である。

図1 システムのライフサイクルと各フェーズにおけるセキュリティー対策
図1 システムのライフサイクルと各フェーズにおけるセキュリティー対策
[画像のクリックで拡大表示]