XS-Search
October 1, 2020
XS-Search(クロスサイトサーチ)は、XS-Leaksのファミリーの中で重要な攻撃原理です。 この種の攻撃は、クエリベースの検索システムを悪用し、攻撃者のオリジンからユーザー情報をリークさせます1 2。
元々の攻撃は、検索システムが結果を返すかどうかを検出するためにレスポンス時間を用いて、以下のように行います。
- リクエストの結果がヒットした場合の時間(hit)と、結果がヒットしなかった場合の時間(miss)を計測する。
- 検索エンドポイントへのリクエストに対して、timing attackを開始し、最初の文字 (
?q=r
) をブルートフォースで攻撃する。 - 2.で計測した時間が1.で計測したhitである場合、もう一文字追加する (
?q=ra
); そうでなければ、新しい文字 (?q=s
) を試す。 - 最終的に、完全なシークレット(
?q=secret
)を取得できる。
この攻撃は、正確さを期すために複数のタイミング測定が必要であり、インフレーション技術や統計分析によって改善することができます。 さらに、一文字ずつブルートフォースするのではなく、攻撃者は特定の単語や文章を検索して結果の出現箇所のみを漏洩させることができます。
この攻撃の最も重要な部分はその原理であり、様々なXS-Leaksに適用することが可能です。
レスポンス時間の増加方法 #
XS-Searchのインフレーション技術は、2つのレスポンス(hitまたはmiss)を区別しやすくすることで攻撃の精度を上げるために使用されます。 以下の2つのメカニズムにより、攻撃者はより適切な計測を行うことができます。
- 検索システムが結果を返す際に、特定のGETパラメータをレスポンスに反映させるとレスポンスのサイズが大きくなる。これによりレスポンスをネットワーク上に送信する時間が大幅に増加するため、リクエストをより区別しやすくする。
- レスポンスを返す前に、サーバーにさらに計算作業を実行させる。この方法は、より表現力の高いクエリー言語を提供する検索システムに適用できる。(例:Gmailのexclude termsは結果内のすべての文字を処理する)
拡張原理 #
XS-Search に関するオリジナルの研究はタイミング攻撃に焦点を当てていましたが、この攻撃の原理は他の XS-Leak にも拡張することができます。 前述のように信頼性の低いタイミング測定に頼るのではなく、攻撃者は他の XS-Leak を利用して同じ情報を抽出することができます。
クエリベースの検索システムでは、ユーザーはクエリを送信し、そのクエリに関連するレスポンスを取得します。 この動作は、2つの異なる結果をもたらす可能性があります。
- システムが結果を表示し、ページが特定の動作をする(第1の状態)。
- システムが結果を表示せず、ページがステップ1とは異なる方法で動作する(第2の状態)。
上記の両方の挙動をタイミングよりも信頼性の高い XS-Leak で区別できる場合、攻撃者はより効率的な XS-Search 攻撃を行うことができます。 例えば、検索結果によってページのフレーム数が変化する(ステップ1と2が区別できる)場合、この攻撃原理は Frame Counting XS-Leak を適用することができるため、タイミング測定を使用するよりも正確である可能性があります。
対策 #
Attack Alternative | SameSite Cookies (Lax) | COOP | Framing Protections | Isolation Policies |
---|---|---|---|---|
XS-Search (timing) | ✔️ | ❌ | ❌ | RIP 🔗 NIP |
🔗 – 異なるシナリオに対して有効な防御機構を組み合わせる必要があります