SSL 취약점을 이용한 신종 공격 방식인 DROWN, CacheBleed 취약점이 발견 되었습니다.
□ 개요
o 3월 1일(현지시간) 오픈SSL은 SSLv2 규격(Protocol)에 대한 긴급 업데이트 발표[1]
o SSL 취약점을 이용한 신종 공격 방식인 DROWN, CacheBleed에 대한 보안 업데이트 등
– DROWN(Decrypting RSA with Obsolete and Weakened eNcryption)
– CacheBleed: 인텔 프로세서의 Cache-bank 충돌로 인한 정보 노출을 이용한 부채널 공격
□ 영향 받는 사용자
– OpenSSL 1.0.2 사용자: 1.0.2g로 업데이트
– OpenSSL 1.0.1 사용자: 1.0.1s로 업데이트
□ 업데이트 내용
o SSLv2 프로토콜 비활성화 기본 설정 및 SSLv2 EXPORT 암호화 제거 등
□ 취약점 내용 및 권고 사항
o DROWN: 낡고 취약한 암호화를 통한 RSA 복호화
– RSA(Rivest Shamir Adleman): 공개키 암호화 알고리즘의 하나
CVEs | 심각도 | 내용 | 비고 |
CVE-2016-0800 | 높음 | SSLv2를 이용한 TLS에 대한 프로토콜 간 공격 | DROWN |
CVE-2016-0705 | 낮음 | DFB, 발생 빈도 낮음 | |
CVE-2016-0798 | 낮음 | SRP 데이터베이스에서의 메모리 누수 | |
CVE-2016-0797 | 낮음 | 널 포인터 역참조 및 힙 커럽션 | |
CVE-2016-0799 | 낮음 | 고정 메모리 이슈 | |
CVE-2016-0702 | 낮음 | 부채널 공격 | CacheBleed |
CVE-2016-0703 | 높음 | 분할 정복 알고리즘 | |
CVE-2016-0704 | 보통 | Bleichenbacher 공격 |
□ 용어 설명
o DFB(Double-Free Bug): 힙 오버플로우에 기반을 둔 공격으로, 원하는 위치의 메모리를 사용하기 위한 방법
o 널 포인터 역참조(Null Pointer Dereference): 널 포인터에 임의의 값을 대입하여 발생하는 에러
o 힙 커럽션(Heap Corruption): 동적 할당한 크기보다 더 큰 영역에 접근함으로써 발생하는 에러
o 부채널 공격(Side Channel Attack): 알고리즘의 약점을 찾거나 무차별 공격을 하는 대신 암호 체계의 물리적인 구현 과정의 정보를 기반으로 하는 공격 방법
o 분할 정복 알고리즘(Divide-and-conquer): 그대로 해결할 수 없는 문제를 작은 문제로 분할하여 문제를 해결하는 방법
o Bleichenbacher 공격: RSA 암호화 메시지 내용을 점차적으로 노출하기 위한 공격
□ 문의사항
o 한국인터넷진흥원 인터넷침해대응센터: 국번 없이 ☏118
[참고사이트]
[1] https://www.openssl.org/news/secadv/20160301.txt
=====================================================================
openssl 의 취약점이 발생했다.
해결 방법은 openssl 1.0.1 사용자의 경우 1.0.1s 으로 업데이트.
1.0.2 버전 사용자는 1.0.2g 으로 업데이트를 하면 된다.
다만 아직 업데이트 패치가 나오지 않았기 때문에 아래와 같이 httpd.conf 혹은 extra/httpd-ssl.conf 에 설정하여 DROWN 공격을 막을 수 있다.
1 |
SSLProtocol -SSLv2 |
주의할것은 이는 SMTP , POP , IMAP 등과 같이 SSL을 적용할수 있는 모든 분야에 발생할 수 있기 때문에
위와 같은 임시조치를 하였더라도 업데이트가 나올경우 업데이트를 실시해야 한다.
업데이트 명령어는 아래와 같으며 실행시 openssl, openssl-devel 이 업데이트 된다.
1 |
~]# yum -y update openssl |
아래는 openssl 1.0.2g 를 소스 컴파일로 업그레이드 하는 방법이다.
1 2 3 4 5 6 7 8 9 |
~]# cd /opt ~]# wget https://www.openssl.org/source/openssl-1.0.2g.tar.gz ~]# tar xvfzp openssl-1.0.2g.tar.gz ~]# cd openssl-1.0.2g ~]# ./config --prefix=/usr/local/openssl shared zlib ~]# make ~]# make install ~]# echo /usr/local/openssl/lib > /etc/ld.so.conf.d/openssl.conf ~]# ldconfig |
기존 openssl 이 깔려 있는 상태에서 openssl 을 설치한 경우
–with-ssl=/usr/local/openssl 옵션을 추가하여apache 재컴파일을 해야 한다.
아울러 php.ini 의 아래 항목을 찾아 수정 해야 한다.
1 2 |
openssl.cafile=/etc/pki/tls/certs/ca-bundle.crt openssl.capath=/usr/local/openssl/ssl/certs |
아니면 아래와 같이 심볼링 링크를 생성한다.
1 2 3 |
~]# rm -rf /usr/local/openssl/ssl/certs ~]# ln -s /etc/pki/tls/certs /usr/local/openssl/ssl/certs ~]# ln -s /etc/pki/tls/certs/ca-bundle.crt /usr/local/openssl/ssl/cert.pem |