[취약한 HTTPS 프로토콜 이용]▶
O 취약한 버전의 HTTPS 프로토콜을 사용하는 경우 낮은 버전에서 공격 가능한 알려진 취약점에 의하여 암호화된 데이터를 복호화하여 중요한 정보가 유출될 수 있는 취약점
O 근거 자료
☞ 개인정보의 안전성 확보조치 기준 제7조(개인정보의 암호화)
☞ 주요정보통신기반시설 기술적 취약점 분석 평가 상세 가이드(p.727)
☞ OWASP TOP10 2021
O 판단 기준
양호 | 안전한 HTTPS 프로토콜을 이용하는 경우(TLS 1.2 이상) |
취약 | 안전하지 않거나 지원 중단된 HTTPS 프로토콜을 이용하는 경우(TLS1.1 이하) |
O 점검 방법
- NMAP, SSLLABS 등의 점검도구로 SSL 스캔을 통해 SSL 버전 확인
: TLS 1.2 미만 버전이 활성화되어 있는지 확인
O 조치 방법
- 웹서버에서 POODLE, BEAST 어택에 취약한 SSL3.0 및 TLS 1.1 이하의 프로토콜을 지원하지 않도록 환경설정하고, TLS 1.2 이상의 프로토콜이 지원되지 않게 설정되어 있다면 지원하도록 설정
- 서비스 목적으로 부득이하게 SSL 3.0를 지원해야 한다면 SSL POODLE ATTACK (CVE-2014-3566) 취약점을 없앨 수 있는 다른 방법(관련 알고리즘 지원 중단 또는 취약점 패치 등)을 벤더사에 문의하여 조치
- TLS POODLE ATTACK(CVE-2014-8730) : 벤더사에 문의하여 취약한 네트워크 장비 또는 웹서버에 해당 취약점을 제거하는 패치를 적용
- 웹 애플리케이션 방화벽의 잘못된 SSL 설정으로 인하여 취약점이 발견될 수도 있으므로, 웹 애플리케이션 방화벽의 설정 또한 확인 필요
O 시큐어 코딩(Secure Coding) 예시
# Apache ▶
- ssl.conf 혹은 httpd-ssl.conf 파일에서 HTTPS 프로토콜과 알고리즘 설정한다.
: 위치 - ($HOME_BASE)/conf/httpd-ssl.conf 환경에 따라 설정 파일의 위치가 달라질 수 있다.
- Apache TLS 조치 예시
: SSLProtocol -All +TLSv1.2 // 프로토콜 버전 지정
// 모든 SSL/TLS 프로토콜을 비활성화, TLS 1.2만 활성화
: SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:!ECDHE-RSA-AES128-CBC-SHA256:!ECDHE-RSA-AES128-CBC-SHA:!ECDHE-RSA-AES256-CBC-SHA384:!ECDHE-RSA-AES256-CBC-SHA:!RSA-AES128-GCM-SHA256:!RSA-AES128-CBC-SHA256:!RSA-AES128-CBC-SHA:!RSA-AES256-GCM-SHA384:!RSA-AES256-GCM-SHA256:!RSA-AES256-GCM-SHA
// 활성화할 알고리즘 및 비활성화할 알고리즘
// 비활성화할 알고리즘은 알고리즘 앞에 “!”를 붙여서 비활성화한다
# NginX ▶
- nginx.conf 설정 파일에서 프로토콜과 알고리즘을 설정한다.
: 위치 - ($HOME_BASE)/nginx.conf 환경에 따라 설정 파일 위치가 달라질 수 있다
- NginX TLS 조치 예시
server{
listen 443 ssl;
.....
ssl_protocols TLSv1.2 // 프로토콜 버전 지정
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:!ECDHE-RSA-AES128-CBC-SHA256:!ECDHE-RSA-AE
S128-CBC-SHA:!ECDHE-RSA-AES256-CBC-SHA384:!ECDHE-RSA-AES256-CBC-SHA:!RSA-AES128-GCM-SHA256:!RSA-AES128-CBC-SHA
256:!RSA-AES128-CBC-SHA:!RSA-AES256-GCM-SHA384:!RSA-AES256-GCM-SHA256:!RSA-AES256-GCM-SHA;
// 활성화할 알고리즘 및 비활성화할 알고리즘
// 비활성화할 알고리즘은 알고리즘 앞에 “!”를 붙여서 비활성화한다
}
# IHS ▶
- httpd-ssl.conf 파일에서 프로토콜과 알고리즘을 설정한다.
: 위치 - ($HOME_BASE)/conf/httpd-ssl.conf 환경에 따라 설정 파일의 위치가 달라질 수 있다.
- IHS TLS 조치 예시
server{
listen 443 ssl;
.....
ssl_protocols TLSv1.2; // 프로토콜 버전 지정
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:!ECDHE-RSA-AES128-CBC-SHA256:!ECDHE-RSA-AE
S128-CBC-SHA:!ECDHE-RSA-AES256-CBC-SHA384:!ECDHE-RSA-AES256-CBC-SHA:!RSA-AES128-GCM-SHA256:!RSA-AES128-CBC-SHA
256:!RSA-AES128-CBC-SHA:!RSA-AES256-GCM-SHA384:!RSA-AES256-GCM-SHA256:!RSA-AES256-GCM-SHA;
// 활성화할 알고리즘 및 비활성화할 알고리즘
// 비활성화할 알고리즘은 알고리즘 앞에 “!”를 붙여서 비활성화한다
}
# IIS ▶
- 레지스트리에서 프로토콜을 설정한다. ( 시작 > 실행 > regedit )
: 위치 - 컴퓨터\HKEY_LOCAL_MACHINES\SYSTEM\CurrentControlSet\ControL\SecurityProviders\SCHANNEL\Protocols\
- IIS TLS 조치 예시
: 항목에 없으면 생성
> Protocols > 우 클릭 > 새로 만들기 > 키 > 이름 [SSL 3.0], [TLS 1.0], [TLS 1.1] 설정
> 하위 경로에 동일하게 각각 키 생성 > [Client], [Server]
> 각각 [Client], [Server] 해당 경로 > 우 클릭 > 새로 만들기 > DWORD32비트)
> 값 이름을 [Enabled]로 수정 그리고 좌 클릭 후 값 데이터를 0으로 설정
# Tomcat ▶
- Server.xml 파일에서 프로토콜과 알고리즘을 설정한다.
: 위치 - ($HOME_BASE)/conf/server.xml 환경에 따라 설정 파일 위치가 달라질 수 있다.
- Tomcat TLS 조치 예시
sslProtocols = "TLS"
sslEnabledProtocols = "TLSv1.2" // 프로토콜 버전 지정
ciphers = "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA"
[취약한 HTTPS 암호 알고리즘 이용]▶
O 표준화되지 않은 암호 알고리즘이나 오래된 암호 알고리즘을 사용하는 경우 공격자가 알고리즘을 분석, 해독하여 정보가 유출될 수 있는 취약점
O 근거 자료
☞ 개인정보의 안전성 확보조치 기준 제7조(개인정보의 암호화)
☞ 주요정보통신기반시설 기술적 취약점 분석 평가 상세 가이드(p.727)
☞ OWASP TOP10 2021
O 판단 기준
양호 | 안전한 HTTPS 암호 알고리즘을 이용하는 경우 |
취약 | 안전하지 않은 HTTPS 암호 알고리즘을 이용하는 경우 |
O 점검 방법
- NMAP, SSLLABS 등의 점검도구로 SSL 스캔
: 취약한 암호 알고리즘(MD5, RC4 등)이 활성화되어 있는지 확인
O 조치 방법
- HTTPS 통신 시 취약한 암호 알고리즘을 사용하지 않도록 설정
: DES 및 3DES를 사용하는 cipher suite 비활성화
: Bulk encryption을 제공하지 않는 cipher suite의 비활성화(eNull, Null이 포함된 cipher suite)
: 112미만의 key size를 사용하는 cipher suite의 비활성화
: MD5를 해싱 매커니즘으로 사용하는 cipher suite의 비활성화
: IDEA 및 RC4를 사용하는 cipher suite의 비활성화
: CBC에 대한 취약성은 TLS V1.2 버전에서 나타나지 않기 때문에 버전 업그레이드 적용
- 웹 애플리케이션 방화벽의 잘못된 SSL 설정으로 인하여 취약점이 발견될 수도 있으므로, 웹 애플리케이션 방화벽의 설정 또한 확인 필요
- 입력 정보 보호가 필요한 입력 지점 (계정 P/W, 계좌 비밀번호, 공인인증서 P/W 등)을 가상 키패드 모듈을 사용하고 가상 키패드를 통해 입력 받은 사용자 정보는 암호화하여 전송
O 시큐어 코딩(Secure Coding) 예시
# Apache ▶
- ssl.conf 혹은 http-ssl.conf 파일에서 HTTPS 프로토콜과 알고리즘 설정한다.
: 위치 - ($HOME_BASE)/conf/httpd-ssl.conf 환경에 따라 설정 파일 위치가 달라질 수 있다.
- Apache 취약한 알고리즘 조치 예시
SSLProtocol -All +TLSv1.2 // 프로토콜 버전 지정
// 모든 SSL/TLS 프로토콜을 비활성화, TLS 1.2만 활성화
SSLCipherSuite ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:!ECDHE-RSA-AES128-CBC-SHA256:!ECDHE-RSA-AES128-CBC-SHA:!ECDHE-RSA-AES256-CBC-SHA384:!ECDHE-RSA-AES256-CBC-SHA:!RSA-AES128-GCM-SHA256:!RSA-AES128-CBC-SHA256:!RSA-AES128-CBC-SHA:!RSA-AES256-GCM-SHA384:!RSA-AES256-GCM-SHA256:!RSA-AES256-GCM-SHA
// 활성화할 알고리즘 및 비활성화할 알고리즘
// 비활성화할 알고리즘은 알고리즘 앞에 “!”를 붙여서 비활성화한다
# NginX ▶
- nginx.conf 설정 파일에서 프로토콜과 알고리즘 설정한다.
: 위치 - ($HOME_BASE)/nginx.conf 환경에 따라 설정 파일 위치가 달라질 수 있다.
- NginX 취약한 알고리즘 조치 예시
server{
listen 443 ssl;
.....
ssl_protocols TLSv1.2 // 프로토콜 버전 지정
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:!ECDHE-RSA-AES128-CBC-SHA256:!ECDHE-RSA-AE
S128-CBC-SHA:!ECDHE-RSA-AES256-CBC-SHA384:!ECDHE-RSA-AES256-CBC-SHA:!RSA-AES128-GCM-SHA256:!RSA-AES128-CBC-SHA
256:!RSA-AES128-CBC-SHA:!RSA-AES256-GCM-SHA384:!RSA-AES256-GCM-SHA256:!RSA-AES256-GCM-SHA;
// 활성화할 알고리즘 및 비활성화할 알고리즘
// 비활성화할 알고리즘은 알고리즘 앞에 “!”를 붙여서 비활성화한다
}
# IHS ▶
- httpd-ssl.conf 파일에서 프로토콜과 알고리즘 설정한다.
: 위치 - ($HOME_BASE)/conf/httpd-ssl.conf 환경에 따라 설정 파일 위치가 달라질 수 있다.
- IHS 취약한 알고리즘 조치 예시
server{
listen 443 ssl;
.....
ssl_protocols TLSv1.2 // 프로토콜 버전 지정
ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:!ECDHE-RSA-AES128-CBC-SHA256:!ECDHE-RSA-AE
S
128-CBC-SHA:!ECDHE-RSA-AES256-CBC-SHA384:!ECDHE-RSA-AES256-CBC-SHA:!RSA-AES128-GCM-SHA256:!RSA-AES128-CBC-SHA
256:!RSA-AES128-CBC-SHA:!RSA-AES256-GCM-SHA384:!RSA-AES256-GCM-SHA256:!RSA-AES256-GCM-SHA;
// 활성화할 알고리즘 및 비활성화할 알고리즘
// 비활성화할 알고리즘은 알고리즘 앞에 “!”를 붙여서 비활성화한다
}
# IIS ▶
- 로컬 그룹 정책 편집기에서 알고리즘을 설정한다. (시작 > 실행 > gpedit.msc)
: 위치 - 로컬 컴퓨터 구성 > 컴퓨터 구성 > 관리 템플릿 > 네트워크 > SSL 구성
- IIS 취약한 알고리즘 조치 예시
: SSL 암호 그룹 순서 사용 클릭
: 옵션 > SSL 암호 그룹에 Cipher Suites 값 입력
- IIS - SSL 암호 그룹 Cipher Suites 값
: TLS_AES_256_GCM_SHA384,TLS_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_DHE_RSA_WITH_AES_256_GCM_SHA384,TLS_DHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_GCM_SHA384,TLS_RSA_WITH_AES_128_GCM_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA256,TLS_RSA_WITH_AES_128_CBC_SHA256,TLS_RSA_WITH_AES_256_CBC_SHA,TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_3DES_EDE_CBC_SHA,TLS_RSA_WITH_NULL_SHA256,TLS_RSA_WITH_NULL_SHA,TLS_PSK_WITH_AES_256_GCM_SHA384,TLS_PSK_WITH_AES_128_GCM_SHA256,TLS_PSK_WITH_AES_256_CBC_SHA384,TLS_PSK_WITH_AES_128_CBC_SHA256,TLS_PSK_WITH_NULL_SHA384,TLS_PSK_WITH_NULL_SHA256
// 사용하고 싶은 알고리즘은 콤마를 붙이고 공백 없이 나열
# Tomcat ▶
- Server.xml 파일에서 프로토콜과 알고리즘 설정한다.
: 위치 - ($HOME_BASE)/conf/server.xml 환경에 따라 설정 파일 위치가 달라질 수 있다.
- Tomcat TLS 조치 예시
sslProtocols = "TLS"
sslEnabledProtocols = "TLSv1.2" // 프로토콜 버전 지정
ciphers = "TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA"
[취약한 HTTPS 컴포넌트 사용]▶
O 취약한 HTTPS 확장 모듈 사용 시 취약한 버전의 모듈을 사용하는 경우 암호화된 정보가 노출될 수 있는 취약점
O 근거 자료
☞ 개인정보의 안전성 확보조치 기준 제7조(개인정보의 암호화)
☞ 주요정보통신기반시설 기술적 취약점 분석 평가 상세 가이드(p.727)
☞ OWASP TOP10 2021
O 판단 기준
양호 | HTTPS 확장 모듈 사용 시 모듈의 취약하지 않은 버전을 사용하는 경우 |
취약 | HTTPS 확장 모듈 사용 시 모듈의 취약한 버전을 사용하는 경우 |
O 점검 방법
- NMAP, SSLLABS 등의 점검도구로 SSL 스캔
: CVE 취약점이 존재하는 버전의 SSL을 쓰고 있는지 확인
O 조치 방법
- OpenSSL 버전을 다음과 같이 취약점 발견 버전 이상의 버전으로 업데이트
# 각 취약점에 대한 안전한 버전
- HeartBleed 취약점 (CVE-2014-0160:Heartbleed)
: OpenSSL : 0.9.X
: OpenSSL : 1.0.0
: OpenSSL : 1.0.1g
- CCS Injection 취약점 (CVE-2014-0224)
: OpenSSL : 0.9.8za
: OpenSSL : 1.0.0m
: OpenSSL : 1.0.1h
- OpenSSL 0-Length 취약점 (CVE-2019-1559)
: OpenSSL : 1.0.2r 이후
- OpenSSL Padding Oracle 취약점 (CVE-2016-2017)
: OpenSSL 1.0.1t
: OpenSSL 1.0.2h
[취약한 HTTPS 재협상 허용]▶
O 취약한 HTTPS Renegotiation 설정 시 MITM공격에 의하여 암호화된 정보가 노출될 수 있는 취약점
O 근거 자료
☞ 개인정보의 안전성 확보조치 기준 제7조(개인정보의 암호화)
☞ 주요정보통신기반시설 기술적 취약점 분석 평가 상세 가이드(p.727)
☞ OWASP TOP10 2021
O 판단 기준
양호 | 취약한 HTTPS 재협상을 허용하지 않는 경우 |
취약 | 취약한 HTTPS 재협상을 허용하는 경우 |
O 점검 방법
- NMAP, SSLLABS 등의 점검도구로 SSL 스캔
: HTTPS Renegotiation 활성화 여부 확인
O 조치 방법
- 'SSLInsecureRenegotiation'을 'Off'로 설정
: 웹 어플리케이션 방화벽의 잘못된 SSL 설정으로 인하여 취약점이 발견될 수 있으므로 웹 어플리케이션 방화벽의 설정 확인 필요
O 시큐어 코딩(Secure Coding) 예시
# Apache ▶
- Apache(mod_ssl기반), Apache 2.0: 2.0.64 이상(OpenSSL 0.9.8m 이상), Apache 2.2: 2.2.15 이상(OpenSSL 0.9.8m 이상)
- 환경설정파일(httpd.conf 또는 ssl설정파일) 해당 옵션 추가 또는 수정 (virtualhost 구성하여 서비스하는경우 virtualhost 설정안에 포함시킴)
: SSLInsecureRenegotiation off
- 환경파일을 저장하고 apache 재시작
# WebtoB ▶
- 설정파일 내 해당 옵션 추가 또는 수정
: RenegotiationLevel "secure"
: 또는 RenegotiationLevel = disable (디폴트 secure로 설정)
- RenegotiationLevel 값 구분
설정 값 | 내용 |
secure | 클라이언트와 웹 서버가 모두 안전한 경우 재협상을 진행(예: RFC5746) |
insecure | 클라이언트와 웹 서버가 안전하지 않더라도 재협상을 진행(예: CVE-2009-3555) |
disable | 어떠한 경우에도 재협상을 진행하지 않는다. |
- 설정파일(.m)을 저장하고 컴파일한 뒤 WebtoB 재시작
# IBM ▶
- 환경설정파일(httpd.conf) 해당 옵션 추가 또는 수정
: 예시) VirtualHost *:443 SSLEnable SSLRenegotiation on
[서버 인증서 무결성 검증(SSL Strip)]▶
O 서버 인증서의 무결성 조건이 위배되어 웹 브라우저에서 안전하지 않은 웹사이트로 경고하여 이용자의 신뢰를 떨어트릴 수 있는 취약점
O 근거 자료
☞ 개인정보의 안전성 확보조치 기준 제7조(개인정보의 암호화)
☞ 주요정보통신기반시설 기술적 취약점 분석 평가 상세 가이드(p.727)
☞ OWASP TOP10 2021
O 판단 기준
양호 | 서버 인증서의 무결성 조건이 위배되지 않은 경우 |
취약 | 서버 인증서의 무결성 조건이 위배된 경우 |
O 점검 방법
- NMAP, SSLLABS 등의 점검도구로 SSL 스캔
- CVE 취약점이 존재하는 버전의 SSL을 쓰고 있는지 확인
O 조치 방법
- SSL을 통해 정보를 보호하는 구간에서 HTTP 사용을 방지하고 HTTPS를 강제 사용하도록 설정
- HSTS(HTTP Strict-Transport-Security) 적용
O 시큐어 코딩(Secure Coding) 예시
# Apache ▶
- 헤더 설정
: Header always set Strict-Transport-Security "max-age=86400; includeSubdomains; preload"
# NginX ▶
- 헤더 설정
: add_header Strict-Transport-Security "max-age=86400; includeSubdomains; preload"
# JAVA ▶
- 필터 구현
package core.init;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletResponse;
public class HSTSFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain)
throws IOException, ServletException {
// 필터적용
((HttpServletResponse)res)
.setHeader("Strict-Transport-Security", "max-age=86400; includeSubDomains; preload");
chain.doFilter(req, res);
}
@Override
public void destroy() {
}
@Override
public void init(FilterConfig arg0) throws ServletException {
}
}
# WEB.XML ▶
- 필터 구현
<filter>
<!-- 필터이름 -->
<filter-name>HSTSFilter</filter-name>
<!-- 바로 위 작성한 필터 클래스 전체 경로 -->
<filter-class>core.init.HSTSFilter</filter-class>
</filter>
<filter-mapping>
<!-- 바로 위 매핑할 필터이름 -->
<filter-name>HSTSFilter</filter-name>
<!-- 모든경로에 -->
<url-pattern>/*</url-pattern>
<!-- 요청시 -->
<dispatcher>REQUEST</dispatcher>
</filter-mapping>
// 서버 인증서 유효기간 연장, CN값과 서비스URL이 일치
// 서버 인증서 발급기관(CA)이 신뢰할 수 없는 기관이거나, 자체 서명(Self-signed)된 인증서를 사용 여부 확인 후 수정
[데이터 평문 전송]▶
O 서버와 클라이언트 간 통신 시 데이터가 평문으로 전송되거나 안전하지 않은 암호화 방식으로 전송될 경우 도청(스니핑 등)을 통해 정보를 탈취 및 도용할 수 있는 취약점
O 근거 자료
☞ 개인정보의 안전성 확보조치 기준 제7조(개인정보의 암호화)
☞ 주요정보통신기반시설 기술적 취약점 분석 평가 상세 가이드(p.727)
☞ OWASP TOP10 2021
O 판단 기준
O 점검 방법
- 사용자 로그인 인증정보(개인정보 및 민감정보) 전송 패킷 캡처시 SSL 적용 및 암호화 적용여부 확인
O 조치 방법
- 네트워크를 통해 전송되는 중요정보(비밀번호, 개인정보 등)는 암호화 전송 또는 암호화 프로토콜을 이용해 전송구간 내 평문 노출 제한
: 중요정보 전송 시 HTTPS, SSL, VPN 등 암호화 통신
: 데이터 암호화 시 권장되는 암호화 알고리즘 사용
# 권장 대칭키 암호 알고리즘
[취약한 HTTPS 프로토콜 이용]▶
O 취약한 버전의 HTTPS 프로토콜을 사용하는 경우 낮은 버전에서 공격 가능한 알려진 취약점에 의하여 암호화된 데이터를 복호화하여 중요한 정보가 유출될 수 있는 취약점
O 근거 자료
☞ 개인정보의 안전성 확보조치 기준 제7조(개인정보의 암호화)
☞ 주요정보통신기반시설 기술적 취약점 분석 평가 상세 가이드(p.727)
☞ OWASP TOP10 2021
O 판단 기준
O 점검 방법
- NMAP, SSLLABS 등의 점검도구로 SSL 스캔을 통해 SSL 버전 확인
: TLS 1.2 미만 버전이 활성화되어 있는지 확인
O 조치 방법
- 웹서버에서 POODLE, BEAST 어택에 취약한 SSL3.0 및 TLS 1.1 이하의 프로토콜을 지원하지 않도록 환경설정하고, TLS 1.2 이상의 프로토콜이 지원되지 않게 설정되어 있다면 지원하도록 설정
- 서비스 목적으로 부득이하게 SSL 3.0를 지원해야 한다면 SSL POODLE ATTACK (CVE-2014-3566) 취약점을 없앨 수 있는 다른 방법(관련 알고리즘 지원 중단 또는 취약점 패치 등)을 벤더사에 문의하여 조치
- TLS POODLE ATTACK(CVE-2014-8730) : 벤더사에 문의하여 취약한 네트워크 장비 또는 웹서버에 해당 취약점을 제거하는 패치를 적용
- 웹 애플리케이션 방화벽의 잘못된 SSL 설정으로 인하여 취약점이 발견될 수도 있으므로, 웹 애플리케이션 방화벽의 설정 또한 확인 필요
O 시큐어 코딩(Secure Coding) 예시
# Apache ▶
- ssl.conf 혹은 httpd-ssl.conf 파일에서 HTTPS 프로토콜과 알고리즘 설정한다.
: 위치 - ($HOME_BASE)/conf/httpd-ssl.conf 환경에 따라 설정 파일의 위치가 달라질 수 있다.
- Apache TLS 조치 예시
# NginX ▶
- nginx.conf 설정 파일에서 프로토콜과 알고리즘을 설정한다.
: 위치 - ($HOME_BASE)/nginx.conf 환경에 따라 설정 파일 위치가 달라질 수 있다
- NginX TLS 조치 예시
# IHS ▶
- httpd-ssl.conf 파일에서 프로토콜과 알고리즘을 설정한다.
: 위치 - ($HOME_BASE)/conf/httpd-ssl.conf 환경에 따라 설정 파일의 위치가 달라질 수 있다.
- IHS TLS 조치 예시
# IIS ▶
- 레지스트리에서 프로토콜을 설정한다. ( 시작 > 실행 > regedit )
: 위치 - 컴퓨터\HKEY_LOCAL_MACHINES\SYSTEM\CurrentControlSet\ControL\SecurityProviders\SCHANNEL\Protocols\
- IIS TLS 조치 예시
: 항목에 없으면 생성
> Protocols > 우 클릭 > 새로 만들기 > 키 > 이름 [SSL 3.0], [TLS 1.0], [TLS 1.1] 설정
> 하위 경로에 동일하게 각각 키 생성 > [Client], [Server]
> 각각 [Client], [Server] 해당 경로 > 우 클릭 > 새로 만들기 > DWORD32비트)
> 값 이름을 [Enabled]로 수정 그리고 좌 클릭 후 값 데이터를 0으로 설정
# Tomcat ▶
- Server.xml 파일에서 프로토콜과 알고리즘을 설정한다.
: 위치 - ($HOME_BASE)/conf/server.xml 환경에 따라 설정 파일 위치가 달라질 수 있다.
- Tomcat TLS 조치 예시
[취약한 HTTPS 암호 알고리즘 이용]▶
O 표준화되지 않은 암호 알고리즘이나 오래된 암호 알고리즘을 사용하는 경우 공격자가 알고리즘을 분석, 해독하여 정보가 유출될 수 있는 취약점
O 근거 자료
☞ 개인정보의 안전성 확보조치 기준 제7조(개인정보의 암호화)
☞ 주요정보통신기반시설 기술적 취약점 분석 평가 상세 가이드(p.727)
☞ OWASP TOP10 2021
O 판단 기준
O 점검 방법
- NMAP, SSLLABS 등의 점검도구로 SSL 스캔
: 취약한 암호 알고리즘(MD5, RC4 등)이 활성화되어 있는지 확인
O 조치 방법
- HTTPS 통신 시 취약한 암호 알고리즘을 사용하지 않도록 설정
: DES 및 3DES를 사용하는 cipher suite 비활성화
: Bulk encryption을 제공하지 않는 cipher suite의 비활성화(eNull, Null이 포함된 cipher suite)
: 112미만의 key size를 사용하는 cipher suite의 비활성화
: MD5를 해싱 매커니즘으로 사용하는 cipher suite의 비활성화
: IDEA 및 RC4를 사용하는 cipher suite의 비활성화
: CBC에 대한 취약성은 TLS V1.2 버전에서 나타나지 않기 때문에 버전 업그레이드 적용
- 웹 애플리케이션 방화벽의 잘못된 SSL 설정으로 인하여 취약점이 발견될 수도 있으므로, 웹 애플리케이션 방화벽의 설정 또한 확인 필요
- 입력 정보 보호가 필요한 입력 지점 (계정 P/W, 계좌 비밀번호, 공인인증서 P/W 등)을 가상 키패드 모듈을 사용하고 가상 키패드를 통해 입력 받은 사용자 정보는 암호화하여 전송
O 시큐어 코딩(Secure Coding) 예시
# Apache ▶
- ssl.conf 혹은 http-ssl.conf 파일에서 HTTPS 프로토콜과 알고리즘 설정한다.
: 위치 - ($HOME_BASE)/conf/httpd-ssl.conf 환경에 따라 설정 파일 위치가 달라질 수 있다.
- Apache 취약한 알고리즘 조치 예시
# NginX ▶
- nginx.conf 설정 파일에서 프로토콜과 알고리즘 설정한다.
: 위치 - ($HOME_BASE)/nginx.conf 환경에 따라 설정 파일 위치가 달라질 수 있다.
- NginX 취약한 알고리즘 조치 예시
# IHS ▶
- httpd-ssl.conf 파일에서 프로토콜과 알고리즘 설정한다.
: 위치 - ($HOME_BASE)/conf/httpd-ssl.conf 환경에 따라 설정 파일 위치가 달라질 수 있다.
- IHS 취약한 알고리즘 조치 예시
# IIS ▶
- 로컬 그룹 정책 편집기에서 알고리즘을 설정한다. (시작 > 실행 > gpedit.msc)
: 위치 - 로컬 컴퓨터 구성 > 컴퓨터 구성 > 관리 템플릿 > 네트워크 > SSL 구성
- IIS 취약한 알고리즘 조치 예시
: SSL 암호 그룹 순서 사용 클릭
: 옵션 > SSL 암호 그룹에 Cipher Suites 값 입력
- IIS - SSL 암호 그룹 Cipher Suites 값
# Tomcat ▶
- Server.xml 파일에서 프로토콜과 알고리즘 설정한다.
: 위치 - ($HOME_BASE)/conf/server.xml 환경에 따라 설정 파일 위치가 달라질 수 있다.
- Tomcat TLS 조치 예시
[취약한 HTTPS 컴포넌트 사용]▶
O 취약한 HTTPS 확장 모듈 사용 시 취약한 버전의 모듈을 사용하는 경우 암호화된 정보가 노출될 수 있는 취약점
O 근거 자료
☞ 개인정보의 안전성 확보조치 기준 제7조(개인정보의 암호화)
☞ 주요정보통신기반시설 기술적 취약점 분석 평가 상세 가이드(p.727)
☞ OWASP TOP10 2021
O 판단 기준
O 점검 방법
- NMAP, SSLLABS 등의 점검도구로 SSL 스캔
: CVE 취약점이 존재하는 버전의 SSL을 쓰고 있는지 확인
O 조치 방법
- OpenSSL 버전을 다음과 같이 취약점 발견 버전 이상의 버전으로 업데이트
# 각 취약점에 대한 안전한 버전
- HeartBleed 취약점 (CVE-2014-0160:Heartbleed)
- CCS Injection 취약점 (CVE-2014-0224)
- OpenSSL 0-Length 취약점 (CVE-2019-1559)
- OpenSSL Padding Oracle 취약점 (CVE-2016-2017)
[취약한 HTTPS 재협상 허용]▶
O 취약한 HTTPS Renegotiation 설정 시 MITM공격에 의하여 암호화된 정보가 노출될 수 있는 취약점
O 근거 자료
☞ 개인정보의 안전성 확보조치 기준 제7조(개인정보의 암호화)
☞ 주요정보통신기반시설 기술적 취약점 분석 평가 상세 가이드(p.727)
☞ OWASP TOP10 2021
O 판단 기준
O 점검 방법
- NMAP, SSLLABS 등의 점검도구로 SSL 스캔
: HTTPS Renegotiation 활성화 여부 확인
O 조치 방법
- 'SSLInsecureRenegotiation'을 'Off'로 설정
: 웹 어플리케이션 방화벽의 잘못된 SSL 설정으로 인하여 취약점이 발견될 수 있으므로 웹 어플리케이션 방화벽의 설정 확인 필요
O 시큐어 코딩(Secure Coding) 예시
# Apache ▶
- Apache(mod_ssl기반), Apache 2.0: 2.0.64 이상(OpenSSL 0.9.8m 이상), Apache 2.2: 2.2.15 이상(OpenSSL 0.9.8m 이상)
- 환경설정파일(httpd.conf 또는 ssl설정파일) 해당 옵션 추가 또는 수정 (virtualhost 구성하여 서비스하는경우 virtualhost 설정안에 포함시킴)
: SSLInsecureRenegotiation off
- 환경파일을 저장하고 apache 재시작
# WebtoB ▶
- 설정파일 내 해당 옵션 추가 또는 수정
: RenegotiationLevel "secure"
: 또는 RenegotiationLevel = disable (디폴트 secure로 설정)
- RenegotiationLevel 값 구분
- 설정파일(.m)을 저장하고 컴파일한 뒤 WebtoB 재시작
# IBM ▶
- 환경설정파일(httpd.conf) 해당 옵션 추가 또는 수정
: 예시) VirtualHost *:443 SSLEnable SSLRenegotiation on
[서버 인증서 무결성 검증(SSL Strip)]▶
O 서버 인증서의 무결성 조건이 위배되어 웹 브라우저에서 안전하지 않은 웹사이트로 경고하여 이용자의 신뢰를 떨어트릴 수 있는 취약점
O 근거 자료
☞ 개인정보의 안전성 확보조치 기준 제7조(개인정보의 암호화)
☞ 주요정보통신기반시설 기술적 취약점 분석 평가 상세 가이드(p.727)
☞ OWASP TOP10 2021
O 판단 기준
O 점검 방법
- NMAP, SSLLABS 등의 점검도구로 SSL 스캔
- CVE 취약점이 존재하는 버전의 SSL을 쓰고 있는지 확인
O 조치 방법
- SSL을 통해 정보를 보호하는 구간에서 HTTP 사용을 방지하고 HTTPS를 강제 사용하도록 설정
- HSTS(HTTP Strict-Transport-Security) 적용
O 시큐어 코딩(Secure Coding) 예시
# Apache ▶
- 헤더 설정
# NginX ▶
- 헤더 설정
# JAVA ▶
- 필터 구현
# WEB.XML ▶
- 필터 구현