前几天有朋友留言要我吐槽数据库安全扫描,这正是我想要的。近年来,企业安全事件频发,勒索病毒事件增多,加上安全对抗演练的开展,使得数据库安全在企业中越来越受到重视,安全扫描成为重中之重。也经常有客户发来安全扫描结果,让我们帮忙分析一下怎么优化,大部分都是Oracle数据库。有时我们会分析安全漏洞并向客户建议数据库升级计划。客户按照我们的计划升级后,扫描结果没有变化,安全漏洞警告也没有消失。根据我们的经验,这些漏洞肯定已在PSU中解决,但安全扫描工具无法识别它。为什么会这样?经过一番分析,我们发现这是因为Oracle的安全补丁系统过于复杂,缺少扫描工具,无论是登录扫描还是非登录扫描,都只是根据特征发现漏洞,而missedscan图书馆工作人员在数据库修补方面不够专业。好在MySQL和PostgreSQL都比较少发布单独的安全补丁,或者说补丁系统比较简单。MySQL每三个月发布一个补丁版本,直接更新即可。但是Oracle数据库过于复杂,一些安全补丁和功能补丁之间的关系非常复杂。为了避免冲突,需要通过MLR发布补丁集来解决问题,有时还需要发布CPU来解决问题。Oracle的补丁系统非常复杂,包括PSE、MLR、bundle、CPU、SPU、PSU等补丁。各种补丁包之间可能还是有冲突,部分PSE和MLR补丁有冲突,必须卸载后使用专门的bundle解决。还有一些补丁可能在几年后就过时了,被新的补丁所取代。因此,要分析清楚Oracle的补丁是相当困难的。十多年前,我们甚至为一些大客户提供了补丁分析服务(Oracle也正式提供补丁分析服务,但包含在一些昂贵的服务中,用户一般负担不起),利用我们与Oracle官方,帮助用户选择最好的补丁策略。不过,做这种事还是挺费力的。我们需要借助Oracle的内部网站进行协助,花费大量时间分析数据才能完成。不同客户的数据库运维人员,数据库升级策略大不相同,因为解决一个安全漏洞的方法可能有几十种,漏扫公司的特征库可能无法涵盖这些方面,甚至如果错过了。至于问题,如果错过扫描,您的系统将无法通过它。这样的情况,有些客户比较愿意谈,只要把问题说清楚就行,比如Oracle的某个PSU解决了这个问题,官方文档里有明确的说法,写个report就可以了.然而,一些领导者是公事公办的,必须依赖错过扫描的结果。我遇到过一个很奇葩的领导,要求扫描漏了不能有缺陷,其他材料都认不出来。最后的解决办法是先卸载安装的PSU,然后打上安全扫描软件认可的独立补丁来解决这个问题。也有一些漏扫厂商认为,导致扫描结果不准确的主要原因是使用了盲扫而不是登录扫描。如果使用登录扫描方式,结果会非常准确。其实我遇到的很多案例都是登录扫描案例。登录扫描也是一种特性扫描的方式,不是功能扫描,通过Oracle权限账户获取补丁信息或者通过OPatch命令获取补丁信息。但是,Oracle很难通过特征比对的方式进行基于风险数据库的分析。因为一个漏洞可能有几个甚至几十个补丁可以解决,而缺失的扫描工具的规则库可能并不完整。在这种情况下,扫描结果不准确是正常的。在捕获漏洞特征的前提下,使用功能扫描或渗透扫描代替特征扫描来模拟某种安全风险可能更可靠。但是,有些漏洞渗透是一种冒险操作,有些漏洞可能只有在某些特殊复杂的场景下才会被触发,泄漏扫描工具很难模拟。这个问题虽然不能完全解决,但是还是可以改进的。甲骨文每个季度都会发布PSU,大部分已知的安全漏洞将在下一个PSU上得到解决,每个漏洞解决的大部分PSU都是由Oracle公布的(记住,是大部分,不是全部)。另一方面,大多数用户解决Oracle安全漏洞最常用的方法是使用PSU。因此,数据库泄漏扫描厂商可以通过加强PSU补丁的收集来优化签名库来解决安全问题,这可以在很大程度上避免用户在安装非常新的PSU后提前报告漏洞的问题。另外,漏扫工具还可以明确指出最低的PSU编号来解决问题,让运维人员不用像盲盒一样面对漏扫报告(Oracle的PSU包含了所有patchfromthe之前的升级包,因此PSU不会错过任何之前发布的安全漏洞补丁)。因为这些年用户在这方面遇到了麻烦,我们也想写一个小工具来帮助用户解决一些问题,所以我们也在D-SMART中添加了一个小工具,这个工具在免费的D-SMART社区版中也有免费提供。一些用户在第一次看到这个功能时非常高兴。这是一个很好的工具。我可以在丢失扫描后使用它来协助补丁更新吗?不过我马上给他泼冷水,这个工具也只是通过我们预定义的漏洞规则库和OPatch工具捕获的一些数据库配置信息进行简单的扫描分析,以及需要的补丁的大致列表被修补。维护这个库的工作量也很大,所以我们不定期更新特征库,大概三个月更新一次。对于Oracle,这个表中给出的升级补丁建议只是一个非常简单的基于规则的建议,并不能自动分析出如何给你的系统打补丁。这个工具最重要的功能就是可以很方便的导出一个表格交给领导。表格中的UpgradePatch一栏列出了大量我们知道可能修复此问题的补丁号,但不是全部,因此它们可能无法在您的运维环境中为您提供帮助。但是如果你能生成Excel给领导,能让领导觉得你工作很辛苦,仅此而已。如果真的要打补丁,还是需要经过人工分析。在大多数情况下,我们直接建议用户安装一个相对较新的PSU。如果领导不承认,那就没有办法了。不得不说,打了数据库厂商提供的最新补丁集,漏洞都能扫描出来,没办法。
