top of page
IMG_0546.JPG

ついに発表! Top 10 web hacking techniques of 2024 :PortSwigger :2025/02/10

  • 執筆者の写真: 晋次 宮田
    晋次 宮田
  • 2025年2月10日
  • 読了時間: 7分

はじめに


毎年セキュリティ研究者たちの注目を集める、PortSwigger社の「Top 10 Web Hacking Techniques」。今年(2024年版)の発表では、新しい攻撃手法や脆弱性がたくさん取り上げられ、業界でも大きな話題となっています。今回は、発表された10個の手法と、その仕組みや対策のポイントを紹介します。ご自身の開発している内容に影響がありそうなものは、是非チェックしてみて下さい。

ちなみに、今回紹介されている10個の攻撃手法には以下のような特徴があります。

  1. 既存手法の高度化

    • Cookie TossingやWeb Cache Deceptionなど、昔からある技術をさらに洗練して攻撃を成功させています。

  2. 広く使われるツールやライブラリが標的に

    • OAuth、PDF.js、DOMPurify、Apacheなど、多くのウェブサービスが依存している部分に脆弱性が集中しています。

  3. 深いレイヤー(プロトコル・文字コード・設定)に潜む問題

    • アプリケーションのバグだけではなく、HTTPプロトコルや文字コード変換、サーバー設定の“すき間”を狙う攻撃が目立ちます。



トップ10の脆弱性・攻撃手法


  1. Hijacking OAuth flows via Cookie Tossing OAuth認証フローが、偽クッキーを使った「Cookie Tossing」によって乗っ取られてしまう手口。

    1. どんな問題? OAuth(外部SNSなどを使ったログイン)で使われる大事なクッキーを、偽のクッキーで上書きしてしまう攻撃です。

    2. 具体的な攻撃 攻撃者は、本物と同じ名前のクッキーを別のサブドメインなどを通して仕込み、ユーザーのブラウザで上書きさせます。

    3. 被害 攻撃者が勝手にユーザーとしてログインし、個人情報を盗んだり不正操作を行う可能性があります。

  2. ChatGPT Account Takeover - Wildcard Web Cache Deception Web Cache Deception(本来はキャッシュしてはいけない情報が誤ってキャッシュされる問題)の新種で、ChatGPTアカウントの乗っ取り例が紹介されています。

    1. どんな問題? キャッシュの設定ミスにより、本来は見られないユーザーのページが共有キャッシュに保存されてしまい、他の人がアクセスできるようになります。

    2. 具体的な攻撃 特殊なURLや文字コードの使い方で「ログイン中のページ」がキャッシュに載るよう誘導し、そこから他人のアカウントを乗っ取ります。

    3. 被害 ChatGPTなどでの会話履歴やアカウント情報が流出し、勝手にアカウントを操作されるリスクがあります。

  3. OAuth Non-Happy Path to ATO エラー時や想定外のフロー(Non-Happy Path)を悪用して、OAuthを使ったログインを乗っ取る手法。

    1. どんな問題? 成功ルート(Happy Path)ではなく、失敗やエラーなどの例外ルートをうまく使ってログインを乗っ取る攻撃です。

    2. 具体的な攻撃 エラー時にリダイレクト先がフリーになっているなどの設定ミスで、ユーザーを攻撃者の用意した不正サイトへ誘導します。

    3. 被害 結果として、OAuthのトークンが盗まれ、アカウントが丸ごと乗っ取られる可能性があります。

  4. CVE-2024-4367 - Arbitrary JavaScript execution in PDF.js PDF.jsで任意のJavaScriptが実行されてしまう脆弱性。

    1. どんな問題? ブラウザ内でPDFを表示するためのPDF.jsにバグがあり、悪意あるPDFを開くと攻撃者のプログラムが動いてしまいます。

    2. 具体的な攻撃 細工されたPDFをユーザーに表示させるだけで、ブラウザ内で危険なスクリプトが実行されることがあります。

    3. 被害 ユーザーの情報を盗んだり、サイトの機能を勝手に操作されたりする恐れがあります。

  5. DoubleClickjacking: A New Era of UI Redressing 従来のクリックジャッキング対策を突破する、新しい手口「ダブルクリックジャッキング」。

    1. どんな問題? クリックジャッキングの新バージョンで、ユーザーに2回クリックさせるなどの工夫で従来の対策を回避する手法です。

    2. 具体的な攻撃 画面上にダブルクリック用のボタンを見せて、その裏で別の危険な操作が行われるように仕組みます。

    3. 被害 重要なボタンや決済操作を知らぬ間に押され、勝手に支払いが行われたり設定が変更されたりします。

  6. Exploring the DOMPurify library: Bypasses and Fixes HTMLサニタイズでよく使われるDOMPurifyを、ブラウザの特殊な動き(mutation XSS)を利用してバイパスする研究。

    1. どんな問題? HTMLを安全にするDOMPurifyでも、ブラウザの特殊なHTML処理(mutation XSS)を使われると、取り除きたいタグをバイパスされる可能性があります。

    2. 具体的な攻撃 ブラウザがタグを自動で補完・変換する機能を逆手に取り、DOMPurifyが検知・除去しきれないスクリプトを潜り込ませる。

    3. 被害 XSSが成立し、ユーザーのデータが盗まれたり、勝手に画面操作されたりします。

  7. WorstFit: Unveiling Hidden Transformers in Windows ANSI Windowsの文字コード変換に潜む問題を突き止め、多数のCVEを取得した研究。

    1. どんな問題? Windowsの文字コード変換に隠れたバグや特殊なマッピングを狙い、本来通らないデータがすり抜けてしまう。

    2. 具体的な攻撃 攻撃者は、文字コード変換を巧みに操作し、通常のチェックをかいくぐって不正な命令やコードを送り込みます。

    3. 被害 認証チェックを飛び越えたり、任意のコマンド実行につながるなど、大きな被害を引き起こす可能性があります。

  8. Unveiling TE.0 HTTP Request Smuggling HTTPリクエストスマグリングの一種「TE.0」が、Google Cloudなど多くのサービスに影響を与えた事例。

    1. どんな問題? HTTPリクエストを複数のサーバー間でやりとりするときの“ズレ”を悪用する「リクエストスマグリング」の新しい手口です。

    2. 具体的な攻撃 Transfer-Encodingを使って、フロントサーバーとバックエンドサーバーの解釈を食い違わせ、他人のリクエストを混ぜて盗み見ることができます。

    3. 被害 アカウント乗っ取りや重要情報の漏洩、キャッシュ改ざんなど多岐にわたる影響が考えられます。

  9. SQL Injection Isn't Dead: Smuggling Queries at the Protocol Level 従来のSQLインジェクションをさらに進化させ、ネットワークプロトコル自体を利用する攻撃。

    1. どんな問題? 昔からあるSQLインジェクションをさらに進化させ、データベースとの通信そのものを操作して命令を挿入します。

    2. 具体的な攻撃 通信量のサイズ計算でのオーバーフローなどを利用し、アプリが予想しない形でSQLコマンドを送る。

    3. 被害 データベースから重要情報が盗まれたり、管理権限を取られたりすることにつながります。

  10. Confusion Attacks: Exploiting Hidden Semantic Ambiguity in Apache HTTP Server Apache HTTP Serverの設定や処理の曖昧さを突く、新種の複合攻撃。

    1. どんな問題? 世界で広く使われるApache HTTP Serverの設定や処理ルールの曖昧さを徹底的に調べ上げ、複数の攻撃を可能にする「混乱攻撃」です。

    2. 具体的な攻撃 互換性や複数モジュールの組み合わせで発生する“すき間”を使って、リクエストスマグリングやアクセス制限回避などを実現。

    3. 被害 大規模なサイトでも想定外のリクエストが通るようになり、データ漏洩やサーバー乗っ取りのリスクが高まります。



まとめ&対策ポイント


流石にTOP10だけあって、実際に利用されるとクリティカルな問題を引き起こすものばかりです。釈迦に説法かもしれませんが、改めて次の点に注意しておくべきでしょう。

  1. ソフトウェアやライブラリを常に最新に保つ

    • 脆弱性が見つかれば早急にパッチやアップデートが公開されることが多いので、こまめにチェックしましょう。

  2. 多層防御(Defense in Depth)の導入

    • たとえば、CSP(Content Security Policy)でスクリプト実行を制限したり、WAF(Web Application Firewall)やリバースプロキシで通信を監視したりします。

  3. 例外パターンのフロー確認

    • OAuthやリクエスト処理で、成功時だけでなくエラー時の処理やリダイレクト先が安全かを必ず確かめましょう。

  4. 不要な機能は無効化する

    • Apacheやフレームワークの設定を見直して、使っていないモジュールやサービスは閉じておくと、攻撃面が減ります。

被害を防ぐためには、ソフトウェアの最新化と、設定の見直し・監査がどうしても欠かせません。ただ、そこにコストを掛ける判断は、特にスタートアップでは難しいという事情もあります。とはいえセキュリティ事故は、事業の存続にクリティカルな状況を引き起こすので、早く最低限のコストがかけられるように、事業の成長をエンジニアサイドからも押し上げていきましょう!



参考リンク

 
 
bottom of page