アプリケーションの脆弱性管理
アプリケーションセキュリティテスト
アプリケーション(動的アプリケーションセキュリティテスト - DAST)とコード(静的アプリケーションセキュリティテスト - SAST)の両方に対して脆弱性スキャンツールを使用することをお勧めします。また、重要な企業アプリケーション、理想的にはすべてのアプリケーションに対して侵入テストを実施することも重要です。
スキャンするタイミングと場所
アプリケーションの脆弱性は、開発者がコードを書いている時に修正するのが最も簡単で費用対効果が高いです。多層防御の観点から、パイプラインでもスキャンすることが重要です。これにより、脆弱性をチェックするコーディング支援ソリューションを使用せずに開発されたコードがパイプラインにプッシュされた場合でも、リスクを引き起こす前に脆弱性を検出し対応できます。最後に、デプロイされたアプリケーションをスキャンすることも推奨されます。これは、パイプラインにスキャンを追加する前にアプリケーションがデプロイされた可能性や、スキャン後に新しい脆弱性が発見される可能性 (例:最近発見された脆弱性を持つ依存関係) へ対応できるためです。
AWS のサービスによる対応例:
- 開発 UI 内: Amazon Q Developer
(旧 Amazon CodeWhisperer) は、開発者がコードを書く際に脆弱性を検出し、修正の推奨事項を提供します。
- パイプライン内: Amazon CodeGuru Security
でコードスキャン (SAST) を実行できます。
- イメージリポジトリ内: Amazon Inspector
で Amazon Elastic Container Registry 上のイメージをスキャンできます。
- デプロイ後: Amazon Inspector
で AWS Lambda 関数のコードをスキャンできます。
AWS Marketplace の DAST/SAST ソリューション
AWS Marketplaceには、アプリケーションの脆弱性を検査するための多くのパートナーソリューション (Checkmarx や Veracode など) があります。
オープンソースソリューション
アプリケーションをスキャンするのに役立つ多くのオープンソースソリューション (Nikto や Vega、Burp Suite など) があります。AWS はAutomated Security Helper
(ASH、AWS Samples で公開されているオープンソースソフトウェア) を開発し公開しています。
特徴:
- 認証キー、脆弱性、バッドプラクティスなどを検出します
- 現在、Git、Python、JavaScript、CloudFormation、Terraform、Jupyter Notebooks のフレームワークをサポートしています。
- フレームワークを識別し、関連するツールを使用して分離された Docker 環境でコードをスキャンします。
- 複数のオープンソースツール (git-secrets、bandit、nbconvert、npm-audit、checkov、cfn_nag、cdk-nagなど) を活用します。
関連する推奨事項
主なリスクと軽減
- 多くの Web アプリケーションはサービスを提供するために公開する必要があるため、アプリケーションの脆弱性は攻撃者によってアクセス可能です。
- ほとんどの開発チームはセキュリティの専門家ではないか、セキュアなコード作成のプラクティスを優先する時間がありません。
評価のガイダンス
- アプリケーションのセキュリティ脆弱性をスキャンしていますか?どのように行っていますか?
- 動的アプリケーションセキュリティテスト (DAST) - 稼働中のアプリケーション?
- 静的アプリケーションセキュリティテスト (SAST) - コードスキャン?
- スキャンのカバレッジはどの程度ですか?重要なアプリケーションのみをカバーしていますか?ほとんど?すべてのアプリケーション?
- コード内の認証情報を含むシークレットをスキャンしていますか? (例えば、開発者がアクセスキーをハードコーディングした場合、検出できますか?)
- 重大な脆弱性が見つかった場合、本番環境への実装を停止していますか?
料金