典型安裝會自動建立 DBSNMP 使用者,預設密碼同名,擁有 UNLIMITED TABLESPACE 與 CREATE PUBLIC SYNONYM 系統權限。攻擊者可利用此帳號惡意填滿表空間導致資料庫癱瘓。
SQL> CONNECT DBSNMP/DBSNMP
SQL> SELECT * FROM SESSION_PRIVS;
CREATE SESSION
ALTER SESSION
UNLIMITED TABLESPACE -- 危險:可無限擴展表空間
CREATE TABLE
CREATE PUBLIC SYNONYM -- 危險:可建立公用同義詞干擾名稱解析
...
-- 惡意腳本:無限迴圈建表塞滿表空間
BEGIN
LOOP
EXECUTE IMMEDIATE 'CREATE TABLE DBSNMP.TMP_' || ROWNUM || ' AS SELECT * FROM ALL_OBJECTS';
END LOOP;
END;
/
-- 導致 ORA-01653/ORA-01654,資料庫無法寫入,業務中斷
ALTER USER DBSNMP IDENTIFIED BY "ComplexP@ssw0rd!";ALTER USER DBSNMP ACCOUNT LOCK;REVOKE UNLIMITED TABLESPACE FROM DBSNMP;
REVOKE CREATE PUBLIC SYNONYM FROM DBSNMP;
-- 僅保留 CREATE SESSION 等基本權限AUDIT CREATE TABLE, CREATE SYNONYM BY DBSNMP BY ACCESS;-- 檢查預設密碼帳號
SELECT USERNAME FROM DBA_USERS_WITH_DEFPWD;
-- 檢查 DBSNMP 狀態
SELECT USERNAME, ACCOUNT_STATUS, PROFILE
FROM DBA_USERS
WHERE USERNAME = 'DBSNMP';
SECURE_DBA 腳本或手動修改所有預設帳號密碼。VERIFY_FUNCTION)強制複雜度。DBA_USERS_WITH_DEFPWD。ORACLE_SUPPLIED 欄位識別內建帳號。