数据库自身安全漏洞分析之SQL编程组件的安全问题
作者:安华金和 发布时间:2017-01-15

数据库自身的安全漏洞我们已经分析了三种,本文将对最后一类漏洞进行介绍:SQL编程组件的安全问题。这是大所述数据库软件无法避免的一类问题,通过简单地分析,希望可以引导大家找到适当的解决方法。

这里的SQL编程组件是一个比较宽泛的概念。在每种不同的数据库中功能效果中会存在差异。为了更为清楚的理解这种漏洞问题,下面以Oracle的pl/SQL为例说明。

Pl/SQL中的对函数和存储过程的两种不同权限给Oracle的安全性带来了无限的烦恼和隐患。Pl/SQL带来的最多的问题就是低权限账户的提权问题。通过web端可以拿到数据库的一组低权限用户,通过Pl/SQL中的一些办法有可能对低权限用户进行提权,最终以最高权限用户控制整个数据库。

DBMS_METADATA、CTXSYS DRILOAD、CTXSYS DRILOAD、DBMS_CDC_SUBSCRIBE、DBMS_METADATA、MDSYS、SYS.LT、LT_CTX_PKG、USER_SDO_LRS_METADATA、DBMS_EXPORT_EXTENSION、DBMS_SQL等等都出现过让低权限账号提权至DBA权限的漏洞。

DECLARE c2gya2Vy NUMBER;BEGIN c2gya2Vy := DBMS_SQL.OPEN_CURSOR;DBMS_SQL.PARSE(c2gya2Vy,utl_encode.text_decode('ZGVjbGFyZSBwcmFnbWEgYXV0b25vbW91c190cmFuc2FjdGlvbjsgYmVnaW4gZXhlY3V0ZSBpbW1lZGlhdGUgJ0dSQU5UIERCQSBUTyBTQ09UVCc7Y29tbWl0O2VuZDs=','WE8ISO8859P1', UTL_ENCODE.BASE64),0)……..

上面是一个Oracle10g上的一个低权限用户提升到DBA的提权漏洞的办法。这里只是列举了SQL编程组件中的比较典型的漏洞问题,这里无法一一列举,但需要重视的是SQL编程组件的安全隐患需要得到重视,尽快排查并修复,在无法及时更新漏洞的情况下,也可以选择部署数据库审计数据库防火墙等专业技术手段对类似的非法提权行为或其他威胁操作进行告警和阻断,从根本上保护提升数据库安全基线。