D-13
📖 데이터 딕셔너리 접근 제한
데이터베이스 보안
위험도: 상💡 쉽게 말하면
도서관에 모든 회원의 비밀 명부가 있는데, 평범한 열람증만 있어도 그 명부를 펼쳐볼 수 있다면 큰일입니다. O7_DICTIONARY_ACCESSIBILITY=TRUE는 "ANY" 권한만 있으면 SYS의 비밀 사전(딕셔너리)을 들여다보게 합니다. 이 문을 닫아두어야 합니다.
도서관에 모든 회원의 비밀 명부가 있는데, 평범한 열람증만 있어도 그 명부를 펼쳐볼 수 있다면 큰일입니다. O7_DICTIONARY_ACCESSIBILITY=TRUE는 "ANY" 권한만 있으면 SYS의 비밀 사전(딕셔너리)을 들여다보게 합니다. 이 문을 닫아두어야 합니다.
🎯 직접 해보기 — 공격을 실행해 보세요
아래에서 시스템 상태를 취약 또는 안전(조치 적용)으로 바꾼 뒤 공격 실행을 눌러, 같은 공격이 어떻게 다르게 끝나는지 직접 확인하세요.
# 공격자가 ANY 권한으로 SYS.USER$의 비밀번호 해시를 덤프한다
# [공격 실행] 버튼을 누르면 시작합니다.
📋 설정 비교 (왜 막혔나?)
✗ 취약한 설정
-- 파라미터 확인
SQL>
SHOW PARAMETER O7_DICTIONARY_ACCESSIBILITY
O7_DICTIONARY_ACCESSIBILITY boolean TRUE
→ 딕셔너리 접근으로 권한상승 (취약)
✓ 안전한 설정
-- FALSE 설정
SQL>
ALTER SYSTEM SET O7_DICTIONARY_ACCESSIBILITY=FALSE SCOPE=SPFILE;
System altered.
→ 딕셔너리 보호 (양호)
🔧 조치 방법
O7_DICTIONARY_ACCESSIBILITY=FALSE로 설정 후 재기동합니다.- SELECT ANY TABLE 등 ANY 권한 보유 계정을 점검합니다.
✅ 점검 체크리스트
- O7_DICTIONARY_ACCESSIBILITY가 FALSE인가
- ANY 권한 보유 계정이 최소화됨
점검기준: 데이터베이스 > 데이터 딕셔너리 접근 제한