web アプリ セキュリティ

ウェブ・アプリケーション・セキュリティ:脅威のトップと9つの防御方法

1.ウェブ・アプリケーション・セキュリティとは?

ウェブ・アプリケーション・セキュリティとは、ウェブサイトに対するサイバー攻撃を検知・防止することと、そもそも安全なウェブサイトを開発することの両方を指します。これは、ウェブアプリケーションをさまざまなサイバー脅威から守るために、ウェブアプリケーションに組み込まれる一連のセキュリティ制御を対象としています。

ウェブアプリケーションには、バグや設定ミスが含まれることは避けられませんが、その一部は攻撃者に悪用される可能性のあるセキュリティ上の脆弱性となっています。ウェブ・アプリケーション・セキュリティは、安全な開発手法の活用、ソフトウェア開発ライフサイクル(SDLC)を通じたセキュリティテストの実行、設計レベルの欠陥の解決、導入時や実行時のセキュリティ懸念の回避によって、これらの脆弱性の対処を支援します。

2.トップのウェブ・アプリケーション・セキュリティ・リスク

ここでは、現在の企業が直面するウェブ・アプリケーション・セキュリティ・リスクを紹介します。

2.1.サービス運用妨害(DoS)および分散型サービス妨害(DDoS)

このセキュリティ・スレッドは、信頼できないデータがコマンドやクエリを介してインタープリタに送信されたときに発生します。攻撃者は、通常のコードを模倣した悪意のあるコードを注入し、インタープリタを騙して予期せぬコマンドを実行させたり、データに不正にアクセスさせたりすることができます。

ウェブアプリケーションへのインジェクション攻撃は、認証機構を回避し、貴重なデータの漏洩やシステムの完全な侵害を引き起こす可能性があります。一般的なインジェクションの問題には、LDAP、NoSQL、SQLインジェクションなどがあります。

2.2. インジェクション

ITアウトソーシングサービスを探すという点では、SMARTはアウトソーシングの優先順位、モデル、タイムラインなどに関する疑問を解決するのに役立ちます。その後、これらの洞察は、各プロバイダーが何を提供しているか、また、次のステップでベトナムの状況にどのように適用されるかと比較することができます。

インジェクションは、ウェブアプリケーションを狙った最も危険で古い攻撃の1つです。
インジェクションは、ウェブアプリケーションを狙った最も危険で古い攻撃の1つです。

2.3.クロス・サイト・リクエスト・フォージェリ(CSRF)

CSRFは、既存の認証を利用して、被害者を騙して、不要なリクエストを行わせます。攻撃者は、ユーザーのアカウント権限を使用して、ユーザーのアイデンティティを想定し、ユーザーの代わりにアクションを実行することができます。

ユーザーアカウントが侵害された場合、攻撃者は機密情報を持ち出したり、削除したり、変更したりすることができます。管理者や役員など、高い権限を持つアカウントは、しばしば攻撃のターゲットにされます。

2.4. クロス・サイト・スクリプティング(XSS)

XSSは、攻撃者がウェブサイトにクライアント側のスクリプトを挿入し、ユーザーのセッション・アクセスの傍受、ユーザーのなりすまし、機密データへのアクセス、ウェブサイトの改ざん、危険なウェブサイトへのURLのリダイレクトなどを行うことを可能にします。この問題は、アプリケーションが信頼できないデータをウェブページに埋め込んだり、正しい検証を行わずにブラウザで生成されたHTMLやJavaScriptを介してユーザーの入力でウェブサイトを更新したりする場合に発生します。

2.5. セキュリティの設定ミス

これは、ウェブアプリケーションに対する最も一般的な脅威の1つであり、アプリケーションやその周辺のインフラにおいて、セキュリティ制御が正しく設定されていない場合に発生します。

例えば、セキュリティの設定ミスとしては、パッチが適用されていない既知の脆弱性、認証なしでインターネットに公開されているクラウド・ストレージ、安全でないデフォルトのままの設定、HTTPヘッダーの設定ミス、攻撃者に機密情報を漏らしてしまう不必要に詳細なエラーメッセージなどが挙げられます。

ウェブ・アプリケーション・セキュリティの専門家は、すべてのアプリケーション、オペレーティングシステム、フレームワーク、およびライブラリの安全な構成を確保する必要があります。また、これらが適時に更新され、修正されていることを確認することが極めて重要です。

2.6. XML外部エンティティ(XXE)

様々なウェブアプリケーションには、XMLファイル内の外部エンティティ参照を評価するXMLプロセッサが誤って設定されています。攻撃者は、外部エンティティを利用して、内部サーバーファイルの開示、内部ポートのスキャン、ウェブサーバーを利用したサービス拒否(DoS)攻撃、リモートでのコード実行を行うことができます。

XXEバナーバビリティ
XXEバナーバビリティ

2.7. 脆弱なデシリアライゼーション

デシリアライゼーションは、バイトのストリームから新しいデータオブジェクトを作成するプロセスです。安全でないデシリアライゼーションは、攻撃者によって書かれた信頼できないコードが、プログラミング言語のデシリアライゼーション機構における脆弱性を悪用することで起こります。さらに悪いケースでは、リモートコード実行(RCE)が可能になります。また、RCEに至らない場合でも、脆弱性を悪用して、特権の昇格、リプレイ攻撃、コードインジェクション攻撃などを行う可能性があります。

3. 使えるトップのウェブアプリケーションのセキュリティ手法

3.1. SDLCにおけるシフトレフトセキュリティ

シフトレフトセキュリティは、ソフトウェア開発ライフサイクル(SDLC)のできるだけ早い段階でセキュリティを移動させることによって、ウォーターフォール手法のために設計された古いセキュリティプロセスを置き換えます。このシフトを促進するのが、次の方法です。

  • 脅威のモデル化の活用
  • セキュリティへの配慮をコードの設計やアーキテクチャに反映させる
  • アプリケーションが本番稼働の環境になるのを待つのではなく、書きかけのコードをテストする

3.2. インジェクションと入力検証

インジェクションとは、ブラウザなどの入力フォームに悪意のあるコードを挿入する攻撃手法の一つです。インジェクション攻撃から保護するためには、入力検証方法を用いて、適切にフォーマットされたデータのみを挿入できるようにし、悪意のあるコードがシステムに侵入するのを阻止する必要があります。

3.3. ユーザー認証管理

ユーザー認証は、Web アプリケーションのセキュリティにおいて非常に重要な側面です。ユーザー認証の管理は、ユーザー名とパスワードの強化に役立つだけでなく、セキュリティ管理者に複数のオプションを提供し、承認された関係者だけがアプリケーションにアクセスできるようにします。ウェブアプリケーションのセキュリティ手法の1つに多要素認証があり、少なくとも2種類の認証を使用してユーザーの身元を確認することを要求します。

3.4. データ暗号化

暗号技術に関する障害は、機密データの漏洩を引き起こす可能性があります。データの暗号化は、保存時と転送時の両方で、漏洩時の重要な保護手段となります。一般的に、暗号化アルゴリズム自体はオープンソースのパッケージで提供されており、暗号の専門家によってすでに書かれています。実際には、暗号化とは、すべての内部および外部トラフィックの暗号化、最新の暗号化アルゴリズムの活用、暗号化の実施など、暗号化をめぐる管理と標準を実施することを指します。

データ暗号化の仕組み
データ暗号化の仕組み

3.5. 設定ミスの発見と修正

最小権限アクセスの原則を実行しないなどの設定ミスにより、第三者が容易に機密情報にアクセスすることができます。設定ミスの大半は手作業によるミスであるため、Infrastructure as Code (IaC) と自動化を利用することで、設定ミスを回避することができます。さらに、Snyk IaC などのスキャンツールは、設定ミスが本番環境に到達する前に検出し、修正することができます。

3.6. ロギングと監査

ログや監査がどのように情報漏洩を防ぐかを示す直接的なデータはほとんどありませんが、情報漏洩を検知して対処することは、依然として譲れない課題です。このカテゴリには、ログインや重要なトランザクションなどのイベントのログ、ログに異常がないかどうかの監視、異常な行動が検出された場合の自動警告や自動修復手順の作成などが含まれます。

3.7. ウェブ・アプリケーション・ファイアウォール

ウェブアプリケーション・ファイアウォール(WAF)は、クライアントとウェブサーバーの間で、両者間のトラフィックのプロキシとして機能します。WAFのルールを構築することで、インジェクションなどの一般的な攻撃からウェブアプリケーションまたはWebアプリケーションのセットを保護することができます。

リクエスト1:安全

リクエスト2:安全

リクエスト3:不安全

ウェブアプリケーション・ファイアウォール、オリジンサーバー

ウェブアプリケーション・ファイアウォールの仕組み
ウェブアプリケーション・ファイアウォールの仕組み

3.8. CI/CDにおけるセキュリティテスト

セキュリティテストの実行をCI/CDパイプラインの最後まで待つ、あるいは、最悪、ウェブアプリケーションがライブ環境で動作する時まで待つと、高価で時間のかかる修正に繋がります。セキュリティテストをCI/CDに統合することは、チームの時間、費用、フラストレーションを軽減するのに役立ちます。自動化テストツールは、開発者のワークフローへの影響を最小限に抑えながら、これを容易にします。

3.9. 認証

権限昇格とは、あるユーザーがアプリケーションへのアクセス権を取得した後、役割や権限を変更してアクセス権を拡大する攻撃の一種です。特権の昇格は、侵入テストによって発見され、最小限の特権アクセスでアプリケーションを実行することによって軽減され、認証キーを適切に設定することによって回避することができます。

結論

セキュリティは、あらゆるアプリケーションの最も重要な側面の1つであるべきです。このウェブアプリケーション・セキュリティ・チェックリストを参照し、セキュリティの脆弱性を特定し、修正する方法を常に採用するようにしてください。

潜在的な脆弱性への積極的な対処を怠ると、ハッキングを回避する貴重な機会を放棄することになり、時間、リソース、ビジネスにおいてはるかに悪い影響を与える可能性のある侵害に反応しなければならなくなります。

アプリの開発、メンテナンス、セキュリティ保護は、圧倒的なタスクになる可能性があります。そのため、一人で抱え込まないようにしましょう。CMC Japanにご連絡いただければ、最適なソリューションをご提案します。

 

>> ウェブアプリケーション開発に関する無料相談のお申し込みはこちらです。