□電子掲示板スクリプト「簡易BBS2000」にファイル情報漏えいの脆弱性:ニュース - CNET Japan
脆弱性が確認されたのは、簡易BBS2000 v1.02およびそれ以前のバージョン、簡易BBS2000i v1.02およびそれ以前のバージョンだ。この脆弱性が悪用されると、簡単BBS2000が設置されているサーバ内のファイルが遠隔地の第三者に閲覧される可能性があるほか、ファイルの内容が漏えいする危険性もある。
攻撃者は匿名もしくは特別な認証なしで攻撃できるほか、専門的な知識も必要としない。CGI RESCUEではこの問題を解消するバージョン「v1.03」を公開しており、対象となるバージョンを使用しているユーザーはバージョンアップするよう呼びかけている。
かな〜り改造してるからどこにセキュリティホールがあったのかを突き止めないといけません。
ああ、大変そうだ。。
■CGI RESCUE - ネットサーフレスキューWeb裏技
□CGI RESCUE チャレンジCGI - 簡易BBS2000
□CGI RESCUE チャレンジCGI - 簡易BBS2000i
■29日追記
上記の件でレスキューさんにどの部分をどう修正したのか問い合わせしたところその日のうちにお返事いただきました。
転載許可も得ましたので引用させていただきます。
なお、前のバージョン1.02が手元にないという状態でお答えいただきました。
まことにありがとうございました。
セキュリティーの部分は、
クエリーに . や / 等を入力することにより、
サーバ内部のパスの役割をもたらすというものですので、
200行目くらいに
$val =~ s/\.//g;がもしv1.02に存在しなければ追加してください。
$val =~ s/\///g;
位置は
sub GetQuery {です。
$cmd = $ENV{'QUERY_STRING'};
@pairs = split(/&/,$cmd);
foreach $pair (@pairs) {
($key,$val) = split(/=/,$pair);
$val =~ tr/+/ /;
$val =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",hex($1))/eg;
$val =~ s/\.//g;
$val =~ s/\///g;
$cmd{$key} = $val;
}