문서유형ㅣ기술 정보
분야ㅣ보안
적용제품버전ㅣTibero6, Tibero7
문서번호ㅣTSETI020
개요
| 분류 | 점검 항목 | 중요도 | 코드 |
|---|---|---|---|
| 옵션 관리 | 응용프로그램 또는 DBA 계정의 Role이 Public으로 설정되지 않도록 조정 | 상 | D-08 |
| OS ROLES, REMOTE_OS_AUTENTICATION, REMOTE_OS_ROLES를 FALSE로 설정 | 상 | D-09 | |
| 패스워드 확인함수가 설정되어 적용 | 중 | D-19 | |
| 인가되지 않은 Object Owner의 제한 | 하 | D-20 | |
| 인가되지 않은 GRANT OPTION 사용 제한 | 중 | D-21 | |
| 데이터베이스의 자원 제한 기능을 TRUE로 설정 | 하 | D-22 |
본 문서에서는 "옵션관리-인가되지 않은 GRANT OPTION 사용 제한(D-21)" 항목에 대한 보안취약점 조치 방안에 대해 기술하였습니다.
점검 내용 및 목적
- 일반 사용자에게 Grant Option이 Role에 의해 부여되어 있는지 점검합니다.
- 일반 사용자에게 Grant Option이 Role에 의한 부여가 아닐 경우 권한을 취소합니다.
점검 판단 기준
| 기준 | 내용 |
|---|---|
| 양호 | WITH_GRANT_OPTION이 ROLE에 의하여 설정되어 있는 경우 |
| 취약 | WITH_GRANT_OPTION이 ROLE에 의하여 설정되어 있지 않은 경우 |
조치 전 주의사항
기본 계정 리스트 확인
Tibero 설치 시 생성되는 기본 계정은 다음과 같습니다. DB 버전에 따라 추가/삭제된 계정이 존재합니다.
| 계정명 | 비밀번호 | 비고 |
| SYS | tibero | 계정 삭제 불가능 DBA 권한 필요 |
| SYSCAT | syscat | 계정 삭제 불가능 |
| SYSGIS | sysgis | 계정 삭제 불가능 |
| OUTLN | outln | 계정 삭제 불가능 |
| TIBERO | tmax | 계정 삭제 가능 |
| TIBERO1 | tmax | 계정 삭제 가능 T7 버전 이상부터 존재하지 않음 |
| SYSBACKUP | tibero | 계정 삭제 불가능 T6FS07 일부 버전(301647 패치 존재) 및 T7 버전 이상부터 존재 |
| LBACSYS | lbacsys | 계정 삭제 불가능 T7 버전 이상부터 존재 |
연계 시스템 확인
사전에 연계 시스템에서 사용 중인 DB 계정에 대한 확인이 필요합니다.
방법
설정
- 작업 전 WITH_GRANT_OPTION 부여 유무 확인
select grantee || ':' || owner || '.' || table_name
from dba_tab_privs
where grantable='YES'
and owner not in ('SYS', 'MDSYS', 'ORDPLUGINS', 'ORDSYS', 'SYSTEM', 'WMSYS', 'SDB',
'LBACSYS', 'ANONYMOUS', 'APEX_050100', 'APEX_PUBLIC_USER', 'APPQOSSYS',
'AUDSYS', 'CTXSYS', 'DBSFWUSER', 'DBSNMP', 'DIP', 'DVSYS', 'DVF',
'FLOWS_FILES', 'GGSYS', 'GSMADMIN_INTERNAL', 'GSMCATUSER', 'GSMUSER',
'MDDATA', 'OUTLN', 'ORACLE_OCM', 'REMOTE_SCHEDULER_AGENT', 'SYSBACKUP',
'SYSKM', 'SYSDG', 'SYSRAC', 'SYS$UMF', 'XDB', 'XS$NULL')
and grantee not in (select grantee from dba_role_privs where granted_role='DBA')
order by grantee;
grantee || ':' || owner || '.' || table_name
----------------------------------------
TEST_GRANTEE:TEST_OWNER.SAMPLE_TABLE
1 row selected.참고
조회 시, "LBACSYS:SYSCAT.DBA_ROLE_PRIVS" 결과가 나타난다면 285784 패치 적용이 필요합니다.
티맥스티베로에서 제공하는 기술지원을 통해 패치를 적용하시길 바랍니다.
- 임시 조치 방법
-- 1. with grant option 권한 회수 revoke select on dba_role_privs from lbacsys; -- 2. select 권한만 재부여 grant select on dba_role_privs to lbacsys;
- 권한 회수
-- 1. 부여된 권한을 완전히 회수 (전파 권한까지 함께 사라짐) REVOKE [PRIVILEGE] ON [OWNER].[TABLE_NAME] FROM [USERNAME]; ex) REVOKE SELECT ON TEST_OWNER.SAMPLE_TABLE FROM TEST_GRANTEE; -- 2. 필요 시, 일반 권한만 다시 부여 (WITH GRANT OPTION 제외) GRANT [PRIVILEGE] ON [OWNER].[TABLE_NAME] TO [USERNAME]; ex) GRANT SELECT ON TEST_OWNER.SAMPLE_TABLE TO TEST_GRANTEE;
- 작업 후 WITH_GRANT_OPTION 부여 유무 확인
set pages 999
set lines 400
col grantee for a20
col owner for a20
col table_name for a30
col grantor for a20
col privilege for a20
col grantable for a30
select * from dba_tbl_privs where GRANTEE not in ('PUBLIC','SYS','SYSCAT','SYSGIS','OUTLN','SYSBACKUP','LBACSYS','HS_ADMIN_ROLE','SELECT_CATALOG_ROLE');
0 row selected.
원복
- WITH_GRANT_OPTION 권한 부여
GRANT [PRIVILEGE] ON [OWNER].[TABLE_NAME] TO [USERNAME] WITH GRANT OPTION; ex) GRANT SELECT ON TEST_OWNER.SAMPLE_TABLE TO TEST_GRANTEE WITH GRANT OPTION;