まとめと背景
論文のタイトルは、「Don't Trust The Locals: Investigating the Prevalence of Persistent Client-Side Cross-Site Scripting in the Wild」です。
本稿の.NDSS Conference 2019に掲載されたもので、永続的なクライアントサイドストレージに対するXSSの脅威に関する体系的な研究が中心です。本稿の主な内容と私自身の考え方の一端は以下の通りです。
現在認識されているXSSの主な3つのタイプは、Reflection、Storage、DOM-based XSSであり、他のすべてのタイプのXSSは生態学的にニッチな問題であると考えられています。しかし、学術界にとって重要なことは、永続的なクライアントサイドの保存型XSSが、OWASPのような非学術的な組織で広く認識されていることを認識することです。このような XSS の脅威は、特定のウェブ・アプリケーションの研究に限定されるものではなく、むしろこのような脅威の特 徴を体系的に認識する必要があります。
- 2つの具体的な攻撃方法と、脆弱なサイトの特徴を紹介。
- アレクサで最もアクセス数の多いウェブサイト上位5000サイトに関する実証的研究
- 攻撃がもたらす可能性のある結果と、そのような攻撃を軽減する方法を示します。
技術的背景
クライアント側永続ストレージの技術的背景
- サブドメインは親ドメインのクッキーを設定できます。httpsサイトは同じドメイン名のhttpサイトのクッキーを設定できます。
- クッキーの長さの制限のため、セッションとローカル・ストレージを使用することが可能です。セッションは各ブラウザのセッション・ウィンドウをマークするために使用されますが、有効期限があります。
クライアントサイドのクロスサイトスクリプティングに関する技術的背景
つの攻撃モデル
- この種の攻撃の目的は、セッションを乗っ取り、クッキーなどのフィールドを取得することです。
- 攻撃方法:ハッカーは、まずクライアントのローカルストレージにあるアイテムを悪意のあるコードに変更します。その後、ウェブページのフロントエンドのコードがこの項目を読み取り、ドキュメントに書き込み、攻撃が実行されます。サンプルコード
- 脆弱なのはローカルストレージだけではありません。フロントエンドのコードが容易に変更可能なjsonやその他の非構造化データを読み取ると、ユーザーのブラウザで悪意のあるコードを実行する可能性があります。
つの攻撃モデル
サイバー攻撃者
- 特徴: 1.攻撃者が TLS 証明書を取得できないと仮定すると、http が必要です。 2.サブドメインが HSTS を有効にしておらず、親ドメインが HSTS を有効にしている場合でも、http でサブドメインに接続し、親ドメインのセッ ションを乗っ取る Cookie を親ドメインに設定することができます。しかし、この方法は localStorage には適用できません。なぜなら、同じソースポリシーが http 接続の制御に影響するため、ソースが異なる https の localStorage を変更することはできないからです。
- 攻撃の流れを以下に示します。
既存の反射型xssを悪用する攻撃者
防御方法
緩和方法
- 構造化データをローカルに保存する:jsonをパースするにもかかわらず、ただjsonをevalするのではなく、安全なjsonパース・メソッドを使用してください!
- ローカルに保存されたコード:このケースでは、コードをローカルに保存するアプリケーションの通常の機能を中断するため、コードを完全に削除することはできません。jsのローカルストレージ:jsのローカルストレージを作成する必要があり、Webページを読み取るためにサイトを高速化するために強制的にhttpsを使用するか、またはService Workersの使用や他のものは、安全にローカルのjsコードを格納するために②純粋なhtmlのローカルストレージ:純粋なhtmlは、スクリプトタグを指し、イベントもhtmlではありませんが、この種のサイトでは、直接フィルタリングします。この種のサイトでは、保存されたhtml内のjsを直接フィルタリングすることができます。ローカルjs混合htmlを格納するためのWebページ:アウトレットのこの種の特性を変更する方法はありません行の前にそう格納されていません。
- 設定データのローカル保存:この場合、ウェブサーバーは他のリソースを参照します。ホワイトリストを設定するだけです
- 一般的な防御策:ローカルデータの保存方法の変更、https の使用など。





