アプリケーションセキュリティ(AppSec)とは、開発から展開までのライフサイクル全体を通して、ソフトウェアアプリケーションを外部および内部の脅威から保護する取り組みを指します。
目次
アプリケーションセキュリティ(AppSec)とは、ソフトウェアアプリケーションのライフサイクル全体を通してセキュリティリスクを特定、予防、および修復する分野を指します。大まかな定義としては、「アプリケーションを脅威から保護すること」とされていますが、実際には、安全な設計、テスト、監視、ガバナンスを駆使してアプリケーションのリスクを低減していく継続的なプロセスです。
アプリケーションセキュリティは、アプリケーションに意図どおりの動作をさせること、アプリケーション内の機密データを保護すること、および脅威アクターによるアプリケーションの悪用を防ぐことに重点を置いており、Webベースのアプリ、モバイルアプリ、クラウドネイティブアプリ、API駆動型アプリ、ハードウェアに組み込まれたアプリのいずれであるかに関係なく適用されます。
実務レベルでは、アプリケーションセキュリティには以下の要素が含まれます。
これらの対策はいずれも、組織が現代の環境において最も標的とされやすいアタックサーフェス(攻撃対象領域)の1つにおけるリスクを軽減するうえで役立ちます。
アプリケーションセキュリティは、現代のソフトウェア環境で一般的に使用されている以下のような防御策で実際に確認できます。
これらの例は、アプリケーションとそのユーザを保護するために、設計レベルと運用レベルの両方でアプリケーションセキュリティがどのように機能しているかを示しています。
セキュリティの問題は、適切なチェックや保護措置を講じずにアプリケーションを急いで展開した結果として発生することが少なくありません。デジタルトランスフォーメーションは、組織が変化を続ける業界情勢に対応するうえで重要なステップです。しかし、企業はデジタルフットプリントを拡大し、柔軟な働き方やリモートワークの対応に向けてプロセスの最新化を進めていくなかで、お客さまの要望への対応や、変化の効率化の方法についても再考を迫られています。
アプリケーションは現在、業務に不可欠な役割を担っており、多くの企業やユーザが仕事、教育、娯楽、小売など、さまざまな用途で幅広くアプリケーションを利用しています。このような状況では、開発担当部門の役割はユーザビリティとパフォーマンスに優れたアプリケーションを提供することだけにとどまりません。弱点や脆弱性、誤設定など、脅威アクターの悪意のある活動の起点となるようなセキュリティ上の欠陥への対策も、重要な役割の1つです。
セキュリティ対策が不十分なアプリケーションがもたらす深刻なリスクは、アプリケーションセキュリティの必要性を浮き彫りにします。アプリケーションセキュリティとは、設計、開発、および展開後の各段階において、アプリケーションのセキュリティ上の問題点を発見、修正、改善していくプロセスなのです。
強力なアプリケーションセキュリティ対策は、セキュリティとビジネス価値の両方をもたらし、デジタルエコシステム全体のレジリエンスと信頼性を向上させます。
アプリケーションは、ユーザ、データ、バックエンドシステムの間に直接位置することが多いため、攻撃者の標的になりやすい傾向にあります。アプリケーションセキュリティは、コーディングの欠陥、設計上の弱点、誤設定などから生じるさまざまな脅威や脆弱性に対処するものです。
アプリケーションセキュリティの脆弱性として特によくあるものは以下のとおりです。
アプリケーションセキュリティは、安全な開発手法、継続的なテスト、およびランタイム保護を組み合わせることで、ここに挙げたリスクを軽減するのに役立ちます。ここに挙げた脆弱性に早期に対処すれば、侵害リスクを抑制し、アプリケーション全体のセキュリティ態勢を強化できます。
アプリケーションセキュリティ対策とは、アプリケーションをライフサイクル全体にわたって保護するために設計された、体系的な対策のことです。アプリケーションセキュリティ対策は、以下のように分類できます。
予防的対策とは、脆弱性が顕在化する前に阻止することを目的としたプロアクティブな措置を指します。具体例は以下のとおりです。
ここに挙げた対策は、アプリケーションに最初からセキュリティを組み込むことを重視しており、事後的な防御策への依存度を下げる効果があります。
検出的対策は、展開後にセキュリティ上の問題や不審な活動を特定することに重点を置いた対策です。具体例は以下のとおりです。
ここに挙げたツールは、セキュリティ担当部門が稼働開始後のアプリケーションの可視化を維持するのに役立ちます。
是正的対策は、脆弱性やインシデントの発生後に実施するものです。具体例としては、以下のようなものがあります。
ここに挙げた対策を組み合わせることで、アプリケーションライフサイクル全体にわたって継続的な多層防御モデルが実現します。
アプリケーションセキュリティは、ソフトウェアの種類、プラットフォーム、環境に応じて幅広い領域にまたがります。各領域にはそれぞれ固有のリスクがあり、専用の安全対策が必要になります。
Webアプリケーションは、脅威アクターにとって依然として主要なアタックサーフェス(攻撃対象領域)です。Webアプリケーションを保護するためには、インジェクションにつながる欠陥、認証の不備、機密データの露出など、OWASP Top 10の脆弱性に対処する必要があります。安全なセッション処理、Cookie管理、HTTPSの強制適用、入力データのサニタイズの4つは、Webアプリケーションセキュリティの基礎となる要素です。
モバイルアプリは、デバイスの多様性やプラットフォーム固有のAPIが原因となって、Webアプリ以上に複雑化している傾向にあります。重要な考慮事項としては、データの暗号化、ストレージのセキュリティ確保、リバースエンジニアリングからの保護などが挙げられます。AndroidアプリとiOSアプリに関しては、不正アクセスや改ざんを防ぐために、サンドボックス化、安全な通信(TLS)、および実行時整合性チェックを実装する必要があります。
組織でコンテナ、Kubernetes、Infrastructure as Code(IaC)の採用が進むと、クラウドネイティブなアプリケーションセキュリティが不可欠になります。セキュリティ担当部門は、誤設定に対処したり、コンテナイメージの脆弱性をスキャンしたりすることのほか、IaCテンプレートがセキュリティのベストプラクティスに準拠していることを確認する必要があります。CI/CDパイプラインの統合は、ビルドプロセスの初期段階で問題を検出するうえで役立ちます。
組み込みシステムやIoTシステムでは、セキュリティがファームウェア層とハードウェア層にまで及びます。開発者は、セキュアブート機構、ファームウェア署名、制限付きインターフェースを実装する必要があります。物理的な改ざん防止機能とデバイスレベルの暗号化を活用すれば、分散環境やリモート環境に付随するリスクをさらに低減できます。
効果的なアプリケーションセキュリティを実現するためには、それを継続的なプロセスとしてソフトウェア開発ライフサイクル(SDLC)のあらゆる段階に組み込む必要があります。Secure SDLC(SSDLC)モデルを使えば、設計から展開、メンテナンスに至るまで、セキュリティに関する考慮事項を統合できます。
コードを記述する前に、担当部門で脅威モデリングを実施し、攻撃者がどのようにアプリケーションを悪用する可能性があるかを予測します。STRIDEやPASTAのようなフレームワークは、攻撃ベクトル、潜在的な影響、および必要な緩和策を特定するうえで役立ちます。
継続的な開発者教育と並行して、安全なコーディング手法を実践します。よくある活動としては、安全な設計パターンを遵守すること、依存関係を最小限に抑えること、セキュリティ上の欠陥をチェックするコードレビューを実施することなどが挙げられます。
現代のパイプラインでは、問題を早期に検出できるよう、自動化されたアプリケーションセキュリティテスト(AST)が組み込まれています。これには、ソースコードの静的解析(SAST)、実行中のアプリケーションの動的テスト(DAST)、依存関係スキャン(SCA)が含まれます。継続的テストは、展開前に脆弱性を確実に特定するうえで役立ちます。
脆弱性が発見された場合、セキュリティ担当部門とエンジニアリング担当部門の間の連携したワークフローを通じて、脆弱性のトリアージ、対応の優先順位付け、および修復が行われます。自動化されたチケット発行とパッチ展開は、リスクを最小限に抑えつつ対応速度を維持するのに役立ちます。
安全なアプリケーションを構築するには、開発担当部門はアプリケーションセキュリティテスト(AST)を統合する必要があります。ASTは、あらゆるアプリケーションセキュリティプログラムの技術的な基盤を形成する要素です。ASTでは、SDLCのあらゆる段階で脆弱性を特定、評価、修復できるよう、自動化された手法と手動の手法を併用します。以下に、代表的な手法とツールをいくつか紹介します。
SASTは「セキュリティコードレビュー」、「コード監査」とも呼ばれ、アプリケーションを実行することなくソースコードやバイナリを分析して脆弱性を特定します。これは、開発者がSQLインジェクション、ハードコードされた認証情報、バッファオーバフローなどのセキュリティ上の問題を、SDLCの早い段階で発見するのに役立ちます。組織がこの段階でセキュリティ上の問題点を発見できれば、時間とリソースを節約できます。人気のあるSASTツールとしては、SonarQube、Checkmarx、Fortifyなどがあります。
DASTは「ブラックボックステスト」とも呼ばれるもので、実行中のアプリケーションをリアルタイムでテストし、外部からの攻撃をシミュレートすることで、クロスサイトスクリプティング(XSS)、SQLインジェクション、認証バイパスなどの脆弱性の有無を確認します。DASTソリューションは、アプリケーション、コンテナ、およびクラスタが脅威アクターの悪意のある手法にさらされた際のレジリエンスをテストするのに役立ちます。代表的なDASTツールには、Burp SuiteやOWASP ZAPなどがあります。
IASTは、Webアプリケーションの実行時テストを実施するものであり、SASTとDASTの両方の要素を兼ね備えています。実行中のアプリケーションの挙動を監視することにより深い気づき(インサイト)が得られるため、カバーできるコードの範囲が広がるうえ、結果の正確性も高まります。IASTでは、誤検出が少なく、豊富な文脈に即した結果が得られます。そのため、SDLC全体を通して正確なフィードバックを必要とするDevSecOps担当部門にとって非常に有益です。
SCAツールは、オープンソースのコンポーネントやサードパーティ製のコンポーネント(これらは、現代のコードベースの大部分を占めています)の脆弱性を特定します。ソースコードや依存関係に古くなったライブラリや脆弱性のあるライブラリが埋め込まれている場合に、それらを検出できます。代表的なツールにはOWASP Dependency-Check、Snyk、WhiteSourceなどがあり、いずれも既知のCVEを継続的にスキャンできるため、組織が安全なソフトウェアサプライチェーンを維持するのに役立ちます。
RASPソリューションは、アプリケーション実行環境内で動作するもので、トラフィックを監視し、攻撃をリアルタイムで検出します。外部ファイアウォールとは異なり、RASPはアプリケーションのロジックを文脈に応じて認識できるため、SQLインジェクション、クロスサイトスクリプティング(XSS)、コード改ざんなど、悪意のある挙動が発生した場合に検知してブロックすることができます。RASP を実装することにより、ランタイム防御が強化され、環境を問わず継続的なアプリケーション保護が実現します。
アプリケーションセキュリティツールとは、ソフトウェア開発ライフサイクルの全体にわたりアプリケーションのセキュリティテストと保護を支援するソフトウェアソリューションを指します。この種のツールは、新たなセキュリティ手法を導入するのではなく、アプリケーションセキュリティプログラムで既に取り上げられているテスト手法を実装および拡張することによって、担当部門や環境を問わず一貫した実施を可能にするものです。
実際には、アプリケーションセキュリティツールは以下の目的で使用されます。
ほとんどのアプリケーションセキュリティツールは、静的テスト、動的テスト、対話型テスト、依存関係テスト、ランタイムテストなど、1つ以上のテスト手法に対応しています。最新鋭のツールでは、多くの場合、これらを別々の活動として扱うのではなく、複数の機能を駆使してカバレッジの拡大と優先順位付けの精度向上を実現しています。
例を挙げると、以下のとおりです。
ツールに関するこの階層的なアプローチにより、組織は単一の時点でのアセスメントに頼るのではなく、さまざまな段階で脆弱性に対処することが可能になります。
アプリケーションセキュリティとは、個々のアプリを保護するだけのものではありません。アプリが安全で統合されたエコシステム内で動作するようにするための試みです。TrendAI Vision One™ は、エンドポイント、ネットワーク、アプリケーションのすべてにわたる可視化と制御を実現する一元的プラットフォームであり、組織が脅威を迅速に検知し、対応していくうえで効果を発揮します。
アプリケーションセキュリティ対策をTrendAI Vision One™ と連携させることで、高度な脅威インテリジェンスと自動対応機能を活用できます。この連携により、セキュリティ担当部門は個別の防御策にとどまらない包括的なアプローチを採用できるようになり、デジタル環境全体におけるリスクを軽減し、レジリエンスを向上させることができます。
Fernando Cardosoはトレンドマイクロのプロダクトマネジメント担当バイスプレジデントとして、進化を続けるAIとクラウドの領域に注力しています。ネットワークエンジニアおよびセールスエンジニアとしてキャリアをスタートさせ、データセンター、クラウド、DevOps、サイバーセキュリティといった分野でスキルを磨きました。これらの分野は、今なお彼の情熱の源となっています。
アプリケーションセキュリティとは、開発および展開の段階で脆弱性を特定、修正、予防することにより、ソフトウェアを脅威から保護することを指します。
認証、認可、暗号化、ログ記録の4種類です。それぞれが、アプリケーションを不正アクセス、データ漏洩、悪意のある活動から保護するうえで重要な役割を担います。
静的アプリケーションセキュリティテスト(SAST)は、アプリケーションを実行することなくソースコードを分析して脆弱性を検出するもので、安全な開発手法の実現に役立ちます。
動的アプリケーションセキュリティテスト(DAST)は、リアルタイム環境で攻撃をシミュレートすることにより、実行中のアプリケーションの脆弱性を評価するものです。
アプリケーションセキュリティテストツールは、ソフトウェアコード、設定、および実行環境における脆弱性を検出、分析、および報告します。
アプリケーションセキュリティは、機密データの保護、侵害の予防、コンプライアンス確保、デジタルプラットフォームに対するユーザの信頼維持に役立つからです。
Webアプリケーションセキュリティとは、SQLインジェクション、クロスサイトスクリプティング、不正アクセスなどのサイバー脅威から Webサイトを保護することを指します。