[DBMS/접근관리] DBA 이외의 인가되지 않은 사용자가 시스템 테이블에 접근할 수 없도록 설정 (D-06)

취약점 개요

■ 위험도
- 상

■ 점검 목적
- 시스템 테이블의 일반 사용자 계정 접근 제한 설정 적용 여부를 점검하여 일반 사용자 계정 유출 시 발생할 수 있는 비인가자의 시스템 테이블 접근 위험을 차단하기 위함

■ 보안 위협
- 시스템 테이블의 일반 사용자 계정 접근 제한 설정이 되어 있지 않을 경우 객체, 사용자, 테이블 및 뷰, 작업 내역 등의 시스템 테이블에 저장된 정보가 누출될 수 있음

점검 및 조치 방법

■ 판단 기준
- 양호: DBA만 접근 가능한 테이블에 일반 사용자 접근이 불가능 할 경우
- 취약: DBA만 접근 가능한 테이블에 일반 사용자 접근이 가능한 경우

■ 조치 방법
DBA만 접근 가능한 테이블(System Table)의 접근 권한 변경

■ Oracle
1. DBA만 접근 가능한 테이블의 권한 확인(SQL*Plus)
SQL> select grantee, privilege, owner, table_name from dba_tab_privs where (owner='SYS' or table_name like 'DBA_%') and privilege <> 'EXECUTE' and grantee not in ('PUBLIC', 'AQ_ADMINISTRATOR_ROLE', 'AQ_USER_ROLE', 'AURORA$JIS$UTILITY$', 'OSE$HTTP$ADMIN', 'TRACESVR', 'CTXSYS', 'DBA', 'DELETE_CATALOG_ROLE', 'EXECUTE_CATALOG_ROLE', 'EXP_FULL_DATABASE', 'GATHER_SYSTEM_STATISTICS', 'HS_ADMIN_ROLE', 'IMP_FULL_DATABASE', 'LOGSTDBY_ADMINISTRATOR', 'MDSYS','ODM', 'OEM_MONITOR', 'OLAPSYS', 'ORDSYS', 'OUTLN', 'RECOVERY_CATALOG_OWNER', 'SELECT_CATALOG_ROLE', 'SNMPAGENT', 'SYSTEM', 'WKSYS', 'WKUSER', 'WMSYS', 'WM_ADMIN_ROLE', 'XDB', 'LBACSYS', 'PERFSTAT', 'XDBADMIN') and grantee not in (select grantee from dba_role_privs where granted_role='DBA') order by grantee;
(어떤 계정이나 role이 나타나지 않으면 양호)

2. 불필요하게 테이블 접근 권한이 사용자 계정에 할당된 경우(SQL*Plus)
SQL> REVOKE 권한 on 객체 FROM User

■ MSSQL
1. System tables 접근 권한이 Public, Guest 또는 비 인가된 사용자에게 부여된 경우 접근 권한을 Public, Guest, 비인가된 사용자로부터 권한 제거
Use database name
Revoke on <권한> on <object> from [user name]|[public]|[guest]
*중간에 버티컬바( | ) 주의

2. 시스템 테이블에 접근하기 위해서는 stored procedure 또는, information_schema views를 통해 접근해야 함

3. 시스템 테이블에 접근 가능한 stored procedure는 사용이 제한되어야 함

■ MySQL
1. 일반 사용자로부터 mysql.user 테이블 모든 접근 권한 제거
mysql> revoke all on mysql.user from ‘[user name]’@’[hosts]’;
mysql> flush privileges

2. 일반 사용자로부터 mysql.user 테이블 접근 권한 제거
mysql> revoke [권한] on mysql.user from [user name];
mysql> flush privileges

댓글

Designed by JB FACTORY