상세 컨텐츠

본문 제목

웹 사이트의 데이터베이스 해킹이 가능한 새로운 MySQL 제로데이 등장

국내외 보안동향

by 알약(Alyac) 2016. 9. 19. 13:23

본문


웹 사이트의 데이터베이스 해킹이 가능한 새로운 MySQL 제로데이 등장

New MySQL Zero Days — Hacking Website Databases


세계에서 두 번째로 인기있는 데이터베이스 관리 소프트웨어인 MySQL에서 공격자가 데이터베이스를 온전히 제어할 수 있도록 허용하는 심각한 제로데이 취약점이 2건 발견되었습니다.


폴란드의 보안 연구원인 Dawid Golunski는 MySQL 버전과 MariaDB와 PerconaDB에까지 영향을 미치는 두 개의 제로데이인 CVE-2016-6662, CVE-2016-6663을 발견했습니다.


Golunski는 오라클, MariaDB, PerconaDB 측에 이 사실을 알린 후, CVE-2016-6662에 대한 PoC 익스플로잇 코드를 공개했습니다. MariaDB와 PerconaDB는 해당 취약점을 수정했지만, 오라클은 아직 수정하지 않은 상태입니다.


취약점 원리


CVE-2016-6662 취약점은 원격 혹은 로컬의 공격자로 MySQL 설정파일(my.cnf)에 임의의 설정값을 인젝션 하도록 허용합니다. 해당 취약점은 기본 설정의 MySQL 서버에 영향을 주며, DB가 재부팅 되는 시점부터 적용됩니다. 일반적으로 시스템 업데이트나 패키지 업데이트와 같은 경우 DB서버가 재부팅됩니다. 


또한 인증된 MySQL DB접근(네트워크 연결 또는 phpMyAdmin과 같은 웹 인터페이스를 통한 접근 포함) 및 SQL 인젝션 등을 통해서도 해당 취약점이 악용될 수 있습니다. 공격자가 성공적으로 해당 취약점을 악용하였을 경우, 루트 권한을 획득하여 임의의 코드를 실행하여 DB를 완전히 장악할 수 있습니다. 더불어 해당 취약점은 SELinux나 AppArmor Linux 커널 보안 모듈 등이 주요 리눅스 배포판에서 MySQL 서비스를 위한 디폴트 정책으로 활성화되어 있는 경우에도 악용될 수 있어 주의가 필요합니다.


CVE-2016-6663 취약점에 대한 상세내용은 아직 공개되지 않았으나, CVE-2016-6662취약점의 변종으로, 동일하게 루트 권한을 획득하여 원격코드실행이 가능한 취약점일 것이라고 추측하고 있습니다. 



취약한 버전


모든 버전의 MySQL (5.7.15, 5.6.33, 5.5.52 버전 포함)

모든 버전의 MariaDB, PerconaDB 



MySQL패치방법

MariaDB, PerconaDB

최신 버전으로 업데이트


MySQL

아직 패치가 나오지 않았으며, 10월 18일경 패치가 발표될 것으로 예상


임시조치


MySQL버전을 업데이트 한 후, 업데이트 된 mysql의 Id_preload를 /usr/lib64,/usr/lib와 같은 시스템 목록과 mysql 설치목록에서만 로딩 될 수 있도록 제한


MySQL 5.5 버전 사용자

https://www.percona.com/downloads/Percona-Server-5.5/


MySQL 5.6 버전 사용자

MySQL 5.7 버전 사용자

https://www.percona.com/downloads/Percona-Server-5.7/Percona-Server-5.7.14-7/


만약 업데이트를 진행하기 어려운 사용자는 패치가 나올때까지 다음과 같은 조치를 취해둡니다.


1) DB사용자 권한 제한

원격 사용자에게 SUPER 혹은 FILE 권한을 주지 않도록 설정. 다만 CVE-2016-6663은 FILE권한이 없어도 사용이 가능한 점 참고.

(MySQL이 공개한 로그에 보면 REPAIR TABLE이 사용하는 임시파일과 연관이 있는게 아니냐는 의혹도 있음)


2) 설정파일 권한 제한

datadir 목록 하위에 새로 my.cnf와 .my.cnf파일을 생성(일반적으로는 /var/lib/mysql 목록 하위에 있으며, owner/group을 root로 설정하고 권한은 0600)

기타 위치는 /etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~/.my.cnf (mysqld --help --version을 통해서 mysqld 버전 정보를 찾아볼 수 있음)

설정파일 중 !includedir에 정의되어 있는 리스트들에 mysql 사용자가 쓸 수 없도록 설정

권한 설정을 통하여 mysql 사용자가 설정파일에 쓸 수 없도록 설정



 PoC


▶ PoC 확인




참고 :

http://thehackernews.com/2016/09/hack-mysql-database.html

https://www.percona.com/blog/2016/09/12/database-affected-cve-2016-6662/

http://seclists.org/oss-sec/2016/q3/481

http://legalhackers.com/advisories/MySQL-Exploit-Remote-Root-Code-Execution-Privesc-CVE-2016-6662.html

관련글 더보기

댓글 영역