Perl “lc()"和"uc()”函数TAINT模式保护安全限制绕过漏洞
发布日期:2011-03-30
更新日期:2011-04-25
受影响系统:
Larry Wall Perl 5.13.10
Larry Wall Perl 5.12.3
Larry Wall Perl 5.12.1
Larry Wall Perl 5.12
Larry Wall Perl 5.10.1
Larry Wall Perl 5.10.1
Larry Wall Perl 5.10
RedHat Fedora 15
RedHat Fedora 14
RedHat Fedora 13
不受影响系统:
Larry Wall Perl 5.14
描述:
--------------------------------------------------------------------------------
BUGTRAQ ID: 47124
CVE ID: CVE-2011-1487
Perl 是一种自由且功能强大的编程语言。
Perl "lc()"和"uc()"函数在实现上存在TAINT模式保护安全限制绕过漏洞,远程攻击者可利用此漏洞在依赖TAINT模式保护功能的Perl应用程序中绕过安全检查。
此漏洞源于更改28011 (ec9af7d);perl程序包的pp_lc函数没有使用sv_setsv_flags, 跳过了两行内容:
if (SvTAINTED(sstr))
SvTAINT(dstr);
<*来源:mmartinec
链接:http://perl5.git.perl.org/perl.git/commitdiff/539689e74a3bcb04d29e4cd9396de91a81045b99
*>
测试方法:
--------------------------------------------------------------------------------
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
> perl -Te 'use Scalar::Util qw(tainted); $t=$0; $u=lc($t); printf("%d,%d\n",tainted($t),tainted($u))'
> perl -Te 'use Scalar::Util qw(tainted); $t=$0; $u=lc($t); printf("%d,%d\n",tainted($t),tainted($u))'
建议:
--------------------------------------------------------------------------------
厂商补丁:
Larry Wall
----------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载: