パスワードを忘れた? アカウント作成
13720294 story
Safari

WebページをSafariに読み込ませるだけでiOSデバイスが再起動するCSSベースの攻撃 11

ストーリー by hylom
2010年代のブラクラはOSもクラッシュさせる 部門より
headless曰く、

SafariにWebページを読み込ませるだけでiOSデバイスが再起動するという、CSSを使用したDoS攻撃の実証コード(クリック注意)が公開された。ソースコードもGitHubで公開されている(発見者のツイートNeowin9to5MacZDNet)。

攻撃はネストした多数のdivエレメント(PoCでは3,486個)に対し、処理に3Dアクセラレーションを用いるCSSのbackdrop-filterプロパティを適用するというもので、急速にグラフィックリソースをすべて消費してカーネルパニックを引き起こすというもの。macOS上のSafariでは一時応答しなくなるものの、しばらく待てばタブを閉じることが可能だという。

基本的に影響を受けるのはWebKitベースのアプリのみのようだが、Microsoft Edge/Inernet Explorerではページの読み込みに失敗する。IEの場合は大量にネストされたdivエレメントの処理の方で問題が発生しているようだ。Windows 7上のIEがクラッシュしたという報告もみられるが、手元のWindows 10環境ではIE自体がクラッシュすることはなかった。このほか、Windows 10上のGoogle Chrome/Mozilla Firefox/Opera/Vivaldi/Brave/UC Browserで試してみたが、特に問題が発生することはなくページが表示された。

なお、Chromeは「chrome://flags/#enable-experimental-web-platform-features」をEnabledにしなければbackdrop-filterプロパティが有効にならない。有効にしてPoCを読み込ませると画面が真っ黒になってしまったが、divエレメントの数を1~2個に減らせばフィルターが適用された状態での表示を確認できた。このほかのブラウザーはbackdrop-filterプロパティをサポートしないため、フィルターは適用されない。Android版のChromeでは「enable-experimental-web-platform-features」をEnableにしてPoCを読み込ませると端末ごとフリーズした。ただし、そのまま放置しておくと数分後にはChromeのタブがクラッシュし、操作可能な状態に戻った。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • 部門名 (スコア:3, 参考になる)

    by annoymouse coward (11178) on 2018年09月19日 15時22分 (#3483209) 日記

    > 2010年代のブラクラはOSもクラッシュさせる

    これはグラフィックドライバのバグだと思います

    ドライバ側のバグ修正,つまりリソース消費量の上限チェック処理を追加すれば,OSのクラッシュは簡単に回避できます

    具体的な挙動の例としては,
    ドライバの上限に引っかかる
    → ブラウザでメモリ確保などのAPIが例外を返す
    → ブラウザクラッシュ
    → クラッシュした瞬間にブラウザが浪費していたリソースは全て解放
    → 復旧完了
    という感じです

    例えば nvidiaのドライバなら,処理時間に上限(デッドライン)が設定できて,デッドラインを超過した処理は
    強制終了する,という使い方ができます.この機能を正しく利用できれば
    ブラウザが固まっても,しばらく待っていればデッドラインを超過して,自動復旧
    という挙動が実現できます.

    つまり
    > macOS上のSafariでは一時応答しなくなるものの、しばらく待てばタブを閉じることが可能だという。
    このような挙動になります.これならOSは死にません

    とは言え,グラフィック周りはハードウェア/APIの革新が激しく
    セキュリティホール,仕様上の不備が次々と見つかっています.
    今後もブラウザ経由でその弱点をつく攻撃が次々と出てくると思います.
    (その対策として, Safariなどのブラウザは,デフォルトでGPUの利用がOffになっていたと思います)

    • by miyuri (33181) on 2018年09月19日 23時14分 (#3483528) 日記

      『バグではありません仕様です』かもしらない。
      めんどくさいから、ウォッチドッグタイマでリセットしたようなふいんき。

      親コメント
    • by Anonymous Coward

      そうなのかー。
      設定を見るたび「GPU使えるなら使えよ」と思ってたんですが、使わない理由があるんですね。

  • by t-ken-rg (47532) on 2018年09月19日 14時48分 (#3483189)
    > 攻撃はネストした多数のdivエレメント(PoCでは3,486個)

    テーブルタグを大量に書くあるいはネストするブラウザクラッシャーを思い出した
  • by Anonymous Coward on 2018年09月19日 15時32分 (#3483220)

    と、「実証コード(クリック注意)」のリンクを踏むとなるんだけど、なんか間違ってる?
    ちなみに、Linux の、たぶんGPUアクセラレーションなしの firefox だ。

  • by Anonymous Coward on 2018年09月19日 15時43分 (#3483232)
    Mac(10.13.6 High Sierra)と(昨日アプデされた)Safari 12.0(Default設定)では、一瞬で403 Forbiddenが表示されて事なき?を得ますね。直したかな?
  • by Anonymous Coward on 2018年09月20日 13時55分 (#3483834)

    今は消えてるけど、iPhoneのChromeのいわゆる「新しいタブ」のおすすめの記事の一つをクリックしたらリブートした。

    ただ、何度か試してると()キャッシュが効いたのかChromeエラーページになった。

    手打ちしても同じだしwhois情報も問題ない。
    皆さんご存知のグループの企業かと(
    DNSがやられてなければ……

typodupeerror

あと、僕は馬鹿なことをするのは嫌いですよ (わざとやるとき以外は)。-- Larry Wall

読み込み中...