CVE:CVE-2004-1338
CNNVD:CNNVD-200412-106
Oracle Database是一款商业性质大型数据库系统。
Database triggers控制限制实现不正确，远程攻击者可以利用这个漏洞提升特权。
Trigger一般以definer/owner特权执行，trigger SDO_CMT_CBK_TRIG属于MDSYS，当对SDO_TXN_IDX_INSERTS表进行DELETE操作时触发，PUBLIC在这个表上拥有SELECT， INSERT， UPDATE和DELETE对象的特权，因此任何人可以通过从表中删除一行导致SDO_CMT_CBK_TRIG trigger，如果检查Trigger上下文，可看到在DETETE发生之前，从 SDO_CMT_DBK_FN_TABLE 和SDO_CMT_CBK_DML_TABLE表中选择了一列函数，并执行。PUBLIC没有对象权限设置因此不能插入它们自己的函数名，不过属于MDSYS的PRVT_CMT_CBK包有两个过程CCBKAPPLROWTRIG 和EXEC_CBK_FN_DML，接收它们的参数和函数名，然后插入到SDO_CMT_DBK_FN_TABLE和SDO_CMT_CBK_DML_TABLE表中，PUBLIC在PRVT_CMT_CBK包上拥有EXECUTE权限，而且没有 'AUTHID CURRENT_USER'关键词定义，使用MDSY S权限执行包，结果可导致任何用户间接插入函数名到SDO_CMT_DBK_FN_TABLE和SDO_CMT_CBK_DML_TABLE表中，因此当SDO_TXN_IDX_INSERTS上执行DELETE操作时，任何人可以影响SDO_CMT_CBK_TRIG trigger的行为，导致特权提升。
solution:Upgrade oracle database_server to a higher version than 10.2.1:r2,and avoid the version 10.2.1:r2; Upgrade oracle oracle9i to a higher version than 9.0,9.0.1,9.0.1.2,9.0.1.3,9.0.1.4,9.0.2,9.0.2.0.0,9.0.2.0.1,9.0.2.1,9.0.2.2,9.0.2.3,9.2.0.1,9.2.0.2,and avoid the version 9.0,9.0.1,9.0.1.2,9.0.1.3,9.0.1.4,9.0.2,9.0.2.0.0,9.0.2.0.1,9.0.2.1,9.0.2.2,9.0.2.3,9.2.0.1,9.2.0.2