安全研究
安全漏洞
PulseAudio setuid本地权限提升漏洞
发布日期:2009-07-16
更新日期:2009-07-20
受影响系统:
PulseAudio PulseAudio 0.9.x描述:
BUGTRAQ ID: 35721
CVE(CAN) ID: CVE-2009-1894
PulseAudio是POSIX和Win32系统上所使用的声音服务器。
在Linux系统上启用PulseAudio二进制程序后,PulseAudio会检查是否设置了LD_BIND_NOW环境变量,如果没有设置PulseAudio会设置这个变量并自行重载。PulseAudio通过查看/proc/self/exe符号链接来判断其路径名,这个符号链接指向当前进程的完整路径名:
int main(int argc, char *argv[]) {
[...]
#if defined(__linux__) && defined(__OPTIMIZE__)
/*
Disable lazy relocations to make usage of external libraries
more deterministic for our RT threads. We abuse __OPTIMIZE__ as
a check whether we are a debug build or not.
*/
if (!getenv("LD_BIND_NOW")) {
char *rp;
/* We have to execute ourselves, because the libc caches the
* value of $LD_BIND_NOW on initialization. */
pa_set_env("LD_BIND_NOW", "1");
pa_assert_se(rp = pa_readlink("/proc/self/exe"));
pa_assert_se(execv(rp, argv) == 0);
}
#endif
正常情况下/proc/self/exe应指向类似于/usr/bin/pulseaudio的位置,但通过使用硬链接也可能导致/proc/self/exe指向不同的位置:
$ cd /tmp
$ ls -la /proc/self/exe
lrwxrwxrwx 1 yorick yorick 0 2009-06-09 16:31 /proc/self/exe ->
/bin/ls
$ ln `which ls` ls
$ ./ls -la /proc/self/exe
lrwxrwxrwx 1 yorick yorick 0 2009-06-09 16:31 /proc/self/exe ->
/tmp/ls
此外,如果创建了硬链接,会保留SUID位:
$ ln `which pulseaudio` pulseaudio
$ ls -la pulseaudio
-rwsr-xr-x 2 root root 71616 2009-04-09 02:12 pulseaudio
PulseAudio的重载机制中存在竞争条件。攻击者可以通过创建指向PulseAudio二进制程序的硬链接来利用这个漏洞,之后在通过硬链接执行这个二进制程序的时候/proc/sef/exe会指向硬链接。在重启PulseAudio之前,攻击者可以用不同的文件或链接来替换硬链接,重启后PulseAudio就使用指向不同文件(如命令shell)的路径名。由于在重启的时候没有丢弃root用户权限,因此本地攻击者可以获得root用户权限。
<*来源:Tavis Ormandy (taviso@gentoo.org)
链接:http://marc.info/?l=bugtraq&m=124784859827608&w=2
http://security.gentoo.org/glsa/glsa-200907-13.xml
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
建议:
临时解决方法:
* 从PulseAudio二进制程序删除SUID位:
$ chmod u-s `which pulseaudio`
厂商补丁:
Gentoo
------
Gentoo已经为此发布了一个安全公告(GLSA-200907-13)以及相应补丁:
GLSA-200907-13:PulseAudio: Local privilege escalation
链接:http://security.gentoo.org/glsa/glsa-200907-13.xml
所有PulseAudio用户都应升级到最新版本:
# emerge --sync
# emerge --ask --oneshot -v ">=media-sound/pulseaudio-0.9.9-r54"
PulseAudio
----------
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
http://git.0pointer.de/?p=pulseaudio.git;a=commit;h=84200b423ebfa7e2dad9b1b65f64eac7bf3d2114
浏览次数:2818
严重程度:0(网友投票)
绿盟科技给您安全的保障
