首页 -> 安全研究

安全研究

安全漏洞
Oracle数据库Parameter/Statement缓冲区溢出漏洞

发布日期:2004-02-05
更新日期:2004-02-11

受影响系统:
Oracle Oracle9i 9.2.0.2
Oracle Oracle9i 9.2.0.1
Oracle Oracle9i 9.2
不受影响系统:
Oracle Oracle9i 9.2.0.3
描述:
BUGTRAQ  ID: 9587
CVE(CAN) ID: CVE-2003-1208

Oracle是一款大型数据库软件。

Oracle在处理部分参数和函数时缺少充分缓冲区边界检查,远程攻击者可以利用这个漏洞进行缓冲区溢出攻击,可能以数据库进程权限执行任意指令。

Oralce存在多个缓冲区溢出,具体如下:

1、TIME_ZONE参数指定默认时区置换,TIME_ZONE仅是一个会话参数,而不是一个初始化参数,一个类似的合法请求为:

ALTER SESSION SET TIME_ZONE = '-5:00';

TIME_ZONE参数由于缺少充分缓冲区边界检查,提交包含超长字符串的请求可导致触发缓冲区溢出,如:

ALTER SESSION SET TIME_ZONE = '<long string here>'; SELECT
CURRENT_TIMESTAMP, LOCALTIMESTAMP FROM DUAL;

默认情况下,任意用户可以提交此请求。上面的攻击必须使用SCOTT / TIGER帐户。

2、NUMTOYMINTERVAL是用于转换N为一个INTERVAL YEAR TO MONTH,n可以为数字或数字表达式,char_expr可以为CHAR, VARCHAR2, NCHAR, or NVARCHAR2数据类型,类似合法请求为:

SELECT last_name, hire_date, salary, SUM(salary)
OVER (ORDER BY hire_date
RANGE NUMTOYMINTERVAL(1,'year') PRECEDING) AS t_sal
FROM employees;

n = 1
char_expr = year

NUMTOYMINTERVAL函数由于对参数缺少充分缓冲区边界检查,提交包含超长字符串的请求可导致触发缓冲区溢出,如:

SELECT last_name, hire_date, salary, SUM(salary)
OVER (ORDER BY hire_date
RANGE NUMTOYMINTERVAL(1,'<long string here>') PRECEDING) AS t_sal
FROM employees;

默认情况下,任意用户可以提交此请求。上面的攻击必须使用SCOTT / TIGER帐户。

3、NUMTODSINTERVAL是用于转换n为INTERVAL DAY TO SECOND的函数,n可以为数字或数字表达式,char_expr可以为CHAR, VARCHAR2, NCHAR, or NVARCHAR2数据类型,类似合法请求为:

SELECT manager_id, last_name, hire_date,
   COUNT(*) OVER (PARTITION BY manager_id ORDER BY hire_date
   RANGE NUMTODSINTERVAL(100, 'day') PRECEDING) AS t_count
   FROM employees;

n = 100
char_expr = day

NUMTODSINTERVAL函数由于对参数缺少充分边界缓冲区检查,提交包含超长字符串的请求可导致触发缓冲区溢出,如:

SELECT empno, ename, hiredate, COUNT(*) OVER (PARTITION BY empno ORDER BY
hiredate RANGE NUMTODSINTERVAL(100, '<long string here>') PRECEDING) AS
t_count FROM emp;


默认情况下,任意用户可以提交此请求。上面的攻击必须使用SCOTT / TIGER帐户。

4、FROM_TZ函数用于转换时间戳,类似请求如下:

SELECT FROM_TZ(TIMESTAMP '2003-09-8 08:00:00', '12:00') FROM DUAL;

此语法返回如下值:

which would return the values

FROM_TZ函数对TZD参数缺少充分边界缓冲区检查,提交包含超长字符串的请求可导致触发缓冲区溢出,如:

SELECT FROM_TZ(TIMESTAMP '2000-03-28 08:00:00','long string here') FROM
DUAL;

默认情况下,任意用户可以提交此请求。

<*来源:NGSSoftware (mark@ngssoftware.com
  
  链接:http://www.nextgenss.com/advisories/ora_time_zone.txt
        http://www.nextgenss.com/advisories/ora_numtoyminterval.txt
        http://www.nextgenss.com/advisories/ora_numtodsinterval.txt
        http://www.nextgenss.com/advisories/ora_from_tz.txt
*>

建议:
厂商补丁:

Oracle
------
Oracle 9i Database Release 2, version 9.2.0.3已经修正此漏洞,要更多Oracle安全补丁信息,请访问Oracle Metalink site:

http://metalink.oracle.com

浏览次数:4157
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障