アプリケーションレイヤー攻撃 - DDoS 耐性を獲得するための AWS のベストプラクティス

アプリケーションレイヤー攻撃

レイヤー 7 攻撃、すなわちアプリケーションレイヤー攻撃では、アプリケーションそのものが標的になります。こうした攻撃は、SYN フラッドによるインフラストラクチャ攻撃と同様、アプリケーションの特定の機能に過度な負荷をかけることにより、そのアプリケーションの可用性や正規のユーザーへの応答を妨害しようとするものです。この攻撃は、小さなトラフィック量しか生成しない非常に小さなリクエスト量だけで達成できる場合があります。そのため、攻撃を検出し緩和することが難しくなります。アプリケーションレイヤー攻撃には、HTTP フラッド、キャッシュバスティング攻撃、WordPress XML-RPC フラッドなどがあります。

HTTP フラッド攻撃では、攻撃者はウェブアプリケーションの正規ユーザーから送られてきたように見える HTTP リクエストを送信します。一部の HTTP フラッド攻撃では、特定のリソースを標的にしますが、巧妙な HTTP フラッド攻撃の中には、アプリケーションによって人間のインタラクションを模倣するものもあります。したがって、リクエストレート制限のような一般的な緩和技術を利用することが難しくなります。

キャッシュバスティング攻撃は、HTTP フラッドの一種で、クエリ文字列のバリエーションを利用して、コンテンツ配信ネットワーク (CDN) のキャッシングを迂回するというものです。CDN は、キャッシュされた結果を返すことができないため、ページリクエストごとにオリジンサーバーにコンタクトしなければならず、こうしたオリジンフェッチによって、アプリケーションウェブサーバーに余計な負担がかかることになります。

WordPress XML-RPC フラッド攻撃 (WordPress Pingback フラッド) では、WordPress コンテンツ管理ソフトウェアでホストされているウェブサイトが標的になります。攻撃者は XML-RPC API 関数を悪用して、大量の HTTP リクエストを生成します。Pingback 機能では、WordPress によってホストされているウェブサイト (サイト A) から、別の WordPress サイト (サイト B) に、サイト A がサイト B へのリンクを作成したことが通知されます。次に、サイト B はサイト A を取得してリンクの存在を確認しようとします。Pingback フラッドでは、サイト B からサイト A を攻撃するためにこの機能が悪用されます。このタイプの攻撃には明確な特徴があり、通常は HTTP リクエストヘッダーの User-Agent に、WordPress が存在します。

アプリケーションの可用性に悪影響を及ぼす悪意あるトラフィックには、他の形態もあります。スクレイパーボットとは、コンテンツを盗んだり、価格などの競合情報を記録するためにウェブアプリケーションにアクセスする試みを自動化するというものです。ブルートフォース攻撃クレデンシャルスタッフィング攻撃は、アプリケーションの安全領域への不正アクセスを可能にするようにプログラムされた試みです。厳密に言えば、これらは DDoS 攻撃ではありません。しかし、このような自動化特性を持つため、DDoS 攻撃に類似しています。したがって、このホワイトペーパーで紹介する同様のベストプラクティスを実施することで、この攻撃を緩和できる可能性があります。

アプリケーションレイヤー攻撃では、ドメインネームシステム (DNS) も標的になります。これらの攻撃で最も一般的なのは DNS クエリフラッドで、攻撃者は正しい形式の DNS クエリを大量に使用して DNS サーバーのリソースを枯渇させます。これらの攻撃には、キャッシュバスティングの要素も含まれていて、攻撃者はサブドメインの文字列をランダム化し、指定したリゾルバーのローカル DNS キャッシュをバイパスします。その結果、リゾルバーはキャッシュされたドメインのクエリを利用することができず、代わりに信頼できる DNS サーバーに繰り返しコンタクトしなければなりません。これにより、この攻撃が増幅されることになります。

ウェブアプリケーションが Transport Layer Security (TLS) を介して配信される場合、攻撃者が TLS ネゴシエーションプロセスを攻撃することも考えられます。TLS ではコンピューティング負荷が大きくなるため、攻撃者は、読み取り不能なデータ (または判読不能な暗号文) を正当なハンドシェイクとして送信し、それを処理させることでサーバーに余分な負荷をかけることにより、サーバーの可用性を低下させることができます。この攻撃の変形としては、攻撃者が TLS ハンドシェイクを完了しても、継続的に暗号化方式の再ネゴシエーションを繰り返すものがあります。攻撃者は多数の TLS セッションの開始と終了を繰り返すことで、サーバーのリソースを枯渇させようと試みることもあります。