blog

ペーパーノート:NDSS19 ローカルを信じるな

概要と背景\n論文の正式名称は「Don't Trust The Locals: the Client-Side Cross-Sit (ローカルを信じるな: クライアントサイドのクロスサイト)」です。...

Sep 7, 2020 · 4 min. read
シェア

まとめと背景

論文のタイトルは、「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 の使用など。
Read next

Vue、webpackのエラー解決(Module parse failed: Unexpected token (1:0) You may need an ap

記事の初出 --- (英語)\n\nエラーの内容は以下の通りです:\n\nWebpack はデフォルトでは vue ファイルを扱えないので、自分でプラグインを追加して処理する必要があります。\n解決方法\nステップ1: プラグインをインストールします。\ncnpm i vue-loader vue-templ

Sep 7, 2020 · 1 min read