セキュリティテストとは
セキュリティテストは、アプリケーション、システム、ネットワークに潜むセキュリティリスクと脆弱性を特定するソフトウェアテストの一種です。
セキュリティテストは、ソフトウェア開発ライフサイクルにとって欠かせない要素です。セキュリティテストの目的は、攻撃者に悪用されて機密データへのアクセスが獲得されたり、システム操作が妨害されたりする可能性がある弱点を明らかにすることです。
セキュリティテストの重要性
アプリケーションセキュリティテストはセキュリティの強化という目的に向けた初めのステップの1つですが、テストの利点は他にもいくつかあります。
セキュリティテストにより、人の稼働時間と純生産性を高めることができます。そもそも、セキュリティ不備の後処理には常に、不備を防御するよりも多くの労力が必要になります。世界中でどれだけの数の企業がこれまでデータ侵害のために集団訴訟に直面してきたか考えてみてください。その和解金をチームに倫理的ハッカーを加えるためのコストと比較してみるとよいでしょう。
厳格なプライバシー規制の対象となっている業界で使用されるソフトウェアの場合、セキュリティテストにより規制へのコンプライアンスを確保するうえでも役立ちます。例えば、米国で医療向けソフトウェアを作成する企業は常にHIPAAを遵守する必要があり、ヨーロッパでビジネスを展開する企業は一般データ保護規則を遵守する必要があります。
セキュリティリスクの評価という文化をしっかりと根付かせ、「ハッカーの視点で考える」ための時間を取ることで、ソフトウェアのセキュリティが向上するだけでなく、ソフトウェアコードの品質も向上します。さらに時間を割いてコードに脆弱性がないかどうか見直すと、他のエラーが見つかる可能性もあります。
セキュリティテストのタイプ
セキュリティテストには5種類の形式があり、それぞれに方法と目的が異なります。できれば、こうした手法を必要に応じて組み合わせて使用すると理想的です。
- ペネトレーションテスト(倫理的ハッキング)では、実際のサイバー攻撃をシミュレートして、脆弱性がないか特定のシステムをテストします。
- セキュリティスキャンでは、新しいコードのシステム上の欠陥を手動または自動で検出します。
- 脆弱性スキャンでは、既知の脆弱性のリストに照らしてソフトウェアをチェックします。
- セキュリティ監査では、1行ずつコードを調べて、これまで見逃していたセキュリティホールがあれば明らかにします。
- セキュリティリスク評価では、外部の脅威の排除に焦点を当て、各脅威を「低」、「中」、「高」に分類します。
セキュリティテストの原則
情報セキュリティのテストにさまざまな方法があるように、テストする属性も多種多様です。セキュリティテストには主に次の7つの原則があります。
- 認証:ユーザーの本人確認に焦点を当てます。
- 承認:ユーザーにシステムへのアクセスを許可します。
- 機密性:情報の使用が意図したとおりかどうかを検証します。
- 可用性:ダウンタイムを最小限に抑え、承認されたユーザーがデータを利用できるようにします。
- 整合性:送信される情報の維持に関連します。
- 否認防止:拒否されたアクセスリクエストの妥当性を確認します。
- レジリエンス:攻撃に対するシステム全体としての抵抗力です。
セキュリティテストシナリオの例
次に、セキュリティテストの一般的なユースケースをいくつか紹介します。
- サーバーのTLS/SSL設定を検証する
- WebアプリケーションにSQLインジェクション、XSS、CSRFなどの既知の脆弱性がないかテストする
- 静的コード分析を実行して、セキュリティベストプラクティスに従っていることを検証する
- 認証と認可の制御が存在するかどうか、およびその効果をテストする
- ペネトレーションテストを実行して、セキュリティアーキテクチャに潜む弱点を特定する
- アクセス制御メカニズムが導入され、適切に設定されていることを確認する
- データ漏洩テストを実行して、誤って漏洩される可能性のある機密情報を特定する
- 安全な監査証跡が存在するかテストする
- パスワードの強度と複雑さを検証する
- アプリケーションがサービス拒否攻撃から適切に保護されているかどうかを評価する
詳細
クラウドストライクの脅威ハンターが、帯域外アプリケーションセキュリティテスト (OAST) ツールに関連付けられているドメイン名を使用してデータを流出させようとする試みを明らかにする方法をご覧ください。
広く使用されているセキュリティテストツール
次に、セキュリティテストの実施によく使用されるツールをいくつか示します。
- Burp Suite
- Acunetix
- Nmap
- Qualys
- Wireshark
- Metasploit
- Nessus
- Nikto
- Aircrack-ng
- OWASP ZAP