新しい機能や統合によってアプリケーションが複雑になるにつれて、セキュリティリスクも指数関数的に増加します。最新のWebおよびモバイルアプリケーションを効果的に保護するには、ソフトウェア開発ライフサイクル(SDLC)全体を通じて堅牢なセキュリティテストプラクティスを実装する必要があります。最も効果的なアプローチの1つは、実行時にアプリを分析して脆弱性を検出する動的アプリケーションセキュリティテスト(DAST)です。

動的アプリケーション・セキュリティ・テストとは?
DASTの紹介
動的アプリケーション・セキュリティ・テストでは、実行中のアプリケーションを分析して、セキュリティの脆弱性を特定します。ソースコードを実行せずに検査する静的アプリケーション・セキュリティ・テスト(SAST)とは異なり、DASTは実際の攻撃をシミュレートして欠陥を見つけます。

DASTツールは、アプリケーションをクロールし、さまざまな機能を実行し、応答を分析して問題を検出します。実際の攻撃者の活動を模倣し、予期しない入力や悪意のある入力を入力します。これにより、アプリが動作しているときにのみ存在するセキュリティホールを発見できます。DAST ツールは、通常、デプロイ後に実稼働前環境またはライブ アプリをテストするために使用されます。

DASTの利点

1. SASTで検出されないバグを検出
DASTは、アプリの構成、依存関係、予期しないデータフローによって引き起こされる脆弱性など、実行時にのみ存在する脆弱性を検出することでSASTを補完します。SASTによって回避された多くの脆弱性は、動的テストによって明らかにすることができます。

2. 実際の攻撃をシミュレート
DASTは、予期しない入力を入力し、エクスプロイトの試みを開始することで、実際のユーザーが直面するリスクを正確に特定します。明らかになった問題は、稼働中のシステムに影響を与える可能性が高く、早急な修正が必要です。静的なツールだけでは、このレベルのリアリズムに匹敵することはできません。

3. インフラストラクチャの問題の確認
DASTは、アプリの脆弱性に加えて、アプリが依存するWebサーバー、データベース、ライブラリなどの設定ミスも調査します。脆弱なアクセス制御、不要なポート/サービス、古いコンポーネント、その他のインフラストラクチャのセキュリティギャップを明らかにするのに役立ちます。

4. 導入後のアプリのセキュリティを向上
開発者と QA チームは、DAST を使用して実稼働前のビルドをテストします。しかし、リリース後のライブアプリの定期的なDASTにより、変更/更新によってもたらされた脆弱性に迅速に対処できます。これにより、アプリのライフサイクル全体にわたってセキュリティ保証が強化されます。

DAST を使用する場合

理想的には、DASTはSDLCの複数のステージで使用する必要があります。

1. 開発中:コードが記述/更新されると、DASTは、デプロイ前の連続したイテレーションで修正すべき欠陥を特定するのに役立ちます。早期テストにより、開発が迅速化されます。

2. リリース前:ソフトウェアのプロモーションの前に、QAはDASTを実行して、実稼働前のバージョンがセキュリティ要件を満たしていることを確認します。特定されたバグは、時間内に修正できます。

3. デプロイ後: アプリは、アップグレード/変更による新しい問題をすばやく検出するために、起動後に DAST スキャンを繰り返す必要があります。ライブシステムとユーザーデータを保護します。

4. パッチ適用後:アプリケーションがソフトウェア修正/パッチを受け取るたびに、別のDASTサイクルが推奨されます。これにより、問題が本当に解決されたかどうかが検証されます。

5. ペネトレーションテストと並行して:DASTは、従来の侵入テスト手法を補完し、セキュリティ保証を強化します。ツールはテスト間の不一致をキャッチします。

効果的なDASTプログラムの実装

DASTを開発および運用ワークフローに正常に統合するには、特定のベストプラクティスに従う必要があります。

- 組織とアプリの種類に適した堅牢な商用またはオープンソースの DAST ツールを選択します。CI/CD パイプラインとの統合を検討してください。

- 開発者、テスター、運用チームにツールの使用方法をトレーニングします。調査結果のコラボレーションと知識共有を促進します。

- 成功基準、テスト手順、頻度、責任をポリシーで事前に明確に定義します。

- 新しいコード/機能に対してターゲットを絞ったDASTを実施する リリース前だけでなく、各開発段階で実施する。

- 高/重大な脆弱性を監視し、リポジトリの修復を追跡します。サインオフの前に修正を実施します。

- リスクレベルと利用可能なリソースに基づいて、手動スキャンモードと自動スキャンモードの両方を検討してください。

- 本番アプリのDASTを繰り返す。セキュリティー・アナリストとスキャン・レポートを定期的に確認します。

- DASTを組織の脆弱性管理プログラムと統合して、協調的な解決追跡を行います。

セキュリティ・テスト戦略に動的アプリケーション・セキュリティ・テストを追加することで、アプリケーションは開発およびデプロイ・サイクル全体を通じて現実的な攻撃シミュレーションに直面するようになります。これにより、開発の生産性を向上させながら、実際のエクスプロイトに耐えられる、より堅牢なソフトウェアを提供することができます。DASTを定期的に適用することで、アプリケーションとユーザーデータをローンチ後も長期間保護します。