c2.10 アプリケーションの脆弱性を管理する
アプリケーション(DAST)とコード(SAST)をスキャンし、重要なアプリケーションにはペネトレーションテストを行います。開発者の IDE の段階で、次にパイプラインとイメージレジストリで、そしてデプロイ後にも問題を検出します。ライフサイクル全体にわたる多層防御です。
実装ガイダンス
シフトレフトし、その後もスキャンし続ける
脆弱性は開発者がコードを書いている段階で修正するのが最も安価ですが、多層防御は各段階でのスキャンを意味します。IDE のチェックを経ずに到着するコードもあり、新たな脆弱性(たとえば依存関係のもの)はデプロイ後に現れます。
- IDE で: Amazon Q Developer がコード記述中に脆弱性を指摘し、修正案を提示します。
- パイプラインとレジストリで: Amazon Inspector がコードスキャン(SAST)、ソフトウェア構成分析、Infrastructure as Code のスキャンを行い、Amazon ECR のコンテナイメージや GitHub・GitLab などのリポジトリのコードをスキャンします。
- デプロイ後: Amazon Inspector が AWS Lambda 関数のコードをスキャンします。
パートナー製品とオープンソースの選択肢
パートナーの DAST/SAST ツール(Checkmarx や Veracode など)は AWS Marketplace にあります。オープンソースでは、Automated Security Helper(ASH) が git-secrets、bandit、npm-audit、checkov、cfn_nag、cdk-nag といったツールをまとめ、Git・Python・JavaScript・CloudFormation・Terraform・Jupyter ノートブックにわたってシークレット・脆弱性・不適切なプラクティスを検出します。
WAF は代替ではない
Web アプリケーションファイアウォールの導入は攻撃のブロックに役立ちますが、根本的な脆弱性を修正する必要をなくすものではありません。多層防御に従い、両方を行ってください。
関連
これは後のフェーズの Security Champions と DevSecOps につながります。
How to validate
- DAST(稼働中のアプリ)と SAST(コード)の両方でアプリケーションをスキャンしていますか?
- カバレッジはどの程度ですか(重要なアプリのみ、大半、すべて)?
- コードにコミットされたシークレットや認証情報をスキャンしていますか?
- クリティカルな脆弱性が見つかった場合、パイプラインは本番への昇格をブロックしますか?
Threats addressed
- ユーザーにサービスを提供するために公開が必要な Web アプリケーションは、その脆弱性を攻撃者の手の届く範囲に直接置くことになります。
- ほとんどの開発チームはセキュリティの専門家ではなく、ツールなしにセキュアコーディングを優先する時間はめったにありません。
AWS サービス
料金
Amazon Inspector の料金と Amazon Q Developer の料金を参照してください。
Cloud Security Maturity Model