In either case, developers SHOULD NOT include either 'unsafe-inline', or data: as valid sources in their policies.
Both enable XSS attacks by allowing code to be included directly in the document itself; they are best avoided completely.
ブログ記事の攻撃手順ってこのストーリーの2段落目に対応するざっくりした説明のことですよね? 「An attacker may be able to bypass the policy specified by the Content-Security-Policy header, causing an information leak. 」 (攻撃者はCSPによる制限を回避して情報を流出させることが出来る)ってなってますし、回避対象が制御下に有るわけが
ブログ記事の攻撃手順は「There are three main components to an exploitation attempt: setting the Content-Security-Policy for the browser with "unsafe-inline" directive to allow for inline script code, then~」の部分です。元から'unsafe-inline'がセットされたWebサイトを探してくるのではなく、攻撃者が何らかの方法で'unsafe-inline'をセットすると読むのが自然だと思います。
そもそも 'unsafe-inline' は危険なので使うべきではないとW3C勧告に書かれている (スコア:3)
CSP を導入しているけど、インラインスクリプトが使えないと不便だからか 'unsafe-inline' を許可しているサイトも多いですが、危険だし、中途半端で美しくないポリシーだと思います。
6. Content Security Policy Directives [w3.org] より
'unsafe-inline' は XSS 攻撃を可能にするので、いずれのケースであっても、指定すべきでな
そういう問題ではない (スコア:1)
被害者のサイトに CSP 'unsafe-inline' の指定が必要 (スコア:3, 参考になる)
headless さんは、加害者のサイト http://bad.example.com/ [example.com] のWebサーバ に「Content-Security-Policy: 'unsafe-inline';」を指定して、http://bad.example.com/ 上の JavaScript コードで about:blank を開き、about:blank に注入した JavaScript コードから 被害者のサイト http://good.example.com/ [example.com] にアクセスする方法で脆弱性を利用するのだと、誤解しているように思えます。
TALOS-2017-0306 - Cisco Talos [talosintelligence.com] の Details を読んでみま
Re: (スコア:1)
Re: (スコア:0)
CSPをセットすると基本的に未設定のときよりも制約が厳しくなるだけなので、
攻撃者が自分のサイトにCSPをセットする意味がないように思います。
何もなければsame-origin policyだけなのでリクエスト送信も、
レスポンスのプラウザ主体での利用も制限されないはずです。
ブログ記事の攻撃手順ってこのストーリーの2段落目に対応するざっくりした説明のことですよね?
「An attacker may be able to bypass the policy specified by the Content-Security-Policy header, causing an information leak. 」
(攻撃者はCSPによる制限を回避して情報を流出させることが出来る)ってなってますし、回避対象が制御下に有るわけが
Re:被害者のサイトに CSP 'unsafe-inline' の指定が必要 (スコア:1)
Re:被害者のサイトに CSP 'unsafe-inline' の指定が必要 (スコア:2)
「There are three main components to an exploitation attempt: ~略~」の段落については、あくまでも脆弱性の検証をするための実証方法・実証コードを示しているに過ぎません。
「攻撃者が何らかの方法で'unsafe-inline'をセットすると読む」のではなく「脆弱性の再現検証を行う際には、検証者が 'unsafe-inline'をセットする(あるいは 'unsafe-inline' がセットされている環境を使用する)」と読むべきです。
こう書くと、「exploitation attempt」の日本語訳は「悪用しようとする試み」なのだから「攻撃手段」だと反論されそうですが、「exploitation」は「exploit」の名詞系です。「exploit」という言葉は、情報セキュリティ分野での専門用語でして、エクスプロイトのWikipedia [wikipedia.org] を見れば分かるように「セキュリティ確認目的での、脆弱性検証するための実証コード(Proof of concept:PoC)を指すこともある。」(Wikipediaより引用)とされています。ブログに書いてあるのは「攻撃手順」というより「脆弱性の再現検証のための手順」です。
当該脆弱性を実際に悪用するクラッカーが「何らかの方法で'unsafe-inline'をセットする」のは、合理的ではありません。攻撃者が「何らかの方法」例えばWebサーバの脆弱性を利用してHTTPヘッダーを操作できるのであるならば、何もそんなことをしなくても「Content-Security-Policy」を削除すれば CSP は完全に回避できるわけで、この脆弱性を利用する必要性は全くありません。
Re: (スコア:0)
#3276994 に書かれてることも理解できないのにMSを悪者にしようと必死にならなくてもいいよ
運営なんだからしっかりしようよ、間違いは認めなよ
それもできないでMS叩きしようと固執するのが今のスラドなの?
Re: (スコア:0)
最終的にCSPを回避できるという脆弱性なのですでにCSPか解除(未設定)されてるところにCSPを設定して攻撃する前提は成立しないし、
そもそも「何らかの方法」でCSP設定を好きに変更できる脆弱性があるならいっそ解除してしまえば良いわけでやはり脆弱性として成立しない。
脆弱性を結果から順に辿れば間違えようがないだろこんなの・・・
・CSPの迂回が可能という脆弱性
・CSPの迂回が発生するのはブランクウィンドウ内のコード
・ブランクウィンドウ生成とその中のコードをスクリプトで生成する
・生成するスクリプトはインラインで実行される
・unsafe-inlineがセットされた状況である
・脆弱性の前提としてXSSが関係している
サイト一つとブランクウィンドウしか出てこなくて、CSPの迂回が目的でCSPがセットされているのはそのサイト。
つーかさ、普段は誤字脱字をさらっと修正しててhylomより遥かに優秀な感じなのになんでこのストーリーだけこんな馬鹿晒してんの?
Re:被害者のサイトに CSP 'unsafe-inline' の指定が必要 (スコア:1)
Re: (スコア:0)
つまりheadlessさんは一次情報のTalos detailsよりも
単なるまとめサイトみたいなメディアThe Registerを信用して
まんまと誤解したということね。
CSPとかセキュリティの基礎知識がないと、仕方ないね。
exploitは(というか英語はなんでもそうだけど)動詞にも名詞にも使いますね。
だいたいは冠詞でわかるのでは?
I lookとTake a lookみたいに。
ていうか反論するとこ、そこなの?
もうスラドはheadlessさん一人でもっている状態なんだから、
見苦しい言い訳はやめて、今後のいい記事につなげてくださいよ。
Re: (スコア:0)
新iPhoneの直前でMSやGoogleをなんとしても叩くようApple陣営の方から依頼されてるんだろうね
Re:被害者のサイトに CSP 'unsafe-inline' の指定が必要 (スコア:1)
Re: (スコア:0)
落とした表現でっていうなら
『「'unsafe-inline'」を有効にし、』
→『「'unsafe-inline'」を有効な状態で、』
とするほうが良いのでは。
あと、
『新しいドキュメントは元のドキュメントと同一生成元だが、CSPが無効化されるため』
→『新しいドキュメントはCSPが無効化されるため』
『同一生成元ポリシーを無視して他のWebサイトからデータを読み取ることができる。 』
→『CSPを無視して他のWebサイトへデータを含んだリクエストを送ることができる。 』
とでもしときましょうよ。