취약점 진단 가이드/DBMS 취약점 진단 가이드

D-08(상) DBA 이외의 인가되지 않은 사용자가 시스템 테이블에 접근할 수 없도록 설정

H.J.World 2021. 7. 21. 17:50
728x90
반응형

※ 해당 가이드는 2021년 기준입니다.

주요정보통신기반시설 관리기관은 -정보통신기반 보호법- 제9조에 따라, 주요정보통신기반시설로 신규 지정된 후 6개월이내, 그리고 매년 취약점 분석/평가를 실시하여야 한다. 취약점 분석/평가는 453개의 관리적/물리적/기술적 점검항목에 대한 주요정보통신기반시설의 취약여부를 점검하여, 악성코드 유포, 해킹 등 사이버 위협 대응을 위한 종합적 개선과정이다.


주요정보통신기반시설 취약점 네트워크 장비 점검 항목

■ 취약점 개요

○ 점검개요 : 시스템 테이블에 일반 사용자 계정이 접근할 수 없도록 설정되어 있는지 점검

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

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

○ 점검대상 : Oracle, MSSQL, MySQL, ALTIBASE, TIBERO, PostgreSQL

○ 판단기준

- 양호 : 시스템 테이블이 DBA 만 접근 가능하도록 설정되어 있는 경우

- 취약 : 시스템 테이블이 DBA 외 일반 사용자 계정이 접근 가능하도록 설정되어 있는 경우

 

■ 점검방법 및 조치방안

Oracle, Tibero

Step 1 DBA만 접근 가능한 테이블의 권한 확인(SQL*Plus)
 
SQL> select grantee, privilege, owner, table_name from dba_tab_privs where (o
wner=‘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이 나타나지 않으면 양호
Step 2 불필요하게 테이블 접근 권한이 사용자 계정에 할당된 경우(SQL*Plus)
 
SQL> REVOKE 권한 on 객체 FROM User;

○  MSSQL

Step 1 System tables 접근 권한이 Public, Guest 또는 비 인가된 사용자에게 부여된 경우 접근 권한을 Public, Guest, 비인가된 사용자로부터 권한 제거
 
Use database name
Revoke <권한> on <object> from [user name]|[public]|[guest];
Step 2 시스템 테이블에 접근하기 위해서는 stored procedure 또는, information_schema
views를 통해 접근
Step 3 시스템 테이블에 접근 가능한 stored procedure는 사용 제한

○ MySQL

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

○ Altibase

Step 1 sys_tables_ 조회하여 system_ 외 접근 계정 유무 확인
 
select * from system_. sys_tables_;
Step 2 불필요 계정 접근 시 해당 접근 해제

○ PostgreSQL

Step 1 Select * from information_schema.role_table_grants;
Step 2 Schema명에 해당되는 Table에 대한 접근 권한을 일반사용자로부터 제거
 
revoke [all,select,insert,update...] on all tables in schema ‘schema’ from ‘user’;

 

■ 조치 시 영향

일반 계정으로 시스템 테이블 접근 불가

 

728x90
반응형