HTTP::Body::MultiPartにまずいセキュリティホールがあるので、しばらくPlack::Request::Upload使うときは気をつける。
経緯
問題
Plack::Request::Upload::filename
やPlack::Request::Upload::tempname
に、コマンドとして動作する文字列が入りうる。
対応
Plack::Request::Upload::filename
やPlack::Request::Upload::tempname
をそのままsystem()
やexec()
や``
やその他で使わない。
一応ディレクトリトラバーサルの対策はされてるっぽいが、コマンドとして実行されるような場合以外でもできるだけそのまま使うのはやめた方がよさそう。
あるいは、修正済みのHTTP::Bodyが出て普及するのを待つ。
追記
Plack::Request::Upload::path
もまずい。というかこれ、Plack::Request::Upload::tempname
と同じ。