安全研究
安全漏洞
Linux-PAM配置文件非ASCII用户名解析本地权限提升漏洞
发布日期:2009-03-05
更新日期:2009-03-06
受影响系统:Linux-PAM Linux-PAM 1.0.3
不受影响系统:Linux-PAM Linux-PAM 1.0.4
描述:
BUGTRAQ ID:
34010
CVE(CAN) ID:
CVE-2009-0887
可插拔认证模块(PAM)是用于认证用户的机制,使用在多种Linux版本上。
libpam库在试图认证用户名中包含有unicode/utf-8字符SSH登录请求时没有正确地解析PAM配置文件中的非ascii用户名。
pam_misc.c文件62、65和95行的_pam_StrTok函数存在错误的char->int类型转换,如果字符值大于127就会导致出现负数。例如,在pam_misc.c的95行,代码使用end所指向的当前字符值索引空字符table数组:
< } else if (*from) {
< /* simply look for next blank char */
< for (end=from; *end && !table[(int)*end]; ++end);
*end所返回的字符值默认为有符型的,如果使用非ascii字符(大于127,如utf-8字符),在将其转换为int时会解释为负值。因此,代码从-128到127而不是0到255索引table数组。导致访问表格范围之外或函数栈帧范围之外的内存。
<*来源:Marcus Granado
链接:
http://permalink.gmane.org/gmane.comp.security.oss.general/1543
*>
建议:
厂商补丁:
Linux-PAM
---------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
http://pam.cvs.sourceforge.net/viewvc/pam/Linux-PAM/libpam/pam_misc.c?view=log浏览次数:2776
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载 绿盟科技给您安全的保障 |