首页 -> 安全研究

安全研究

安全漏洞
Linux-PAM getlogin()可被欺骗漏洞

发布日期:2003-06-16
更新日期:2003-06-19

受影响系统:
Andrew G. Morgan Linux PAM 0.77
Andrew G. Morgan Linux PAM 0.76
    - Linux系统
描述:
CVE(CAN) ID: CVE-2003-0388

Pluggable Authentication Module (PAM)是用于验证用户的机制。使用在多种Linux版本上。

Linux-PAM中的pam_wheel没有安全地使用getlogin()函数,本地攻击者可以利用这个漏洞有可能绕过部分限制,无需密码获得root用户权限。

pam_wheel模块一般结合su(1)允许属于可信组的用户无需密码使用部分命令。此模块利用getlogin()函数判断当前登录用户名,获取的用户名然后与配置文件中指定的可信组列表成员进行比较,下面是部分代码:

fromsu = getlogin();
if (fromsu) {
    tpwd = getpwnam(fromsu);
}

...
...
...

/*
* 测试用户是否为组成员,或者用户是否把"wheel"作为它的首要组
*/
if (is_on_list(grp->gr_mem, fromsu) || (tpwd->pw_gid == grp->gr_gid)) {
    if (ctrl & PAM_DENY_ARG) {
        retval = PAM_PERM_DENIED;
    } else if (ctrl & PAM_TRUST_ARG) {
        retval = PAM_SUCCESS;        /* this can be a sufficient check
*/
    } else {
        retval = PAM_IGNORE;
    }
} else {

如果在pam_wheel配置文件中"trust"选项使能,而"use_uid"选项不使用的情况下,任意本地用户可以伪造由getlogin()返回的用户名,无需密码获得超级用户权限。

不过上面的配置在多数Linux安装中不是默认配置。

<*来源:iDEFENSE Security Advisory (labs@idefense.com
  
  链接:http://www.idefense.com/advisory/06.16.03.txt
*>

建议:
厂商补丁:

Andrew G. Morgan
----------------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:

http://www.kernel.org/pub/linux/libs/pam/

浏览次数:3063
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障