PyukiWiki/セキュリティー情報

2012/03/18 Fix サーバー上のスクリプトを実行可能な脆弱性に関する修正

  • 0.2.0-p2 以前の全ての PyukiWiki (Nekyo氏作バージョン含む)において、脆弱性があります。
  • 開発版は、0.2.0-p3で対応、Nekyo氏版 0.1.9-p1 で対応します。
  • 安定版、及び、Nekyo氏版の他のバージョンは、対応検討中です。
  • 最新版のPukiWikiを元に修正しています。
  • 元になったYukiWikiは似たようなコードはあるものの、同じ方法で脆弱性は発生しないものと考えています。
  • 本脆弱性により、利用ユーザーの範囲内、または、サーバー全ユーザーに対しての情報を読み込む、または書き込むことが可能となり、また、管理者パスワードが、ファイルに直接パスワードを記述する等暗号化して保存していないと盗まれる可能性があります。

lib/wiki.inc.cgi コード変更箇所

ここで紹介している方法だけでは修正が成功しません。ネストの指示に従い、 } で閉じて下さい。

my $path = "$::plugin_dir/$plugin" . '.inc.pl';

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

if($plugin=~/^\w{1,64}$/) {
my $path = "$::plugin_dir/$plugin" . '.inc.pl';

my $path = "$::explugin_dir/$explugin" . '.inc.pl';

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

if($explugin=~/^\w{1,64}$/) {
my $path = "$::explugin_dir/$explugin" . '.inc.pl';

if($mod=~/^\w{1,64}$/) {

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

if($mod=~/^\w{1,64}$/) {
eval qq( require $mod; );

lib/setting.inc.pl コード変更箇所

(setting.inc.cgiとして利用していない場合、変更不要)

$::skin_name=$style;
&skin_init;

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

if($style=~/^\w{1,64}$/) {
	$::skin_name=$style;
	&skin_init;
}

Nekyo 氏の 0.1.9 index.cgi コード変更箇所

1307行あたり
my $path = "$::plugin_dir/$plugin" . '.inc.pl';

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

if($plugin=~/^\w{1,64}$/) {
my $path = "$::plugin_dir/$plugin" . '.inc.pl';

1345行?あたり

		}
		return 0;
	}
	return $_plugined{$plugin};
1つ、} を追加する。

その他

PyukiWiki Current (CVS)版は、意図的に、またはテストの為に、セキュリティーが落ちた状態のままでCVSに上がることがあります。

その為に、変更内容をよくご確認の上、利用をお願いします。

このサーバーは、CloudCore VPS 新プランのFreeBSDで、virtioで動作しています。

Sitemap