D-20 인가되지 않은 Object Owner의 제한
■ 점검영역 : 옵션관리
■ 항목 중요도 : 하
■ 점검내용
Object Owner가 인가된 계정에게만 존재하는지 점검
■ 점검목적
Object Owner가 비인가자에게 존재하고 있을 경우 이를 제거하기 위함
■ 보안위협
Object Owner는 SYS, SYSTEM과 같은 데이터베이스 관리자 계정과 응용프로그램의 관리자 계정에만 존재하여야 하며, 일반 계정이 존재할 경우 공격자가 이를 이용하여 Object의 수정, 삭제가 가능함
■ 참고
※ Object(객체): ALTER, DELETE, EXECUTE, INDEX, INSERT, SELECT 등을 말함
점검대상 및 판단기준(데이터베이스/dbms 취약점 진단)
■ 대상 : Oracle, MSSQL, MySQL, ALTIBASE, TIBERO, PostgreSQL 등
양호
Object Owner가 SYS, SYSTEM, 관리자 계정 등으로 제한된 경우
취약
Object Owner가 일반 사용자에게도 존재하는 경우
■ 조치방법
Object Owner를 SYS, SYSTEM, 관리자 계정으로 제한 설정
점검 및 조치 방법(oracle, mssql, mysql 등)
■ Oracle
Step 1) 설정 확인(SQL*Plus)
SQL> Select distinct owner from dba_objects where owner not in ('SYS','SYSTEM', 'MDSYS','CTXSYS',‘ORDSYS','ORDPLUGINS', 'AURORA$JIS$UTILITY$','HR','ODM','ODM_ MTR','OE','OLAPDBA','OLAPSYS','OSE$HTTP$ADMIN','OUTLN','LBACSYS','MTSYS','PM','PUBLIC','QS','QS_ADM',’QS_CB','QS_CBADM',‘DBSNMP','QS_CS','QS_ES','QS_OS','QS_WS','RMAN', 'SH', 'WKSYS', 'WMSYS','XDB') and owner not in (select grantee from dba_role_privs where granted_role='DBA');
Step 2) 권한 취소(SQL*Plus)
SQL> REVOKE 권한 on 객체 FROM User;
■ Altibase
Step 1) 사용자에게 부여된 객체 권한 정보를 확인
select * from system_.sys_grant_object_;
selcet * from system_.sys_privileges_;
Step 2) 부여된 권한 ID를 확인하여 불필요 권한은 회수
revoke 권한 on 객체 from 유저
■ Tibero
Step 1) 데이터베이스 내 모든 스키마 객체 특권의 정보를 조회하여 인가받지 않은 객체 권한 소유자가 있는지 확인
select * from dba_tbl_privs;
Step 2) 잘못된 객체 권한 소유자 발견 시 해제
■ PostgreSQL
Step 1) 객체 권한 정보 확인
postgres=# select distinct relowner from pgclass where relowner not exists
(select usename from pg_user where usesuper=TRUE);
Step 2) 잘못된 객체 권한 소유자 발견 시 해제
■ 조치 시 영향 : 일반적인 경우 영향 없음