条件反射的にwgetしてしまうと危ないかもしれないというお話。
ネット上からファイルを落としたいとき、つい条件反射的にwgetしてしまう自分のような人種の方へ。
ついつい気軽に使ってしまうwget
「じゃあ、○○からファイルをDLして展開しておいてね。」
と指示された時、とりあえずそのファイルをwgetするというのは自分だけではないはず。
しかしそのwget、残念なことに脆弱性(CVE-2016-4971)が見つかったとの事。
JVNDB-2016-003391 GNU Wget における任意のファイルに書き込まれる脆弱性
なにがどうなるのか
今回の脆弱性で指摘されているのは、wgetを使用してファイルをダウンロードしようとした際、
攻撃者のサーバが、あらかじめFTPサーバ上に配置された悪意あるファイルに対するHTTP 302リダイレクトを返す事によって利用者の端末に任意のファイルを配置されてしまうという現象です。
とりあえず、実際に試してみました。
期待する結果
よろしくない結果(FTPサーバ上のリソースへリダイレクトした場合)
リクエストはどちらもサーバ上のsample.txtを取得しているのですが、
今回はサーバからのレスポンスを改ざんし、それぞれHTTPとFTPでwrong.txtを取得するようリダイレクトさせています。
ftpサーバ上のファイルへリダイレクトした場合、ファイル名が維持されず、wrong.txtとして保存されてしまっていますね。
じゃあ、どうするか
修正を適用する
幸いなことに、既に修正が公開されています。
うっかりやらかしてしまう前に、適用しておきましょう。とりあえずオプションを付けてリダイレクトを回避する
実行時に
$ wget --max-redirect=0 <取得対象>
とすれば、ひとまずリダイレクトされてしまう事は防げますね。wgetコマンドを使わない
別のコマンドを使用して問題を回避するのも良いですね。
特に、curlコマンドは連番保存とか素敵なオプションが揃ってますし。