クライアントサイドの巨大なクッキーとサーバーサイドのヘッダーサイズ制限の組み合わせによるDoSについて

もう10年以上前のネタなのですが、いまだに有効だし、最近、セッションを扱っていないならXSSがあってもあまり問題ないという意見を見ることがあるので、サービス提供側として案外面倒なことになる場合がある、という話を書きました。

POCです。
http://www.udp.jp/misc/largecookiedos.html

内容としては、

  1. JavaScriptから巨大なCookieをブラウザに設定できる
  2. HTTPサーバーは受け取れるHTTPヘッダーサイズの上限を持っていて、それを超えていた場合にBad Requestを返す
  3. 1によって2を超えるサイズのCookieが設定可能な場合がある(たぶんほとんどの場合可能)
  4. よってXSSなどによって巨大なCookieを設定されると以降サービスが利用できなくなる

というものです。
Cookieの有効期限を何十年も設定されるとユーザー側で勝手に回復することは期待できないので、なんらか対応が必要になると思います。

昔は、CGIチャットに来る掲示板荒らしがこういうスクリプトを張り付けて利用者を追い出したりしていました。
XSSはつらい問題だと思います。

家宅捜索されることもあるらしいので気を付けましょう。