
HTML5 の Web ストレージ API に HDD の空き容量を簡単に埋められるバグ 16
ストーリー by reo
仕様上の問題か 部門より
仕様上の問題か 部門より
ある Anonymous Coward 曰く、
スタンフォード大コンピューターサイエンス学科の学生である Feross Aboukhadijeh 氏は、Chrome、Safari、Opera の各ブラウザに共通する深刻なバグを発見した。これを悪用すれば、トラップを仕掛けられた Web ページをクリックするだけで、HDD などのローカルストレージが満杯にされてしまうらしい (Feross.org の記事、Chrome の Issues、本家 /. 記事より) 。
説明によれば HTML5 には、5 ~ 10 MB のデータを保存するための Web ストレージのための API が用意されているという。規定ではこの API を使用するとき、ブラウザ側で書き込み可能なデータの総量を制限するよう指定されており、Google Chrome では 1 ドメインあたり 2.5 MB、Firefox や Opera では 5 MB、Internet Explorer では 10 MB に制限が設定されている。しかし、1.filldisk.com、2.filldisk.com、3.filldisk.com などのサブドメインをたくさん作った場合、この制限を回避できてしまうようだ。
ただし、Aboukhadijeh 氏によれば、Firefox ではこの攻撃ができないように対策が施されているとのこと。
ご参考 (スコア:4, 参考になる)
Bug 367373 [mozilla.org] - DOM storage quota should exclude offline-app allowed domains
6年前の仕様で既に警告されていたらしい (現行の仕様 [w3.org]だと"subdomains"ではなく"multiple domains"だけど)。
デモをみよう (スコア:2, 興味深い)
さあ、みんなもハードディスクを埋め埋めしよう!
http://www.filldisk.com/ [filldisk.com] (ハードディスクが埋まるデモ。開くだけで猛烈に空き容量が減るので閲覧注意。空き容量を返してもらうボタンもあります)
オープンソースでコードも公開されてるから、自分専用にカスタマイズすることもできるよ。やったね!
https://github.com/feross/filldisk.js [github.com]
Re:デモをみよう (スコア:1)
1GB達する前にちょろめが落ちたw
Re: (スコア:0)
HDDよりも先にメモリーを使い切る模様
うちのChromeは500MBちょっとで落ちたよ
Re: (スコア:0)
職場で開く場合は音量注意!
webkit? (スコア:0)
Firefox以外と聞いて思いついた単語ですけど。
しかし、タレコミ文によるとブラウザ別にサイズが違いますね。
設定値の違いかな?
Re:webkit? (スコア:3, すばらしい洞察)
IEも(まだWebkit採用前と思われる)Operaも入ってますがな。
仕様バグかと思いきや、標準自体はこの事態を想定しててちゃんとそういうのはまとめてサイズ上限設定しろよと書いてあるのに、Firefox以外のブラウザはその辺の実装をしていなかったってことですね。
制限されても困るのでは? (スコア:0)
1.filldisk.com、2.filldisk.com、3.filldisk.com などのサブドメインをたくさん作った場合、この制限を回避できてしまう
でも、ホスティング業者を使っている場合、サブドメイン毎にサービス提供者が違うことが多いわけでして、勝手に制限されても、困るのではないか? 一番無難なのは、ドメインごとに、ストレージの使用許可をユーザに確認を取ることだろう。flashなんかでも、ドメインごとに使用可能ストレージのサイズを制限できるのだから、Webストレージも同じようにサブドメインを含むドメインとサイズを制限できれば問題ないだろう。
Re:制限されても困るのでは? (スコア:3, 参考になる)
W3Cの仕様でも、「割り当て上限に達したら、ユーザに確認を取ってもよい(MAY)」とされています。
Web Storage [w3.org]
Re:制限されても困るのでは? (スコア:2, すばらしい洞察)
むしろ、確認を取らずに勝手にローカルストレージを使う今の状況が異常。
Firefoxのように全体で容量を制限していたとしても、そのブラクラにアクセスしただけで他のWebサイトがローカルストレージを使えなくなってしまう事に変わりはない。
Re:制限されても困るのでは? (スコア:1)
いやいや…全く異常じゃないよ
10年前数KBだったストレージ(Cookie)が数MBになったくらいのものだし
1ドメイン10MB、サブドメイン100MB、全体で1000MBくらいは確認なしでいいと思う
Re: (スコア:0)
ドメイン辺り16KB全合計32MBとかで十分というか暗黙で受け入れても良いと思えるのは設定ファイル的な内容のクッキーくらいだから、そもそもローカルストレージを勝手に使われる時点で嫌だなぁ・・・
# C:\の空き容量が2GB切ってるから1GBも食われたらたまらんとか言うわけではない・・・はず
Re: (スコア:0)
ローカルストレージも基本設定のためのものだよ
画像とか大きなのは向かない、そういうのはIndexedDBとか非同期なのに入れる
それに勝手に使われるってなによ?
マニフェストキャッシュとかもいれると片手には収まらないくらいの種類のDBがある中ローカルストレージだけ文句言うのは変だよ
それに一番基礎的なDBとしてある程度、5年10年後まで使えるような仕様じゃないといけないから10MBくらいあってもいい
今のCookieみたいに10年後には10MBとか欠片みたいなものになるよ
IEの正しさが証明された (スコア:0, おもしろおかしい)
HTML5に対応しないIEだけがHTML5に対応して悲惨な目にあっているブラウザたちを笑っている
HTML5はやはり悪魔だったのだ
Re: (スコア:0)
IEも対象。後からIE抜きにしてタレコミしたのが採用されたから http://srad.jp/submission/50273/HDD%E3%81%AE%E7%A9%BA% [srad.jp]
Re: (スコア:0)
なんとひどいFUD
ハードディスクを埋め尽くすどころか任意のファイルを書き込んで実行するウイルスを流行らせたブラウザの信者はさすが言うことが違いますね。