アプリケーション セキュリティ テスト

Application Security Testing (アプリケーション セキュリティ テスト、AST) とは、アプリケーションを評価し、悪用されるおそれのある潜在的な脆弱性を特定することで、アプリケーションをセキュリティ上の脅威に対してより堅牢にするプロセスのことです。企業はアプリケーション セキュリティに何十億ドルも投資していますが、ウェブ アプリケーションは依然としてさまざまなサイバー攻撃にさらされています。ソフトウェアのセキュリティを確保するには、アプリケーション セキュリティ テスト ツールを使用することが重要です。

アプリケーション セキュリティ テストのメリット

アプリケーション セキュリティ テストは、ソース コードのセキュリティ上の弱点や脆弱性を特定するのに役立つため、software development lifecycle (ソフトウェア開発ライフ サイクル、SDLC) において非常に重要です。アプリケーション セキュリティ テストを SDLC に導入することで、次のようなメリットが得られます。

  • **セキュリティとソフトウェア品質の向上。**アプリケーション セキュリティ テストにより、開発者はソフトウェアが本番環境にリリースされる前の開発ステージでセキュリティ上の懸念を特定して修正できます。アプリケーションのリリース後も、アプリケーション セキュリティ テストにより引き続き脆弱性を特定できるため、開発者は脆弱性を迅速に修復できます。

  • 極秘データの保護。**アプリケーション セキュリティ テストは、個人情報を保護し、極秘データを漏洩させるおそれのあるエラーを発見することで、開発者が悪意ある攻撃者に先手を打つことができるようにします。これはクレジットカード番号、銀行口座番号、個人データ、顧客記録などの極秘データを扱う企業にとって、ビジネス上非常に重要です。

  • **セキュリティ侵害のリスク低減。**1 回のデータ侵害で、修復、訴訟費用、被害者支援、ハッカーへのランサムウェアの支払い、国や地方自治体による罰則など、何百万ドルもの費用がかかる可能性があります。場合によっては、セキュリティ問題が解決されるまで、事業や収益を生み出す活動を縮小や停止する必要が生じることもあります。アプリケーション セキュリティ テストを実施することで、悪意あるハッカーに脆弱性を悪用されないよう全てのバリアが整っていることを確認し、データ侵害を未然に防ぐことができます。

  • **コンプライアンスの強化。**アプリケーション セキュリティ テストでは、最新のセキュリティ保護機能を使用することで、組織が常にデータ保護の法令に準拠できるようにします。

  • **生産性の向上。**アプリケーション セキュリティ テストにより、セキュリティ問題の修復にかかる時間を最小限に抑えることができるため、開発者はアプリケーションの構築という本来の業務に多くの時間を割くことができるようになります。

ますます巧妙になる悪意ある攻撃者の脅威からソフトウェアを守るには、アプリケーション セキュリティ テストをソフトウェア開発ライフサイクルに統合することが極めて重要です。そうすることで、開発者は安全性の高いアプリケーションをより迅速かつ効率的に構築できるようになり、大きな損失を生むおそれのあるデータ侵害から組織を守ることができます。

アプリケーション セキュリティ テスト ツール

多くの企業では、ニーズに応じて、次のようなアプリケーション セキュリティ テスト ツールを組み合わせて使用しています。

  • Static Application Security Testing (静的アプリケーション セキュリティ テスト、SAST) は、アプリケーションが実行されていないときにバイナリ コードやアプリケーション ソース コードをスキャンして、設計やインプリメンテーションに基づく脆弱性を見つけます。

  • 動的アプリケーション セキュリティ テスト (DAST) は、悪意のある攻撃者がアプリケーションの脆弱性を見つけるときに使用するのと同じ手法を再現することで、実行中のウェブ アプリケーションのセキュリティ問題をテストします。

  • Interactive Application Security Testing (対話型アプリケーション セキュリティ テスト、IAST) には、動的テストと対話型テストが含まれます。実際の入力と動作を制御された方法で使用し、テスト対象のアプリケーションを調べます。

  • Mobile Application Security Testing (モバイル アプリケーション セキュリティ テスト、MAST) は、通常のセキュリティの脆弱性に加え、モバイル デバイスからのデータ漏洩や脱獄などのモバイル特有の問題に対応します。

  • Software Composition Analysis (ソフトウェア構成分析、SCA) は、アプリケーション内で使用されているオープン ソースやサードパーティの商用コンポーネントをインベントリ化し、コンポーネント内のセキュリティの脆弱性を特定して、問題を修復する方法を提供します。

  • Runtime Application Self-Protection (ランタイム アプリケーション自己保護、RASP) は、ランタイムのユーザー動作とアプリケーションのトラフィックを分析して、サイバー脅威を特定し防ぎます。

あらゆる段階でのセキュリティ

GitHub Advanced Security を使用して脆弱性をすばやく発見して修正し、高い修復速度とワークフローへのシームレスな統合を保証します。
コードを保護する

適切なアプリケーション セキュリティ テスト ツールを選択する

次のベストプラクティスは、自社のニーズに最適なアプリケーション セキュリティ テスト ツールを選択し、開発ワークフローに効率的に統合して、脆弱性を迅速に発見し修正できるようにするためのものです。

必須要件と目標を明確にする

アプリケーションの特定の脆弱性をスキャンし、プロジェクトに適したプログラミング言語でレビューを実行するアプリケーション セキュリティ テスト ツールを選択することが重要です。

たとえば、アプリケーションのソース コードにアクセスできるのであれば SAST ツール、アプリケーションが実行可能ファイルとしてチームに提供されているのであれば DAST ツールから始めるとよいでしょう。アプリケーションがオープン ソースやサードパーティの商用コンポーネントを使用している場合は、SCA ツールが最も効果的な選択肢になるでしょう。また、開発者チームは通常、ニーズを満たすために、アプリケーション セキュリティ テスト ツールを組み合わせて使用することを覚えておいてください。

アプリケーション セキュリティ テスト ツールを調査して比較する

スピードと正確さは 2 つの重要な必須要件です。アプリケーション セキュリティ テスト ツールはチームのデリバリーのスケジュールに合った、正確な結果を提供するものでなければなりません。コードのスキャンに時間がかかりすぎたり、開発者がトリアージする必要のある偽陽性が多すぎたりすると、手痛いデリバリーの遅延の原因となります。

アプリケーション セキュリティ テスト ツールを選択する前に、ベンダーに問い合わせ、デモを実施し、無料で試すようにしてください。もちろん、価格が予算内に収まるツールである必要があります。

インプリメンテーション プロセスを計画する。 

次のステップを検討する

  • **デプロイする。**ライセンスの必須要件、必要なアクセス制御や許可を設定し、ツールを実行するために必要なリソースを調達します。

  • **カスタマイズする。**組織のニーズに合わせてツールをカスタマイズします。たとえば、偽陽性を減らすように設定したり、新しいルールを作成して追加の脆弱性を検出できるようにしたりします。

  • **アプリケーションを統合する。**アプリケーションをオンボードし、アプリケーションの定期的なスキャンが、リリース サイクル、ビルド、コードのチェックインと同期していることを確認します。

  • **早期に小規模に実行する。**開発プロセスの早い段階で、小さな範囲でスキャンを実行することが重要です。実行しながら範囲を広げていきます。

  • **スキャン結果を分析する。**問題が整理できたら、それらを追跡してデプロイ チームに提供し、タイムリーに修復できるようにします。

  • **トレーニングを行う。**ベンダーはセキュリティ意識の向上を図るトレーニングを提供し、開発者が攻撃の兆候を見つける方法を理解できるようにします。ツールにわかりやすいチュートリアル、オンライン トレーニング、ドキュメントが用意されていることも重要です。

結論: 全てのステップでセキュリティを確保する

優れた SAST ツールとは、開発者ワークフローに統合され、開発者がリアルタイムで脆弱性に対処できるツールです。また、コンテキストが豊富で、あらゆるセキュリティ バックグラウンドを持つ開発者が発見された脆弱性を修正できるツールです。

そこで、GitHub のネイティブ SAST ツールであるコード スキャンの出番です。GitHub Advanced Security (GHAS) の機能であるこの開発者エンパワーメント アプローチは、ソース コードを取り込み、バッファ オーバーフロー、SQL インジェクション、クロスサイト スクリプティングなどの既知の脆弱性パターンがないか、コードが記述されると同時に調べます。そして、開発者ワークフローに直接出力を共有し、開発者が修正をネイティブに統合できるようにします。また、深刻度、リスク レベル、修正方法の提案など、各脆弱性に関する包括的な情報を提供します。このように、簡単にコードのセキュリティを確保してから本番環境にリリースできます。

GHAS は常時稼働の保護機能により、コードを継続的に監視し、検出された問題を即座に示すと同時に、開発者が git プッシュのたびにコードを自動でテストできるようにします。そのため、コード レビューのプロセスの一環としてプル リクエストのセキュリティ問題を確認し、問題がメイン ブランチに持ち込まれるのを防ぐことができます。

開発者はコード スキャンに加えてシークレット スキャンを使用すると、プレコミットのシークレットを事前にスキャンしてセキュリティ侵害を防ぐことができます。さらに、プッシュ保護を有効にすると、シークレット スキャン機能により、誤ってコードにプッシュされた可能性のあるシークレットを探すことができます。これには Microsoft Azure、Amazon Web Services、Slack、Google Cloud などの GitHub パートナーからのパターンに対してコードをスキャンすることが含まれます。スキャンには 1 秒もかからないため、GHAS は漏洩が発生した場合にすぐに検出できます。

GHAS には次の機能も備わっています。

  • サプライ チェーン セキュリティ 脆弱な依存関係がコード ベースに持ち込まれる前に検出します。

  • セキュリティ概要 企業全体のセキュリティ リスクを一元的に単一の画面で表示できます。

  • GitHub Actions。SAST エンジン、DAST、Infrastructure as Code (IaC) スキャン、コンテナ スキャンなどのサードパーティのセキュリティ機能をサポートします。

これらの GHAS の機能を組み合わせることで、開発者は適時に適切なセキュリティ情報を得ることができます。アラートが SAST、SCA、シークレット スキャンのいずれによるものであっても、チームは最新で最先端のセキュリティ インテリジェンスと的確な提案を得て問題を修正できます。

まとめると、GHAS のようなアプリケーション セキュリティ テスト ツールを開発者に推奨することで、開発者はすばやく容易にセキュア コードを作成できるようになります。その結果、修復にかかる時間が数か月から数分に短縮され、開発者はセキュア コードをより迅速に提供できるようになります。

FAQ

アプリケーション セキュリティとは何ですか

アプリケーション セキュリティ テスト (AST) とは、アプリケーションをセキュリティ上の脅威に対してより堅牢にするプロセスです。企業はアプリケーション セキュリティに何十億ドルも投資していますが、ウェブ アプリケーションは依然としてサイバー攻撃にさらされています。ますます巧妙になる悪意ある攻撃者の脅威からソフトウェアを守るには、アプリケーション セキュリティ テストやそのツールを通常のワークフローに統合することが極めて重要です。

アプリケーション セキュリティの例にはどのようなものがありますか

アプリケーション セキュリティの一例は、強力なパスワード ポリシー、または場合によってはパスワードレス オプションを実装して、適切なパスワードの習慣が実践されるようにすることです。アプリケーションを保護するためにできるその他の対策としては、多要素認証、セキュリティ パッチの適用と更新、暗号化、セキュリティ テストと監視などがあります。

アプリケーションをどのように保護すればよいですか

アプリケーションを保護するには、アプリケーション セキュリティ テスト ツールを使用することが重要です。このツールは特定のセキュリティの脆弱性を対象にアプリケーションをスキャンし、サイバー攻撃を特定して防ぎます。セキュリティ問題が見つかると、アプリケーション セキュリティ テスト ツールは開発者に通知し、開発者は問題を修復できます。

なぜアプリケーション セキュリティが必要なのですか

誰もハッカーに極秘データを盗まれたくはありません。アプリケーション セキュリティはサイバー攻撃からデータを保護し、顧客からの信頼の喪失や評判の悪化など、データ侵害に伴う損失を回避するのに役立ちます。