首页 -> 安全研究

安全研究

安全漏洞
Oracle TNS Listener执行任意库调用漏洞

发布日期:2002-02-06
更新日期:2002-02-10

受影响系统:
Oracle database server 8.1.7.0.0
Oracle Oracle 8i Enterprise Edition 8.1.7.1.0
Oracle Oracle 8i Enterprise Edition 8.1.7.0.0
Oracle Oracle 8i Enterprise Edition 8.1.6.1.0
Oracle Oracle 8i Enterprise Edition 8.1.6.0.0
Oracle Oracle 8i Enterprise Edition 8.1.5.1.0
Oracle Oracle 8i Enterprise Edition 8.1.5.0.2
Oracle Oracle 8i Enterprise Edition 8.1.5.0.0
Oracle Oracle 8i Enterprise Edition 8.0.6.0.1
Oracle Oracle 8i Enterprise Edition 8.0.6.0.0
Oracle Oracle 8i Enterprise Edition 8.0.5.0.0
Oracle Oracle8 8.1.7
Oracle Oracle8 8.1.6
Oracle Oracle8 8.1.5
Oracle Oracle8 8.0.6
Oracle Oracle8 8.0.5.1
Oracle Oracle8 8.0.5
Oracle Oracle8 8.0.4
Oracle Oracle8 8.0.3
Oracle Oracle8i 8.1.7.1
Oracle Oracle8i 8.1.7
Oracle Oracle8i 8.1.6
Oracle Oracle8i 8.1.5
Oracle Oracle8i 8.0.6
Oracle Oracle8i 8.0.5
Oracle Oracle8i 8.0.4
Oracle Oracle8i 8.0.2
Oracle Oracle8i 8.0.1
Oracle Oracle9i 9.0.1
Oracle Oracle9i 9.0
描述:
BUGTRAQ  ID: 4033
CVE(CAN) ID: CVE-2002-0567

Oracle是一个流行的商业数据库系统,它可以在Windows和很多Unix系统下运行。

由于Oracle数据库缺乏完整的身份验证,允许攻击者远程调用任意系统库函数,从而以数据库运行权限执行任意命令。

Oracle数据库的大部分功能是由PL/SQL包提供的。PL/SQL允许创建一些包含导出的过程和函数的可执行package。PL/SQL package可以调用那些由操作系统库或动态链接库导出的函数。攻击者可以调用system()函数并向其传递所要执行的程序名,显然用户如果能够执行上述操作,应该能以那些有“CREATE LIBRARY”权限的用户身份登陆进入数据库。然而攻击者可以欺骗Oracle服务器,无需通过身份认证就可加载任意系统库并执行任意函数。

当一个PL/SQL package要求运行一个外部过程时,oracle进程连接到Listener并请求它加载相关的库。Listener会启动另外一个进程(在Unix系统下是extproc,在Windows系统下是extproc.exe),将oracle转向该进程。oracle进程通过命名管道连接extproc进程,并将发给Listener的请求转发给它。Extproc进程加载相应的库并调用该函数。然而,在上述过程中没有执行任何认证。攻击者可以伪装成oracle进程,并强迫使用套接字而不是命名管道进行远程操作。攻击者可以通过TCP连接listener/extproc端口,无需认证就可以使oracle执行任意的库函数,例如system()调用。在Windows系统下,Oracle数据库缺省是以Local SYSTEM身份运行,在Unix系统下,缺省是以“oracle”用户身份运行。攻击者可以远程以上述用户身份执行任意命令。


<*来源:NGSSoftware Insight Security Research (nisr@nextgenss.com
  
  链接:http://archives.neohapsis.com/archives/bugtraq/2002-02/0004.html
        http://www.nextgenss.com/advisories/oraplsextproc.txt
*>

建议:
临时解决方法:

如果您不能立刻安装补丁或者升级,NSFOCUS建议您采取以下措施以降低威胁:

* 在边界防火墙或者主机防火墙上限制对Oracle 服务器1521/TCP端口的访问。

* 如果您不需要执行外部库,可以删除PLSExtproc功能。具体做法是在tnsnames.ora和listener.ora中删除相应条目。您也可以将extproc(.exe)删除或者改名。

* 如果您确实需要PLSExtproc功能,可以限制访问listener的主机IP。具体方法是:
  修改$ORACLE_HOME\network\admin目录下的sqlnet.ora文件,增加下列语句:
  
    tcp.validnode_checking = YES
    tcp.invited_nodes = (10.1.1.2, scylla)

将“10.1.1.2”替换成可信任的主机IP。

* 对于Windows NT/2000系统,应该创建一个普通用户,并让oracle进程以该用户身份运行。该用户需要赋予“Logon as a service”权限。

厂商补丁:

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

http://www.oracle.com

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