第一个概念性的 Oracle 蠕虫

Oracle 的众多漏洞有被更大范围恶意利用的倾向。10 月 31 日,有一个匿名者在 Full-disclosure(FD) 邮件列表里投递了一篇名为 Trick or treat Larry(很明显是对 Larry Ellison 的一个小玩笑) 的邮件。完全用 PL/SQL 写的蠕虫就这样出现了。专门研究 Oracle 技术安全的专家 Alex 对这个蠕虫结构进行了分析.这个完全用PL/SQL写的代码已经具有蠕虫的基本特征:

  • 1. 利用 utl_inaddr 包得到当前IP地址
  • 2. 查找相同地址段的所有网络地址
  • 3. 通过 utl_tcp 包向 1521 端口发送消息得到 Listener 状态
  • 4. 得到数据库 SID
  • 5. 利用默认密码构建 Database link
  • 6. 如果成功,则在远程数据库服务期创建一个数据对象 (或者其他有危害的操作)
  • 7. 继续第二步循环。尝试感染其它机器

虽然目前这个这个蠕虫还只是概念上的,但是不排除会有人会利用提到的具体漏洞对Oracle数据库进行大规模破坏。这个蠕虫也引起了 Oracle 的重视.从分析可以得知的基本解决办法(切断各个传播途径):

  • 回收 utl_tcp 和 utl_inaddr 包授给 Public 的权限
  • Lock 或者修改当前产品库中默认密码的 DB 帐户
  • Listener 加上密码。(但要注意 10gR2 中的加上密码反而带来可能会安全问题,因为这样允许任何知道密码的人管理 Listener)
  • 回收 Create database link 的权限
  • 考虑修改 Listener 的端口

有关这个蠕虫的进一步变化本站正在继续关注中。


  • http://www.eawon.net chensq

    数据库安全的蛋糕又快形成了。。。。
    如果得到sys的口令或权限,就惨了。其实Oracle脆弱的地方多着呢,比如:改bootstrap$表。。。。

  • http://www.dbanotes.net/blog/ Fenng

    修改bootstrap$是有前提的:得到修改文件的权限.如果文件权限已经被掌握了,那么安全问题出在其他地方.
    数据库本身也是要依赖于文件.
    你说的这一点和Oracle的脆弱无关