HTTP::Body::MultiPartにまずいセキュリティホールがあるので、しばらくPlack::Request::Upload使うときは気をつける。

経緯

JVNのフィード見てたらPerlモジュールのセイキュリティホールがあったので念の為確認したら思ったより危険だった。

JVNのページ
JVNDB-2013-005291 - JVN iPedia - 脆弱性対策情報データベース
セキュリティホールの詳細
#721634 - libhttp-body-perl: CVE-2013-4407: HTTP::Body::Multipart critical security bug - Debian Bug report logs
問題

Plack::Request::Upload::filenamePlack::Request::Upload::tempnameに、コマンドとして動作する文字列が入りうる。

対応

Plack::Request::Upload::filenamePlack::Request::Upload::tempnameをそのままsystem()exec()``やその他で使わない。

一応ディレクトリトラバーサルの対策はされてるっぽいが、コマンドとして実行されるような場合以外でもできるだけそのまま使うのはやめた方がよさそう。

あるいは、修正済みのHTTP::Bodyが出て普及するのを待つ。


追記

Plack::Request::Upload::pathもまずい。というかこれ、Plack::Request::Upload::tempnameと同じ。