Listener 是 Oracle 的一个数据库软件,用于处理 Oracle 服务器各客户端的数据库服务请求。 Oracle 另提供一个叫做Listener Control utility (lsnrctl)的小工具(lsnrctl),以方便 Oracle 数据库管理员远程管理listener 。不幸的是 lsnrctl 存在一个间接的远程格式字符串缺陷。 由于缺省情况下,Oracle Listener 不会阻止对数据库的未授权访问和控制。在这种情况下用户无需提供口令便可修改 Listener 的配置文件。如果恶意用户通过修改 listener.ora 文件,并嵌入一段格式字串的攻击代码,便有可能获得 Listener Control utility (lsnrctl)的控制权限。 要想成功获得 lsnrctl 的控制权限,除要求攻击者能够修改 listener.ora 文件文件外,还必须要求 Oracle 数据库管理员使用 lsnrctl 按照lsnrctl指定的执行路径去访问 Listener 。另外即使攻击成功的话,攻击者也只能获得数据库管理员机器的控制权限,而不是数据库服务器的控制权限。 这是一个复杂的攻击过程,要求多个条件都必须成立,所以这个缺陷的风险倒不是很大。但这还是需要引起用户的重视。 受影响系统: 运行在所有平台上的 Oracle 9i , 8i 攻击方法: 由于缺省情况下,Oracle Listener 不会阻止对数据库的未授权访问和控制。在这种情况下用户无需提供口令便可修改 Listener 的配置文件。如果恶意用户通过修改 listener.ora 文件,并嵌入一段格式字串的攻击代码,便有可能获得 Listener Control utility (lsnrctl)的控制权限。 解决方案: Oracle 已经发布了相应的公告,并提供了有效补丁。请仔细阅读其安全公告,并下载补丁: http://otn.oracle.com/deploy/security/pdf/2002alert40rev1.pdf 临时解决方案: * 在 listener.ora 文件中进行一个如下的简单设置,以阻止对 Listener 配置文件的修改 ADMIN_RESTRICTIONS_lsnrname=ON * 立即设置一个口令,以限制用户的访问。