WebページをSafariに読み込ませるだけでiOSデバイスが再起動するCSSベースの攻撃 11
2010年代のブラクラはOSもクラッシュさせる 部門より
SafariにWebページを読み込ませるだけでiOSデバイスが再起動するという、CSSを使用したDoS攻撃の実証コード(クリック注意)が公開された。ソースコードもGitHubで公開されている(発見者のツイート、Neowin、9to5Mac、ZDNet)。
攻撃はネストした多数の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, 参考になる)
> 2010年代のブラクラはOSもクラッシュさせる
これはグラフィックドライバのバグだと思います
ドライバ側のバグ修正,つまりリソース消費量の上限チェック処理を追加すれば,OSのクラッシュは簡単に回避できます
具体的な挙動の例としては,
ドライバの上限に引っかかる
→ ブラウザでメモリ確保などのAPIが例外を返す
→ ブラウザクラッシュ
→ クラッシュした瞬間にブラウザが浪費していたリソースは全て解放
→ 復旧完了
という感じです
例えば nvidiaのドライバなら,処理時間に上限(デッドライン)が設定できて,デッドラインを超過した処理は
強制終了する,という使い方ができます.この機能を正しく利用できれば
ブラウザが固まっても,しばらく待っていればデッドラインを超過して,自動復旧
という挙動が実現できます.
つまり
> macOS上のSafariでは一時応答しなくなるものの、しばらく待てばタブを閉じることが可能だという。
このような挙動になります.これならOSは死にません
とは言え,グラフィック周りはハードウェア/APIの革新が激しく
セキュリティホール,仕様上の不備が次々と見つかっています.
今後もブラウザ経由でその弱点をつく攻撃が次々と出てくると思います.
(その対策として, Safariなどのブラウザは,デフォルトでGPUの利用がOffになっていたと思います)
Re:部門名 (スコア:2)
『バグではありません仕様です』かもしらない。
めんどくさいから、ウォッチドッグタイマでリセットしたようなふいんき。
Re: (スコア:0)
そうなのかー。
設定を見るたび「GPU使えるなら使えよ」と思ってたんですが、使わない理由があるんですね。
<TABLE> (スコア:1)
テーブルタグを大量に書くあるいはネストするブラウザクラッシャーを思い出した
Re:<TABLE> (スコア:1)
そういやこんなのもあったね。
IE8/9をクラッシュさせるシンプルなCSSコードが見つかる
https://it.srad.jp/article.pl?sid=13/09/12/0710215 [it.srad.jp]
Re:<TABLE> (スコア:2)
すまん、URLをリダイレクト後のものに修正。
IE8/9をクラッシュさせるシンプルなCSSコードが見つかる
https://it.srad.jp/story/13/09/12/0710215/ [it.srad.jp]
"403 Forbidden" (スコア:0)
と、「実証コード(クリック注意)」のリンクを踏むとなるんだけど、なんか間違ってる?
ちなみに、Linux の、たぶんGPUアクセラレーションなしの firefox だ。
403 Forbidden その2 (スコア:0)
Re:403 Forbidden その2 (スコア:1)
じゃ、これをどうぞ http://rce.party/CRASH/safari-reaper.html [rce.party]
Re: (スコア:0)
gistのリンクからお試しあれ
これか? (スコア:0)
今は消えてるけど、iPhoneのChromeのいわゆる「新しいタブ」のおすすめの記事の一つをクリックしたらリブートした。
ただ、何度か試してると()キャッシュが効いたのかChromeエラーページになった。
手打ちしても同じだしwhois情報も問題ない。
皆さんご存知のグループの企業かと(
DNSがやられてなければ……