Make組ブログ

Python、Webアプリや製品・サービス開発についてhirokikyが書きます。

Djangoにすごく長いCSRF token送りまくるDOS

フラフラとDjangoのチケットみてると
#16827 (validate CSRF token (Check length)) – Django
こんなものがあった。
すごく長いCSRF tokenもったリクエスト送りまくるDOS攻撃があるらしいんですが、Djangoはどんなに長いCSRF tokenでも受け付けてしまうらしい。

そう言われるとやらざるを得ない


Too log CSRF token: Django · GitHub
こんなものを作ったので、1.3.1を相手にDjangoのmanage.py shellから

>>> import long_csrf
>>> long_csrf.kill()

とやればいい。

2回ぐらい kill を呼び出すとPythonのプロセスごと殺されてしまう。ただ、何回かやってみるとたまにサーバごと落ちる。
まーこれは内部からしか実行できやんのでDOS攻撃にはもちろん使えません。ただの実験です。

この問題はすでに解決されていて、1.4b1をみるとちゃんと適応されている。(Fixes #16827. Adds a length check to CSRF tokens before applying the … · django/django@a77679d · GitHub