ウェブ攻撃とは、データを盗む、サービスを妨害する、ユーザーを欺く、またはその他の悪意のある目的のためにウェブサイト、ネットワークサービス、またはウェブアプリケーションを標的とする悪意のある活動を指します。デジタル時代において、サイバーセキュリティは企業や個人ユーザーが無視できない重要な問題となっています。ウェブ攻撃手法が進化し続ける中で、一般的なウェブ攻撃に対する理解と防御が特に重要になっています。最終的な目標は、ウェブアプリケーションの円滑な運用を維持し、企業やユーザーがネットワークの損害、データの盗難、不正競争行為を防ぐことです。
ウェブアプリケーションは、攻撃者の目的、対象組織の業務の性質、およびウェブアプリケーション内の具体的なセキュリティ脆弱性に応じて、さまざまな攻撃タイプや方法に直面する可能性があります。一般的な攻撃の種類には以下が含まれます:
分散型サービス拒否(DDoS)は、一般的なサイバー攻撃の手法です。その目的は、サーバーにリクエストを過負荷させ、遅延が発生し、最終的には正当なユーザーからのリクエストに対してサービスを拒否することです。DDoS攻撃はさまざまな方法で分類できますが、一般的には次の3つのタイプにグループ分けされます:
ほとんどの攻撃はボリュームベースですが、「低速かつスロー」DDoS攻撃もあり、小さく安定したリクエストのストリームを送信することで検出を回避し、長期間にわたってパフォーマンスを低下させることができます。低速かつスロー攻撃はスレッドベースのウェブサーバーを標的にし、正当なユーザーに非常に遅い速度でデータを送信しますが、タイムアウトエラーを引き起こすほどには遅くありません。低速かつスロー攻撃に使用されるツールには、Slowloris、R.U.D.Y.、Sockstressなどがあります。
CSRF攻撃は、ウェブサイトがユーザーのブラウザを信頼することを悪用します。攻撃者はログイン中のユーザーにリンクをクリックさせたり、ページを訪問させたりし、ユーザーの知らない間に別のログイン済みのウェブサイトで悪意のあるアクションを実行させます。
成功したCSRF攻撃では、攻撃者は被害者ユーザーに意図せず行動を取らせます。例えば、アカウントのメールアドレスを変更させたり、パスワードを変更させたり、資金移動を行わせたりすることがあります。アクションの性質によっては、攻撃者はユーザーのアカウントを完全に制御できる可能性があります。もし侵害されたユーザーがアプリケーション内で特権のある役割を持っている場合、攻撃者はアプリケーションのすべてのデータと機能を完全に制御できるかもしれません。CSRF攻撃が可能であるためには、以下の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に必要な条件を満たしています:
これらの条件が整っている場合、攻撃者は次のような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>
もし被害者ユーザーが攻撃者のウェブページを訪れると、次のことが起こります:
クロスサイトスクリプティング(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を使用して攻撃を行うことができます。
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インジェクション攻撃に対する脆弱性がある可能性を示します。
上述のように、ウェブアプリケーションはさまざまな手段や種類の攻撃を受けるため、防御戦略も多様で変化しています。システムの脆弱性や攻撃手法が継続的にアップグレードされる中、現代のインターネットの脅威状況は非常に厳しいものとなっています。特定のビジネスニーズを満たす「チップ」セキュリティサービスなしでは、どの企業、組織、または個人も攻撃を受ける可能性があります。
Edge Security Acceleration Platform EO(Tencent EdgeOne、以下EdgeOneと呼ぶ)は、多くの都市に広がるグローバルネットワークを運営しています。これはTencentのエッジコンピューティングノードに基づいて、DDoS保護、ウェブアプリケーションファイアウォール、ボット管理、その他のセキュリティソリューションを含む多くのセキュリティサービスを提供します。これにより、eコマースや小売、金融サービス、コンテンツ情報、ゲームなどの業界を保護し、ユーザー体験を向上させています。
EdgeOneは任意のデータセンターで運営でき、攻撃をその源で遮断します。その機能はウェブサイトのサービスやパフォーマンスを補完し、使用することでサービスの加速だけでなく、さらなるウェブ攻撃から保護します。さらに、すべてのEdgeOneサービスはさまざまなウェブインフラストラクチャに適しており、通常は簡単な設定で開始できます。
詳細については、 アクセラレーションサービスおよびアクセスセキュリティサービス、 または EdgeOneにサインアップしてください。 現在、無料トライアルを開始しましたので、こちらをクリックまたはお問い合わせください。