learning center banner

ウェブ攻撃とは何ですか?

ウェブセキュリティの一般的な攻撃手法、防御メカニズム、および解決策に関する記事。

ウェブ攻撃とは、データを盗む、サービスを妨害する、ユーザーを欺く、またはその他の悪意のある目的のためにウェブサイト、ネットワークサービス、またはウェブアプリケーションを標的とする悪意のある活動を指します。デジタル時代において、サイバーセキュリティは企業や個人ユーザーが無視できない重要な問題となっています。ウェブ攻撃手法が進化し続ける中で、一般的なウェブ攻撃に対する理解と防御が特に重要になっています。最終的な目標は、ウェブアプリケーションの円滑な運用を維持し、企業やユーザーがネットワークの損害、データの盗難、不正競争行為を防ぐことです。

一般的なウェブ攻撃の手段とは?

ウェブアプリケーションは、攻撃者の目的、対象組織の業務の性質、およびウェブアプリケーション内の具体的なセキュリティ脆弱性に応じて、さまざまな攻撃タイプや方法に直面する可能性があります。一般的な攻撃の種類には以下が含まれます:

1. DDoS攻撃

分散型サービス拒否(DDoS)は、一般的なサイバー攻撃の手法です。その目的は、サーバーにリクエストを過負荷させ、遅延が発生し、最終的には正当なユーザーからのリクエストに対してサービスを拒否することです。DDoS攻撃はさまざまな方法で分類できますが、一般的には次の3つのタイプにグループ分けされます:

  • 1.ボリュメトリック攻撃: ボットネットがリソースに大量の偽のトラフィックを送信します。このタイプの攻撃は、pingフラッド、偽装パケットフラッド、またはUDPフラッドを使用する場合があります。ボリュームベースの攻撃はビット毎秒(BPS)で測定されます。
  • 2. アプリケーション層攻撃: アプリケーション層攻撃は、HTTP GETやHTTP POSTなどの一般的なリクエストを悪用します。これらの攻撃は、サーバーとネットワークリソースの両方に影響を与えるため、他のタイプのDDoS攻撃と同様の破壊的効果を、より少ない帯域幅で達成できます。この層では正当なトラフィックと悪意のあるトラフィックを区別するのが難しいため、トラフィックは偽装されず、正常に見えます。アプリケーション層攻撃はリクエスト毎秒(RPS)で測定されます。
  • 3. ネットワーク層攻撃: ネットワーク層攻撃(プロトコル攻撃とも呼ばれる)は、ターゲットに大量のパケットを送信します。ネットワーク層攻撃は、オープンなTCP接続を必要とせず、特定のポートをターゲットにしません。ネットワーク層攻撃はパケット毎秒(PPS)で測定されます。ネットワーク層攻撃の例には、以下が含まれます:
  1. スマーフ攻撃: インターネット制御メッセージプロトコル(ICMP)パケットを使用して、IPの脆弱性を悪用し、ネットワークレベルでサーバーを洪水させようとする試み。
  2. SYNフラッド: サーバーへの接続を開始し、その接続を閉じずに、サーバーを圧倒します。このタイプの攻撃は、偽装されたIPアドレスを使用して膨大な量のTCPハンドシェイクリクエストを利用します。

ほとんどの攻撃はボリュームベースですが、「低速かつスロー」DDoS攻撃もあり、小さく安定したリクエストのストリームを送信することで検出を回避し、長期間にわたってパフォーマンスを低下させることができます。低速かつスロー攻撃はスレッドベースのウェブサーバーを標的にし、正当なユーザーに非常に遅い速度でデータを送信しますが、タイムアウトエラーを引き起こすほどには遅くありません。低速かつスロー攻撃に使用されるツールには、Slowloris、R.U.D.Y.、Sockstressなどがあります。

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

CSRF攻撃は、ウェブサイトがユーザーのブラウザを信頼することを悪用します。攻撃者はログイン中のユーザーにリンクをクリックさせたり、ページを訪問させたりし、ユーザーの知らない間に別のログイン済みのウェブサイトで悪意のあるアクションを実行させます。

成功したCSRF攻撃では、攻撃者は被害者ユーザーに意図せず行動を取らせます。例えば、アカウントのメールアドレスを変更させたり、パスワードを変更させたり、資金移動を行わせたりすることがあります。アクションの性質によっては、攻撃者はユーザーのアカウントを完全に制御できる可能性があります。もし侵害されたユーザーがアプリケーション内で特権のある役割を持っている場合、攻撃者はアプリケーションのすべてのデータと機能を完全に制御できるかもしれません。CSRF攻撃が可能であるためには、以下の3つの重要な条件が整っている必要があります:

  1. 関連するアクション: 攻撃者が誘導する理由があるアクションがアプリケーション内に存在します。これは特権アクション(他のユーザーの権限を変更するなど)や、ユーザー特有のデータに対するアクション(ユーザーのパスワードを変更するなど)である場合があります。
  2. クッキーを使用したセッション管理: 行動を取るには、1つ以上のHTTPリクエストを発行する必要があり、アプリケーションはリクエストを行ったユーザーを特定するためにセッションクッキーのみを使用しています。他のトークンやセッションを追跡またはユーザーリクエストを検証するためのメカニズムは存在しません。
  3. 予測不可能なリクエストパラメータがないこと: 行動を取るために必要なリクエストが、攻撃者が決定したり推測したりできない値のパラメータを含んでいません。例えば、ユーザーのパスワードを変更させる場合、関数が既存のパスワードの値を知る必要がある場合、その関数は脆弱ではありません。

例えば、アプリケーションにユーザーが自分のアカウントのメールアドレスを変更できる機能があるとします。ユーザーがこのアクションを実行すると、次のようなHTTPリクエストを行います:

POST /email/change HTTP/1.1
Host: vulnerable-website.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 30
Cookie: session=yvthwsztyeQkAPzeQ5gHgTvlyxHfsAfE

email=wiener@normal-user.com

これはCSRFに必要な条件を満たしています:

  1. ユーザーのアカウントのメールアドレスを変更するというアクションは、攻撃者にとって興味深いものです。このアクションの後、攻撃者は通常、パスワードリセットをトリガーし、ユーザーのアカウントを完全に制御できるようになります。
  2. アプリケーションは、どのユーザーがリクエストを発行したかを特定するためにセッションクッキーを使用しています。他にユーザーセッションを追跡するためのトークンやメカニズムは存在しません。
  3. 攻撃者は行動を取るために必要なリクエストパラメータの値を簡単に判断できます。

これらの条件が整っている場合、攻撃者は次のようなHTMLを含むウェブページを構築できます:

<html>
    <body>
        <form action="https://vulnerable-website.com/email/change" method="POST">
            <input type="hidden" name="email" value="pwned@evil-user.net" />
        </form>
        <script>
            document.forms[0].submit();
        </script>
    </body>
</html>

もし被害者ユーザーが攻撃者のウェブページを訪れると、次のことが起こります:

  1. 攻撃者のページが脆弱なウェブサイトにHTTPリクエストをトリガーします。
  2. ユーザーが脆弱なウェブサイトにログインしている場合、彼らのブラウザは自動的にそのリクエストにセッションクッキーを含めます(SameSiteクッキーが使用されていない場合)。
  3. 脆弱なウェブサイトはリクエストを通常通り処理し、それを被害者ユーザーが行ったものとして扱い、メールアドレスを変更します。

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

クロスサイトスクリプティング(XSS)は、攻撃者がユーザーと脆弱なアプリケーションとの間の相互作用に干渉できるウェブセキュリティの脆弱性です。これにより、攻撃者は同一オリジンポリシーをバイパスでき、異なるウェブサイトを分離することができます。クロスサイトスクリプティングの脆弱性は通常、攻撃者が被害者ユーザーになりすましたり、ユーザーが可能なあらゆるアクションを実行したり、ユーザーのデータにアクセスしたりすることを許可します。被害者ユーザーがアプリケーション内で特権アクセスを持っている場合、攻撃者はアプリケーションの機能とデータを完全に制御できる可能性があります。

クロスサイトスクリプティングは、脆弱なウェブサイトを操作し、悪意のあるJavaScriptをユーザーに返すことで機能します。悪意のあるコードが被害者のブラウザ内で実行されると、攻撃者はアプリケーションとの相互作用を完全に侵害することができます。クロスサイトスクリプティング攻撃には主に3つのタイプがあります。これらは:

反射型XSS: 悪意のあるスクリプトが現在のHTTPリクエストから来る場合。

反射型XSSは、クロスサイトスクリプティングの最も単純なバリエーションです。これは、アプリケーションがHTTPリクエスト内のデータを受信し、そのデータを不安全な方法で即座に応答に含めるときに発生します。

反射型XSSの脆弱性の簡単な例は以下の通りです:

https://insecure-website.com/status?message=All+is+well.
<p>Status: All is well.</p>

アプリケーションはデータの他の処理を行わないため、攻撃者は次のような攻撃を容易に構築できます:

https://insecure-website.com/status?message=<script>/*+Bad+stuff+here...+*/</script>
<p>Status: <script>/* Bad stuff here... */</script></p>

ユーザーが攻撃者が構築したURLを訪問すると、攻撃者のスクリプトがユーザーのブラウザ内で実行され、そのユーザーのアプリケーションとのセッションの文脈で実行されます。この時点で、スクリプトはユーザーがアクセスできるあらゆるアクションを実行し、データを取得することができます。

保存型XSS: 悪意のあるスクリプトがウェブサイトのデータベースから来る場合。

保存型XSS(持続型または二次XSSとも呼ばれる)は、アプリケーションが信頼できないソースからデータを受け取り、そのデータを後のHTTP応答内に不安全な方法で含めるときに発生します。

問題のデータは、HTTPリクエストを介してアプリケーションに提出される場合があります。例えば、ブログ投稿のコメント、チャットルームのユーザーのニックネーム、顧客の注文に関する連絡先情報などです。別の信頼できないソースからのデータの場合もあります。例えば、SMTP経由で受信したメッセージを表示するウェブメールアプリケーション、ソーシャルメディア投稿を表示するマーケティングアプリケーション、ネットワークトラフィックからのパケットデータを表示するネットワーク監視アプリケーションなどです。

保存型XSSの脆弱性の簡単な例は、メッセージボードアプリケーションがユーザーにメッセージを提出させ、他のユーザーに表示する場合です:

<p>Hello, this is my message!</p>

アプリケーションはデータの他の処理を行わないため、攻撃者は他のユーザーを攻撃するメッセージを簡単に送信できます:

<p><script>/* Bad stuff here... */</script></p>

DOMベースのXSS: 脆弱性がサーバーサイドコードではなく、クライアントサイドコードに存在する場合。

DOMベースのXSS(DOM XSSとも呼ばれる)は、アプリケーションが信頼できないソースからのデータを不安全な方法で処理するクライアントサイドのJavaScriptを含む場合に発生します。通常、データをDOMに書き戻すことによって行われます。

次の例では、アプリケーションが入力フィールドから値を読み取り、その値をHTML内の要素に書き込むためにJavaScriptを使用しています:

var search = document.getElementById('search').value; var results = document.getElementById('results'); results.innerHTML = 'You searched for: ' + search;

攻撃者が入力フィールドの値を制御できる場合、彼らは自身のスクリプトを実行させる悪意のある値を簡単に構築できます:

You searched for: <img src=1 onerror='/* Bad stuff here... */'>

典型的なケースでは、入力フィールドはHTTPリクエストの一部(例えば、URLのクエリ文字列パラメータ)から populatedされ、攻撃者は悪意のあるURLを使用して攻撃を行うことができます。

4. SQLインジェクション攻撃(SQLI)

SQLインジェクション(SQLi)は、攻撃者がアプリケーションがデータベースに対して行うクエリに干渉できるウェブセキュリティの脆弱性です。これにより、攻撃者は通常取得できないデータを表示できる可能性があります。これには、他のユーザーに属するデータや、アプリケーションがアクセスできる他のデータが含まれる場合があります。多くの場合、攻撃者はこのデータを変更または削除でき、アプリケーションのコンテンツや動作に永続的な変更を加えることができます。場合によっては、攻撃者はSQLインジェクション攻撃をエスカレートして、基盤となるサーバーや他のバックエンドインフラストラクチャに侵入できる可能性があります。また、これによりサービス拒否攻撃を実行できる可能性もあります。

成功したSQLインジェクション攻撃は、パスワード、クレジットカードの詳細、個人ユーザー情報などの機密データへの無許可のアクセスをもたらす可能性があります。SQLインジェクション攻撃は、多くの著名なデータ漏洩事件で使用されており、評判の損失や規制上の罰金を引き起こしています。場合によっては、攻撃者が組織のシステムに持続的なバックドアを取得し、長期間にわたって気づかれない状態で妥協することもあります。

基本的なSQLインジェクション: アプリケーションのログインフォームが次のSQLクエリでユーザーを検証していると仮定します:

SELECT * FROM users WHERE username = '$username' AND password = '$password';

アプリケーションがユーザー入力を適切にサニタイズしていない場合、攻撃者はユーザー名またはパスワードフィールドに次のような特別に作成された入力を入力することができます:

' OR '1'='1

これにより、SQLクエリは次のようになります:

SELECT * FROM users WHERE username = '' OR '1'='1' AND password = '' OR '1'='1';

'1'='1'は常に真であるため、このクエリはすべてのユーザーを返し、無許可のアクセスを引き起こす可能性があります。

クエリを終了させるためにコメントを使用する: 攻撃者はSQLコメント記号--または/* */を使用してクエリの条件の一部を終了させ、すべてのデータのクエリを生成する可能性があります。例えば:

' OR 1=1 -- 

これにより、クエリのパスワードチェック部分がコメントアウトされ、セキュリティチェックがバイパスされます。

ユニオンクエリインジェクション: 攻撃者はUNION演算子を使用して、自身の悪意のあるクエリを元のクエリと組み合わせることができます。これにより、データベースが追加の機密情報を返す可能性があります。例えば:

' UNION SELECT * FROM users WHERE '1' = '1

タイム遅延インジェクション: 攻撃者は、データベースが応答を遅延させるコマンドを挿入することで、アプリケーションのSQLインジェクションへの脆弱性をテストできます。例えば、MySQLでは:

' OR SLEEP(10) --

このクエリを実行した後、アプリケーションが10秒遅延する場合、それはSQLインジェクション攻撃に対する脆弱性がある可能性を示します。

重要なウェブアプリケーション防御戦略とは?

上述のように、ウェブアプリケーションはさまざまな手段や種類の攻撃を受けるため、防御戦略も多様で変化しています。システムの脆弱性や攻撃手法が継続的にアップグレードされる中、現代のインターネットの脅威状況は非常に厳しいものとなっています。特定のビジネスニーズを満たす「チップ」セキュリティサービスなしでは、どの企業、組織、または個人も攻撃を受ける可能性があります。

  1.  DDoS保護: DDoS保護とは、悪意のあるトラフィックの急増によってサービスが圧倒され、サーバーが負担を強いられる状況を指します。リアルタイムのネットワークトラフィックモニタリングに基づいて、DDoS攻撃が特定されると、トラフィックは即座に浄化され、フィルタリングされます。DDoS保護は、攻撃プロファイル、行動パターン分析、AIによる認識、その他の保護アルゴリズムに基づいて事前設定された防御戦略も提供し、サーバーを安定して稼働させます。
  2. ウェブアプリケーションファイアウォール(WAF): WAFは、ウェブアプリケーションとインターネット間のHTTPトラフィックをフィルタリングおよび監視し、ウェブアプリケーションのセキュリティを保護します。通常、WAFは、クロスサイトリクエストフォージェリ、クロスサイトスクリプティング(XSS)、ファイルインクルージョン、およびSQLインジェクションなど、さまざまな形式の攻撃からウェブアプリケーションを保護します。WAFは新しい脆弱性が非常に早く静かに現れるため、ウェブシステムにとって重要です。
  3. ボット管理(BOT管理): 機械学習やその他の専門的な検出方法を使用して、自動化されたトラフィックと人間のユーザーを区別し、前者がウェブアプリケーションにアクセスするのを防ぎます。
  4. クライアント側のセキュリティ: 新しいサードパーティのJavaScript依存関係や、私たちのウェブアプリケーションが依存するサードパーティコードの変更をチェックし、悪意のあるフロントエンドの脆弱性をより早くキャッチするのを助けます。
  5. 攻撃面管理: 攻撃面管理ツールを使用して、脆弱性のあるウェブページをマッピングし、テストし、潜在的なセキュリティリスクを特定し、手動でリスクの存在を確認します。

Tencent EdgeOneはウェブアプリケーションに対するウェブ攻撃をどのように防止しますか?

Edge Security Acceleration Platform EO(Tencent EdgeOne、以下EdgeOneと呼ぶ)は、多くの都市に広がるグローバルネットワークを運営しています。これはTencentのエッジコンピューティングノードに基づいて、DDoS保護、ウェブアプリケーションファイアウォール、ボット管理、その他のセキュリティソリューションを含む多くのセキュリティサービスを提供します。これにより、eコマースや小売、金融サービス、コンテンツ情報、ゲームなどの業界を保護し、ユーザー体験を向上させています。

EdgeOneは任意のデータセンターで運営でき、攻撃をその源で遮断します。その機能はウェブサイトのサービスやパフォーマンスを補完し、使用することでサービスの加速だけでなく、さらなるウェブ攻撃から保護します。さらに、すべてのEdgeOneサービスはさまざまなウェブインフラストラクチャに適しており、通常は簡単な設定で開始できます。

詳細については、 アクセラレーションサービスおよびアクセスセキュリティサービス または EdgeOneにサインアップしてください。 現在、無料トライアルを開始しましたので、こちらをクリックまたはお問い合わせください