安华金和:数据库虚拟补丁技术说明
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
© 2015 安华金和
-6-
密级:内部公开
行为。最后对特征字符串进行进一步验证,结合关键词所在的上下文,甄别语句的行为,排 除正常行为所产生的语句。
ຫໍສະໝຸດ Baidu
例如:攻击语句
图 3.1 防护示例
DECLARE a clob; BEGIN
a := sys.dbms_metadata.get_ddl ( '''|| scott.get_dba() ||''', 'DBMS_METADATA'
以 lateral 为例说明,提权技术中最著名的是 CREATE ANT TRIGGER 权限提 DBA、
CREATE ANT VIEW 权限提 DBA、EXECUTE ANY PROCEDURE 权限提 DBA、CREATE
PROCEDUER 权限提 DBA。
缓冲区溢出注入 利用 where 子句修改 SQL 语句返回不同的结果集,来达到获取数据库敏感信息的目的。
然而,数据库补丁包虽然能在一定程度上弥补数据库漏洞所带来的危害,降低了数据库 遭受恶意攻击的风险度。但是数据库补丁也存在一些可适用性的问题。主要包括以下三点: 数据库补丁包具有高针对性,修补范围存在局限性。并且补丁包的发布周期冗长,数据
库存在数据泄露的真空期。 数据库利用补丁进行修补的过程中存在兼容性隐患,为数据库造成新的危害。 数据库补丁修补过程中具有一定风险,并且会消耗用户大量资源。
); END;
防护的规则和手段可以为: (1)解析出会话的用户名:证明不是 sys 用户,可能会是一种越权行为。 (2)对语句进行进一步验证:证明语句中包含有常被用来的攻击的字段名: dbms_metadata,并且含有函数 get_ddl。 (3)满足上述条件,可以猜测为攻击行为。 (4)最后验证语句并非查询类型 select ....,排除正常行为。 至此,认为该语句是个攻击语句,存在风险。
ORACLE 下系统函数 DBMS_METADATA 为例,在 oracle 的某些版本中 DBMS_METADATA 中含有存在漏洞的函数 sys.dbms_metadata.get_ddl 可被低权限用户利 用进行执行各种越权语句。
黑客攻击方式:通过拼串等方式组合成语句 GRANT DBA TO USER,利用上述漏洞任 意用户可以执行 DBA 提权操作,从而使低权限用户得到 DBA 权限,获取数据库中敏感信息 或者对数据库进行破坏性操作,利用数据库漏洞对数据库进行攻击的行为诸如此类。
入侵方法分为:
代码注入 代码注入攻击多在支持多条 SQL 语句执行的数据中存在。它是通过黑客在正常语句中加入恶 意 EXECUTE 命令完成攻击的。 函数调用注入 函数调用注入是代码注入的变体,但确实整个 SQL 注入的核心。它利用数据库存在漏洞将恶 意语句注入其中。具体手法分为: 注入 select /delete/insert/update 语句 注入函数 注入匿名 pl/sql 块 游标注入 利用触发器 lateral 提权技术
以安华金和数据库防火墙产品(DBF)为例的虚拟补丁技术的防护原理是对数据库和客 户端之间的通信进行通信协议解析,获取到会话信息(包括:数据库用户,操作系统用户等) 和用户实际执行的语句,对会话信息和语句中的攻击特征字符串进行综合分析,判断该语句 是否有攻击意图。
其中语句分析拆取需要的语句信息,如:SQL 语句操作类型,常出现在攻击语句中的关 键词(如用来攻击的包、函数名等)。当语句中包含这些关键词,则判定为是一种漏洞攻击
数据库虚拟补丁技术说明
一. 综述
虚拟补丁技术是通过控制所保护系统的输入输出,防止对系统的漏洞攻击行为的技术。 随着网络黑客的攻击活动方式越来越多,速度越来越快,针对信息系统的漏洞研究和系 统安全漏洞的修补,成为了攻与防永恒的主题。但系统漏洞的修补永远晚于漏洞的发现,系 统设计的缺陷导致漏洞难以修补,现实稳定运行的信息系统难以接受系统的升级等等,这些 原因都造成了现实世界中诸多被暴露了漏洞的系统仍然在持续‘裸奔’中。这如同已经被曝 了安全隐患的汽车,无法召回,人们只能祈祷‘厄运’不要降临在自己身上。 虚拟补丁技术是对已有系统通过外围的方式,针对漏洞攻击的特征进行攻击行为发现和 拦截的安全防御手段。它使针对漏洞防御的实施更为轻量,更为及时。当然这并不是一种彻 底的方式,更彻底的方式依然是系统自身的修复;但它不失为一种简易的解决方法,为彻底 修复赢得了时间;也使在某些特殊情况下无法进行的修复,有了轻便的解决方案。即使不彻 底但简单而有效。这就如同是有了炎症,要吃退烧和消炎药,但体质的增强还需要长久的锻 炼、起居、饮食和精神的调整。 虚拟补丁技术较早的使用是在 web 应用系统上,较早提出这个概念的是趋势科技,近来 绿盟也加入了这个领域,也是在 web 上。数据库的虚拟补丁是近几年的防御技术,较早提出 的是 Mcaffee,国内数据库安全厂商安华金和也是这方面的佼佼者。 虚拟补丁技术较早地应用于 web 应用系统和数据库的原因是,由于这两种系统与应用关 联的很紧密,一旦上线都需要稳定的运行,由于实施补丁升级引起的工程量和系统的下线成 本与代价都很高。同时的协议标准性很差、复杂性很高,传统的防火墙、IPS/IDS、UTM 等都 对此无能为力。 数据库虚拟补丁技术一般是集成在数据库防火墙产品中(一种新的、有效针对数据库进 行主动安全防御的产品)。这种技术,一经面世,就受到了国内外用户的广泛欢迎;除了防 御能力外,国内用户欢迎的一个重要原因还在于,在以极光为代表的网络漏扫工具,每年都 会对数据库主机报告数十个高中危漏洞,被检测单位亟待解决这些数据库漏洞问题,而虚拟 补丁技术,无疑也对这种现实的需求提供了有效的解决方案。 在本文,我们将对数据库的漏洞,以及数据库虚拟补丁技术进行深度的介绍。
2.3 数据库虚拟补丁技术
通过数据库漏洞的高危害性分析和漏洞补丁包的低可用性说明。我们可知,市场亟需一 种数据库漏洞防护方式,在无需对数据库做深度操作的前提下,进行漏洞的修补与防护,以 期达到数据库的安全标准要求。
常规的数据库虚拟补丁技术主要分 2 种: 方案一. 修改数据库程序的运行时代码。如果发现攻击涉及到某些存储敏感信息的数据表,会 创造一个输出补丁,从而改变数据库返回的结果集输出的方向,向某特定地址传输该数据包。 方案二. 在数据库的前端设置某种类型代理,以控制数据库的输入和输出,从而阻止或消除攻 击行为。可以检测对漏洞的尝试利用,并终止可疑的会话。 当前市场上的数据库防护工具,如果具备数据库漏洞防护能力,通常采用第二种虚拟补丁防 护方式,避免对数据库做代码层级的改动。
2.1.2 数据库漏洞可能造成的危害
(1)危害数据库自身系统,对数据库本机进行攻击。 (2)危害数据库所在服务器,利用数据库来对服务器做攻击。方式:
通过 pl/sql 运行 OS 命令 通过 JAVA 运行 OS 命令 直接通过任务调度程序运行 OS 命令 使用 ALTER SYSTEM 运行 OS 命令 利用 oracle 编译本地 pl/sql 应用程序的方式来运行 OS 命令 (3)危害数据库所在系统的文件系统。方式: 利用 UTL_FILE 包访问文件系统 利用 JAVA 访问文件系统
© 2015 安华金和
-4-
密级:内部公开
以 oracle 数据库为例,在补丁包发布的响应周期内,数据库面对 0day 漏洞的漏洞风险。 即使获取到漏洞补丁包,在数据库修复过程中也需要用户投入大量的资源,例如:补丁修补 的操作时间长,专业性要求高,系统在审查、测试和安装官方补丁更新期间很容易陷入风险。 所以,经常为企业数据库打补丁在可操作性上存在困难,而不断变化的漏洞攻击也让数据库 管理人员疲于应对,数据库将长时间处在高风险的阴影下。
(2)缓冲区溢出 源缓冲区的数据向小于自身位数的缓冲区复制数据时,超越目标缓冲区的位数边界,并且数 据库未对存入数据进行边界判断,最终导致目标缓冲区爆满。目标缓冲区内存改变程序控制 流、夺取操作系统、禁止访问等多种结果。缓冲区溢出主要可以分成四种:静态数据溢出、 栈溢出、堆溢出和格式化串。
数据库漏洞特指数据库软件在设计及开发阶段,因技术性缺陷而产生的不可预期,高隐 秘性的数据库安全漏洞。外部攻击利用这些安全漏洞,对数据库及其存储的大量数据资产可 造成恶意危害。数据库漏洞的种类繁多并且所造成的危害性严重,所以数据库漏洞目前已成 为数据库信息安全领域针对数据库防护的主要研究对象。
图 2.1 数据库漏洞入侵方式
© 2015 安华金和
-3-
密级:内部公开
数据库漏洞成因,主要分为以下几种: (1)输入验证错误 (2)边界条件错误 (3)缓冲区溢出错误 (4)访问验证错误 (5)意外条件错误 (6)其他错误 通过研究数据库漏洞分类,有助于人们对漏洞的深入理解并加以预防和避免。
2.2 数据库补丁包的缺陷
由于数据库漏洞的不可预期性和高隐蔽性,数据库开发商只能通过事后,周期性,有针 对性的对已发现的数据库漏洞进行安全性处理,并以数据库补丁包的形式进行针对性的漏洞 修复。所以,对数据库打补丁和扩容存储已经成为 DBA 的常规性必处理业务。
© 2015 安华金和
-2-
密级:内部公开
利用操作系统环境变量访问文件系统 (4)危害数据库所在网络上的其他平台。
2.1.3 数据库漏洞的归类划分
根据 CVE 最新发布的漏洞统计结果,统计公布的各类数据库漏洞分布如下:
423
203
175
74
92
28
38
8
图 2.2 各类数据库漏洞分布
下图为 CVE 统计的一类 oracle 数据库漏洞,证用户可以通过未知向量影响系统的可用性(属 缓冲区溢出类)。
© 2015 安华金和
-1-
密级:内部公开
二. 数据库虚拟补丁产生的原因
2.1 数据库漏洞分析
美国 Verizon 就“核心数据是如何丢失的”做过一次全面的市场调查,结果发现,75%的 数据丢失情况是由于数据库漏洞造成的。据 CVE 的数据安全漏洞统计,Oracle、SQL Server、 MySQL 等主流数据库的漏洞逐年上升。
上述虚拟补丁防护方式方法不但提高了执行效率,更有效的降低了误报的频率,虚拟补 丁对数据库漏洞的防护方式大致如此。
安华金和的虚拟补丁技术,基于数据库防护考虑,将数据库漏洞分为了 22 类。本文只列 举下述部分数据库漏洞做分类说明,有利于对虚拟补丁防护方式的理解。 (1)DBMS SQL 注入
这里指的是 DBMS 系统的函数、存储过程中注入漏洞,而不是我们常规说的应用系统的 SQL 注入漏洞,这些漏洞是由于 DBMS 产品自引起的 SQL 调用性的缺陷,而使黑客能通过 正常的 SQL 语句完成语句注入。
© 2015 安华金和
-5-
密级:内部公开
三. 虚拟补丁对数据库的防护
3.1 虚拟补丁的产品优势
虚拟补丁的优势所在,就是可以在无需修补 DBMS 内核的情况下保护数据库。虚拟补丁 在数据库外创建了一个安全层,从而无需根据数据库厂商提供的补丁做数据库修复,也不需 要停止服务和回归测试。
虚拟补丁的防护机制,旨在通过监控所有数据库活动,获取通讯信息。利用监控数据与 保护规则相比较,从而发现攻击企图。当比较结果与规则匹配时,就发出告警警报,并根据 防护策略及时的终止可疑会话、操作程序或隔离用户,直到这个可疑的活动被审查通过。
简单的说,虚拟补丁通过控制受影响的应用程序的输入或输出,来改变或消除漏洞,是 在数据库的前端进行控制或告警的一种技术。它是一种透明的对数据库进行保护的方法,不 需要重启数据库或进行大范围应用系统的回归测试。
3.2 虚拟补丁的防护原理
虚拟补丁技术防护的基本原理就是攻击规则的匹配。根据攻击的方式,我们可以分为两 种:一种是对网络通讯中直接的攻击的防护,比如对 Oracle TNS 协议中的缓冲区溢出漏洞; 一种是对通过 SQL 语句中的攻击行为的防护,比如数据库系统的提权漏洞、注入漏洞。
© 2015 安华金和
-7-
密级:内部公开
在正常的 sql 语句中通过嵌入、注释、转义符等手段加入针对数据库漏洞或数据库设置缺
陷的畸形字符串或其他畸形输入。通过单次或多次这种畸形输入逐步获取数据库中更高权限,
最终获取数据库中敏感信息或直接夺取数据库 DBA 权限。进而可能对数据库所在的网络环境
和本地服务器造成危害。