TWiki多个安全漏洞

漏洞起因
输入验证错误
危险等级

影响系统
TWiki 5.x
TWiki 4.x

不受影响系统

危害
远程攻击者可以利用漏洞执行任意命令或进行拒绝服务攻击。

攻击所需条件
攻击者必须访问TWiki。

漏洞信息
TWiki是一款WIKI百科程序。
TWiki存在多个安全漏洞:
-%MAKETEXT{}% TWiki变量用于本地化用户接口内容,使用特制的MAKETEXT,恶意用户可通过Perl反引号操作符(“) 执行shell命令。问题存在于Locale::Maketext CPAN模块中。
-提交%MAKETEXT{“This is [_9999999999999999] Evil”}% 可导致消耗所有内存造成拒绝服务攻击。
-提交%MAKETEXT{“This is [_0] problematic”}%可在某些情况下使应用程序崩溃。

测试方法

厂商解决方案
用户可参考如下厂商提供安全补丁修复此漏洞:
=======( CUT 8><— )===============================================
— TWiki.pm (revision 24029)
+++ TWiki.pm (working copy)
-4329,8 +4329,23
# unescape parameters and calculate highest parameter number:
my $max = 0;
– $str =~ s/~\[(\_(\d+))~\]/ $max = $2 if ($2 > $max); “[$1]”/ge;
– $str =~ s/~\[(\*,\_(\d+),[^,]+(,([^,]+))?)~\]/ $max = $2 if ($2 >
$max); “[$1]”/ge;
+ my $min = 1;
+ $str =~ s/~\[(\_(\d+))~\]/
+ $max = $2 if ($2 > $max);
+ $min = $2 if ($2 < $min);
+ “[$1]”/ge;
+ $str =~ s/~\[(\*,\_(\d+),[^,]+(,([^,]+))?)~\]/
+ $max = $2 if ($2 > $max);
+ $min = $2 if ($2 < $min);
+ “[$1]”/ge;
+
+ # Item7080: Sanitize MAKETEXT variable:
+ return “MAKETEXT error: No more than 32 parameters are allowed”
if( $max > 32 );
+ return “MAKETEXT error: Parameter 0 is not allowed” if( $min < 1 );
+ if( $TWiki::cfg{UserInterfaceInternationalisation} ) {
+ eval { require Locale::Maketext; };
+ $str =~ s#\\#\\\\#g if( $ || !$ &&
$Locale::Maketext::VERSION < 1.23 );
+ }
# get the args to be interpolated.
my $argsStr = $params->{args} || “”;
=======( CUT 8><— )===============================================

漏洞提供者
George Clark

评论关闭。