公開日:2007年9月26日
独立行政法人情報処理推進機構
セキュリティセンター
本ページの情報は2007年9月時点のものです。
記載の資料は資料公開当時のもので、現在は公開されていないものも含みます。
ソフトウェアの開発・改修の際、既存のソフトウェアにどのような脆弱性が生じたかを把握しておくことは、新しいソフトウェアのセキュリティレベル向上に役立つ。
セキュリティ脆弱性はソフトウェア開発者が見落としがちな盲点を突かれ攻撃を許してしまうという問題である。そのため、脆弱性を想定するということは盲点を見つけるということであり、必ずしも容易ではない。
しかしながら、これまで他の開発者がどのような脆弱性を生んできたかを知れば、それと同種の問題の発生に対し事前に備えをもつことができる。
インターネット上には、製品ソフトウェアの脆弱性を日々収録しているWebサイトがある。悪用を防ぐために、詳細な実装ミスの内容や攻撃手口は明かされない場合が多い。しかし、多くの対策のヒントを得ることができる。それらの例を掲げる。
新しいソフトウェアを開発する際、自社(あるいは自組織)で過去に開発したソフトウェアを機能強化したり、使っていたライブラリを再利用する場合がある。
その際、以前のバージョンのソフトウェアがどのようなセキュリティ脆弱性を含んでいるかが明らかになっているのであれば、その情報を無視すべきでない。脆弱性が後日「再発見」されたときには、対策の難易度とコストが増大しているおそれがあるからである。
脆弱性の存在が分かっている場合、それらへの対処として次のような選択肢があり得る。
脆弱性を予防あるいは事後に対処するためには、脆弱性の病理メカニズムを詳細に把握する必要がある。それは、好ましくない現象がどのようにおこるのかを、机上およびコンピュータ上で調べ、それが成立する要因を分析する作業である。これらの作業は難易度が高く、時間もかかる。
したがって、可能な限り他者から得られる情報、自社(自組織)の過去製品から得られる情報を最大限に活用することが重要である。
しかし、もちろんすべての問題の解決法が得られることは期待できない。一部の問題については自社(自組織)で脆弱性の病理メカニズムを分析し、対処法を編み出す必要に迫られる。
その脆弱性にどう対処するか─解消するか放置するか─にかかわらず、脆弱性を検出した場合、それを記録に残し、後続の開発プロジェクトに役立てることが望ましい。そのことが別の開発チーム、および近い将来の自分のチームを助けることになる。