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

漏洞信息详情

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

漏洞简介

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\”用户身份运行。攻击者可以远程以上述用户身份执行任意命令。

漏洞公告

临时解决方法:
如果您不能立刻安装补丁或者升级,CNNVD建议您采取以下措施以降低威胁:

* 在边界防火墙或者主机防火墙上限制对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” target=”_blank”>
http://www.oracle.com

参考网址

来源:CERT/CC Advisory: CA-2002-08
名称: CA-2002-08
链接:http://www.cert.org/advisories/CA-2002-08.html

来源:US-CERT Vulnerability Note: VU#180147
名称: VU#180147
链接:http://www.kb.cert.org/vuls/id/180147

来源: BID
名称: 4033
链接:http://www.securityfocus.com/bid/4033

来源: otn.oracle.com
链接:http://otn.oracle.com/deploy/security/pdf/plsextproc_alert.pdf

来源: BUGTRAQ
名称: 20020206 Remote Compromise in Oracle 9i Database Server
链接:http://marc.theaimsgroup.com/?l=bugtraq&m=101301332402079&w=2

来源: XF
名称: oracle-plsql-remote-access(8089)
链接:http://xforce.iss.net/static/8089.php

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享