公開日:2007年9月26日
独立行政法人情報処理推進機構
セキュリティセンター
本ページの情報は2007年9月時点のものです。
記載の資料は資料公開当時のもので、現在は公開されていないものも含みます。
ソフトウェアのセキュリティ品質を確保するためには、次の3つの活動が重要である。
セキュリティレビューは、セキュリティ対策漏れを早くに見つけ出し、設計者へフィードバックすることを目的に行う。次のような観点で確認する。
セキュリティレビューを行う際のレビュー対象は、設計工程までに作成されるおおよそ次ようなものである。
必要とされるセキュリティ要件により変わり得るが、セキュリティレビューで考慮する項目は、例えば、次に示す「チェックリスト1」の項目が考えられる。
ソースコードレビューは、実装工程で開発者がコーディングしたソースコードを閲読して十分なセキュリティ対策が行われているかあるいはセキュリティ脆弱性につながってしまう部分がないかを読み取る作業である。次の記事「ソースコードレビュー」にて詳述する。
セキュリティテストの目的は、作り上げたプログラムに十分なセキュリティ対策が実装されているかどうかを確認することである。次のような観点で確認する。
セキュリティテストで確認するのは、おおよそ「チェックリスト2」に掲げる項目である。一部セキュリティレビューで行っていることもあるが、セキュリティ要件にあり、設計に反映されている項目は、当然、実装も行われているはずである。 実装漏れがあってはいけないので、やはりこのセキュリティテストでも確認する必要がある。また、ソフトウェアのテストの工程が、
単体テスト → 結合テスト → システムテスト
と進む中で、どのテスト工程においても十分に行うことが望ましい。
セキュリティテストは、次のような手段によって行う。
一般的にブラックボックステストとは、プログラムの内部の作りとは関係無く、外部からシステムの機能をテストする方法である。
セキュリティテストで行うブラックボックステストでも、同様に外部からの入力によるプログラムの動作を確認する。 また、このテストではツールを使って一定の問題を検出する方法が利用できる。 例えば、変数領域のあふれを見つけ出すツールやコンパイラのオプションを使い、バッファオーバーフロー脆弱性が生じるおそれのある箇所を指摘させる等である。 ツールによる検査では、熟練した脆弱性対策技術者でなくてもテストが行える利点がある。
しかし、ツールでは、ある一部の特化した脆弱性についてのみのテストしかできない。よって、ツールではテストできない脆弱性の対策確認は、テスト実施者が対象となるプログラムを手動で動かし、いろいろな脆弱性のケースを試す。この場合、テストケースや検出方法について技術的に熟練した脆弱性対策技術者によってテストを実施するのが望ましい。
一般的にホワイトボックステストとは、プログラムの内部の作りを理解した上で予定された処理が、予定通り動作するかどうかを確認するテストである。
セキュリティテストで行うホワイトボックステストでも、同様に処理の条件や組み合わせなどによるテストを行う。テストケースや予定している動作がはっきり把握できるのであれば、ブラックボックステストと同様に熟練した脆弱性対策技術者でなくてもテストが行える利点がある。
セキュリティテストを行うにあたり、注意すべき項目を次にあげる。