In this article
アプリケーションセキュリティテスト(AST)—よくある質問への回答
アプリケーションセキュリティテストの種類とソフトウェアセキュリティテストツール
開発者がソフトウェアを開発・リリースするスピードが速まるなか、開発ライフサイクルのあらゆる段階で継続的にテストを行うことが求められています。そのため、アプリケーションセキュリティテストはソフトウェアのビルドおよびリリースサイクルに欠かせないステップとなりました。2020年のVerizonのレポートによると、データ侵害の43%はWebアプリケーションへの攻撃でした。安全でセキュアなアプリケーションを構築するには、定期的にアプリケーションをテストし、既知の脆弱性が見つかったらすぐに修正する必要があります。Snykなどのアプリケーションセキュリティソリューションを活用すれば、開発スピードを維持しながら、開発者とセキュリティチームがセキュリティを確保できます。
オープンソースコンポーネントは開発サイクルを短縮する一方で、セキュリティチームがすべてのコードスニペットを監査しなければ、安全でないコードにつながるおそれがあります。チームが安全なコードベースを維持するには、セキュア開発ライフサイクルのさまざまな段階で、複数の種類のアプリケーションセキュリティテストを実施する必要があります。また、アプリをオンラインで公開する場合は、Webアプリケーションセキュリティテストも検討しましょう。
アプリケーションセキュリティテストツールの種類
アプリケーションのライフサイクルの各段階で、セキュリティチームは目的に応じたツールを活用してアプリケーションを保護できます。
静的アプリケーションセキュリティテスト(SAST):アプリケーションのソースコード(実行前)の脆弱性を検出し、アプリケーションのセキュリティ状況をリアルタイムで把握できます。
動的アプリケーションセキュリティテスト(DAST):稼働中のアプリケーションにさまざまな攻撃を仕掛け、実行時のセキュリティを検証します。DASTではアプリケーションのソースコードにアクセスする必要はありません。
アプリケーションのペネトレーションテスト:セキュリティの専門家であるペネトレーションテスターが、ユーザーの操作によって脆弱性が生じる可能性のある箇所を含め、最新のサイバー攻撃に対するアプリケーションの耐性を検証します。ペネトレーションテストツールを使う方法と、外部組織にテストを委託する方法があります。
対話型アプリケーションセキュリティテスト(IAST):ユーザーがアプリを実行または操作するさまざまな状況をシミュレートし、アプリケーションの機能内部にある既知の脆弱性を検出します。
モバイルアプリケーションセキュリティテスト(MAST):アプリケーションセキュリティテストにモバイル固有の攻撃手法(悪意のあるWi-Fiホットスポットやジェイルブレイクされたモバイルデバイスなど)を組み合わせたものです。
ソフトウェア構成分析(SCA):アプリケーション内のライブラリを分析し、その由来を特定します。広く使われているオープンソースソフトウェアライブラリには公開されたバグリストがあることが多く、この手法は非常に効果的です。
データベースセキュリティスキャン:使用中のデータベースを検査し、強力なパスワードの設定や最新のセキュリティパッチの適用など、ベストプラクティスが守られているかを確認します。

どのアプリケーションセキュリティテストツールを使うべきですか?
ソフトウェアのセキュリティ確保を支援するアプリケーションセキュリティテストツールは数多くあります。適切なツールは、実施するテストの種類によって異なります。LGTMやSnyk CLIなど、優れたオープンソースのSASTツールが利用できます。DASTを選ぶ場合は、OWASP ZAPやArachniスキャナーが有力な選択肢です。Arachniは商用サポートも提供しています。IASTツールの多くは特定のベンダーに限定されていますが、Contrast Community Edition(CE)は、Javaおよび.NETアプリケーション向けの高機能な無料IASTツールです。
Snykは、オープンソースの脆弱性スキャナーをはじめとする、強力なアプリケーションセキュリティソリューションを提供しています。開発プロセス全体を通じて、オープンソースの依存関係にある脆弱性を自動で検出、優先順位付けし、修正できます。
ビルドおよびリリースサイクルで使用する開発環境に応じて、アプリケーションセキュリティ分析ツールは脆弱性を早期に特定し、本番環境へのリリース前にチームがパッチを適用したり、コンポーネントを置き換えたりできるよう支援します。
アプリケーションセキュリティテストのプロセス
必要なアプリケーションセキュリティテストの種類によって、テストのプロセスは大きく異なります。SASTはコードベースを対象とするため、CI/CDパイプラインへの統合が最適です。DASTは稼働中のシステムを対象とします。自動化は可能ですが、本番環境に近い稼働環境を用意する必要があります。IASTは、テスト対象のシステム内部で実行される点でDASTと異なります。そのため、デプロイ前にコードベースへ統合する必要があります。
チームは、新たな脆弱性、SQLインジェクション、URL操作、なりすまし、悪意のあるコード、クロスサイトスクリプティング(XSS)をテストする必要があります。テスターは、HTTP GETメソッドによるURL操作を防ぐため、HTTPプロトコルに関する知識を備えていなければなりません。重要な情報を文字列で受け渡すアプリケーションは安全とは言えません。
XSSを防ぐには、外部からのHTMLやスクリプトのリクエストをすべて拒否するようアプリケーションを設定します。また、アプリケーションを実行するサーバーのオペレーティングシステムを、セキュリティのベストプラクティスに従って設定する必要があります。すべての入口が攻撃経路となり得るため、サーバー上で稼働するほかのサービスも保護することが重要です。顧客の個人データも、データ保護法に従って保護しなければなりません。
開発者は、コミットごとにアプリケーションセキュリティのあらゆる側面を確認する必要があります。適切なツールを使えば、開発サイクルにおけるテストの大部分を自動化できます。リリース前にアプリケーションを保護できなければ、サーバーの停止やユーザー情報の漏えいなど、深刻な結果を招く侵害につながるおそれがあります。
ソフトウェアセキュリティテストのベストプラクティス
開発ライフサイクルのあらゆる段階で継続的にテストすることが重要です。さらに、次のヒントを実践することで、常にアプリケーションを安全に保つことができます。
ビジネス上重要なシステムを特定する:ビジネスに不可欠なシステムは定期的にテストする必要があり、規制によって義務付けられている場合もあります。
すべてのコンポーネントを早期にテストする:チームが早くテストを始めるほど、将来的に重大なセキュリティ問題や脆弱性に直面する可能性が低くなり、アプリケーションの安全性も高まります。
修正と対応の優先順位を付ける:脆弱性を把握するだけでは不十分です。見つかったらすぐに修正に取り組む必要があります。
ベストプラクティスについて詳しくは、アプリケーションセキュリティチェックリストをご覧ください。
Snykによるアプリケーションセキュリティテスト
Snykを使えば、開発ライフサイクルのあらゆる段階でアプリケーションセキュリティテストを実施でき、アプリケーションセキュリティソリューションによって既存のツールと連携できます。放置されたパッケージの脆弱性は、大規模な侵害やサービスの侵害につながるおそれがあります。
開発者を第一に考えたツールで、アプリケーションを保護
IDE、リポジトリ、コンテナ、パイプライン全体で、効率的かつ実践的なアプリケーションセキュリティのアドバイスを提供します。
コードチェッカーツールを試してコードのセキュリティをすばやく確認し、Snykで安全なアプリの構築を始めましょう。