浅析Oracle数据库的安全机制缺陷
作者:安华金和 发布时间:2017-01-22

2016年3月8日,某电商平台的ERP 系统遭到黑客攻击,事件中使用的SQL注入攻击是数据库安全攻击中几乎最常见的SQL注入。基于安华金和数据库安全攻防实验室的技术分析和模拟攻击过程还原,SQL注入点可能来自Oracle数据库自身的三个安全机制缺陷。

缺陷1: oracle数据库自身的存储过程和函数调用的权限机制存在安全隐患

用户调用pl/sql子程序的时候,程序在访问所涉及到的底层对象(包括表格等)时,用户不必拥有访问这些对象的权限,只需要用户有该存储过程的执行权限即可;而执行时是参照的是该子程序定义者的权限。

简单说就是如果用创建者只有创建权限,没有执行权限那么即便用sys账号也依旧无法执行。因为执行定义者权限模式的子程序的时候。在子程序中当前账号权限和创建该子程序用户权限一致。虽然这给oracle带来了很大的灵活性,但是会有很大的安全隐患。就像上文的例子一样。黑客可以利用子程序获得和子程序创建者一样高的权限,再以高权限执行恶意代码。黑客可以通过这种手段获得DBA账号、甚至控制整个oracle。

缺陷2:oracle中有些系统函数的参数对输入类型和长度缺乏控制,导致形成注入点。对于这种oracle缺乏控制的的函数的参数需要进一步约束。约束的方法可以等待oracle进行补丁修复后进行补丁升级,也可以通过数据库防火墙对特定函数使用的范围做一定的限制。

缺陷3:Oracle自身存在系统存储过程或函数自身存在提权漏洞

这些系统性的存储过程或函数需要调用者的权限很低,但通过注入的方式,完成将调用者的权限提升到dba,如:

SYS.LT.COMPRESSWORKSPACETREE、SYS.DBMS_CDC_IMPDP.BUMP_SEQUENCE、SYS.KUPW$WORKER.MAIN、CTXSYS.DRILOAD.BUILD_DML等。

通过以上对Oracle数据库安全机制缺陷的分析,希望能够对Oracle用户提供安全防护思路。对于功能强大的数据库系统来说,容易存在SQL注入点,通过在数据库层部署专业的安全防护产品,能够更直接有效的避免此类安全事件的发生。