Oracle/Database
오라클DB “5시간이면 해킹“
닥터 후
2012. 9. 26. 15:16
즐거운 샤핑 http://www.shapping.co.kr |
데이터베이스(DB) 시장점유율 1위인 오라클이 명성에 또 한번 흠이 가게됐다. 오라클DB 버전11g에서 사용자 이름과 DB의 이름만 알면 일반PC에서 5시간만에 비밀번호를 알아낼 수 있는 것으로 나타났기 때문이다.
20일(현지시간) 카스퍼스키랩 보안뉴스사이트인 쓰렛포스트는 보안기업 앱섹(AppSec) 소속 에스테반 마르티네즈 파요 보안연구원이 아르헨티나에서 열린 보안컨퍼런스 에 참석해 이같은 해킹 방법을 시연했다고 보도했다.
이 자리에서 그는 불과 5시간만에 정상적인 PC에서 해킹을 통해 쉽게 비밀번호를 획득한 뒤 사용자 데이터 접근권한을 확보했다. 이날 마르티네즈 파요는 보안 블로그인 다크리딩에 "공격자들은 그저 DB에 접근할 수 있는 사용자이름과 DB이름만 알면 매우 쉽게 해킹할 수 있다"고 밝혔다.
그는 오라클의 비밀번호 인증 시스템 중 암호화 알고리즘에 대한 취약점을 발견했다. 이를 이용하면 사용자와 서버 사이에서 마치 사용자 혹은 서버인 양 활동하는 중간자 공격(Man-in-the middle attack)처럼 복잡하게 다수의 사용자들을 속일 필요가 없다고 말했다.
해킹에 사용된 취약점은 사용자가 로그인을 시도할 때 인증 프로토콜이 세션키 값을 보호하는 방법에서 발견됐다.
사용자 인증과정에서 클라이언트가 DB서버에 접속하기 위해서는 세션키 값을 서버에 보낸다. 그러면 서버는 여기에 솔트값을 붙여 클라이언트에 전송한다. 문제는 공격자들이 세션키 값과 솔트값을 확보하고 있으면 브루트포스어택(무차별 대입 공격)을 통해 비밀번호를 알아 낼 수 있다는 점이다.
마르티네즈 파요는 "일단 세션키 값을 알게 되면 로그인이 여러 번 실패할 때도 서버에 기록이 남지 않기 때문에 초당 수백만번씩 무작위 비밀번호 조합을 대입하면 그 중 실제 비밀번호를 알아 낼 수 있다"고 밝혔다. 일반적으로 비밀번호 오류가 일정 횟수 이상 발생하면 일정시간 접속을 차단하는 등의 조치가 취해지는데 이미 확보한 세션키 값을 반복사용해 여러번 입력했다는 사실을 알 수 없게 했다는 설명이다.
이같은 취약점은 오라클DB 버전12에서는 적용되지 않는다. 그러나 버전11.1과 11.2에서는 여전히 취약점이 수정되지 않고 있다. 이 연구원은 "오라클이 11.1의 프로토콜에서 발생하는 버그를 고칠 계획이 없는 것처럼 보인다"고 지적했다.
오라클DB에서 취약점이 처음으로 발견된 것은 아니다. 지난 1월 오라클은 78개의 소프트웨어 버그를 발견하고 대규모 패치를 단행했다. 이는 해커들이 오라클DB를 원격으로 조정할 수 있도록 했다.
지난달에는 오라클의 최신 자바7 업데이트에서 해커들이 임의코드를 실행할 수 있게 하는 보안취약점이 발견돼 문제가 되기도 했다.
마르티네즈 파요는 이에 대한 대책으로 "버전11.1에서 프로토콜을 사용불가로 만들고, 이전 버전인 10g를 구동할 경우에는 이 같은 문제가 발생하지 않는다"고 말했다.
그러나 걱정할 필요가 없다.
Oracle DB 비밀번호 암호화의 Security 취약점 (CVE-2012-3137) 은 Note 1492721.1 에 이미 Publish 되어있다.
정리해드리면 이 문제는 10g 버전은 영향이 없고 11.1.x 과 11.2.x 에 영향이 있다.
o 해당 Oracle11g logon protocol 문제는 Oracle11.2.0.3 에서 Fix 된 것이며 원초적 문제해결을 위해 sqlnet.ora 에 SQLNET.ALLOWED_LOGON_VERSION=12 를 설정하면 된다.
o Oracle 11.2.0.2 이하의 버전에서는 2012년 10월 CPU 적용 전까지 해결 방법은 Note 1492721.1 을 적용하도록 강력히 권고하는 바이다.
♨ 요약 :
o Oracle 11.2.0.2 이하의 버전에서는 2012년 10월 CPU 적용 전까지 해결 방법은 Note 1492721.1 을 적용하도록 강력히 권고하는 바이다.
♨ 요약 :
1. 11g Logon Protocol 을 사용하지 않고 10g password verifier 를 사용하도록 함.
조치방법 : DB 파라미터 포함 : SEC_CASE_SENSITIVE_LOGON=FALSE
10g password verifier 를 사용하고 있는지 확인 방법
→ DBA_USERS 의 PASSWORD_VERSIONS 확인.
일반적으로 해당 값이 "10G 11G" 이며 "10G" 가 없는 경우 orapwd 로 password file 재등록
2. Network Firewall 또는 Database Firewall 사용.
또는 허용된 IP Address 만 접속하도록sqlnet.ora TCP.VALIDNODE_CHECKING=YES with TCP.INVITED_NODES 설정
3. 그 외 복잡한 Password 사용유도, Oracle Advanced Security Option 을 활용한 외부 OS 인증방법 사용 ( Kerberos 또는 PKI )