web-dev-qa-db-ja.com

「トップレベルのJSONアレイ」とは何ですか?なぜセキュリティリスクなのですか?

次のビデオのタイムマーカー21:40で、Microsoft PDCプレゼンターは、すべてのJSONをラップしてトップレベルの配列ではないことが重要であると述べています。

https://channel9.msdn.com/Events/PDC/PDC09/FT12

ラップされていない最上位アレイのリスクは何ですか?

脆弱性があるかどうかを確認するにはどうすればよいですか?サードパーティから多くのコンポーネントを購入し、コードを開発する外部ベンダーがいます。

66

これは、数年前にJeremiah Grossmanが非常に Gmailに影響する興味深い脆弱性 を発見したためです。一部の人々は nparseable cruft を使用してこの脆弱性に対処しています(このページのbobince氏の技術的な説明は素晴らしいです)。

マイクロソフトがこれについて話しているのは、彼らがブラウザにまだパッチを適用していないからです。 (編集:Edgeの最近のバージョンとIE 10/11はこの問題に対処しています。)Mozillaはこれをjson仕様に脆弱性があるため、パッチを適用しました Firefox 。記録に関しては、Mozillaに完全に同意します。あいまいな脆弱性。

40
rook

Array()コンストラクターを再定義できるためだと思います。ただし、この問題は配列に固有のものではありません。

攻撃(または1つの可能な方法)は次のようなものだと思います。

function Array(n) {
  var self = this;
  setTimeout(function() {
    sendToEvilHackers(self);
  }, 10);
  return this;
}

ブラウザ(または一部のブラウザ)は、[n, n, n]配列表記。したがって、CSRF攻撃は、銀行とのオープンセッションを悪用し、<script>タグを取得してから、poofあなたが所有しています。

12
Pointy