SSL Strip/HSTS

강혜인·2025년 5월 29일
0

Security

목록 보기
12/12

HSTS(HTTP Strict Transport Security)

  • 사이트가 오직 HTTPS 통신만 할 수 있음을 접속하고자 하는 Browser에게 알려주는 기능
  • 보안을 강화시킬 목적으로 Browser에게 HTTPS만 사용하도록 강제하는 기능
  • Browser에서도 HSTS 기능을 지원해야 HSTS가 제대로 동작
    → HSTS는 HTTPS를 클라이언트의 브라우저에서 강제화하여 최초 접속 시부터 HTTPS로 접속할 수 있도록 유도하기 위해 만들어짐
    → HTTPS를 이용한 웹사이트를 운영 중이라면 HSTS를 필수로 설정해 운영해야 함
    → SSL Stripping 공격(SSL/TLS Hijacking), cookie hijacking 공격 등을 방지하기 위해 사용
    → HSTS를 지원해도, SSL stripping 공격에 완전히 안전하지는 않음

HSTS 기능 동작

**1. Browser로 접속 시, 주소창에 “https://” 혹은 “http://”와 같은 프로토콜 이름을 입력하지 않고, 도메인(www.xxx.com)만 입력

  1. Browser는 먼저 HTTP(”http://” 사용)로 해당 도메인 접속을 시도함

  2. 도메인 이름만 추출하여, HSTS List와 비교해 존재하면(즉, 도메인 이름에 HSTS가 설정 되어 있다면) HTTPS를 사용해 접속**

4. 해당 도메인이 HTTPS만을 지원하는 HSTS라면, “301 Redirect” or “302 Redirect” response를 보내 사이트가 HTTPS로 다시 접속하라고 지시
→ Browser가 이전에 접속한 적이 없는 HTTPS 지원 사이트에 HTTP로 접속하면, “301 Redirect” Reply Message로 다시 HTTPS로 접속
→ Server는 HTTPS Reply Message에 “HSTS Policy”를 넣어 전송 ⇒ 암호화 되기전 packet인, HTTP response header field에 “Strict-Transport-Security”필드 정보 삽입
→ Browser는 위 정보를 받아 내부 HSTS List 구성
→ Server는 “MAX Age값”, “Subdomain 적용 여부 값”, “Preloaded List에 추가 여부 값”을 HTTP response header field에 담아 “Strict-Transport-Security”함께 client에 전달
→ 만약, Web Browser가 HTTP Protocol로 Web Server에 접속하고, HTTP Reply Message에 HSTS Policy 정보가 들어 있는 경우는 무시

5. 사이트는 status code로 HTTPS로 redirect를 인식한다면, 사용자는 주소창 옆에 있는 자물쇠 아이콘 혹은 접속된 URL 주소 앞에 “http://”를 보고, 해당 사이트가 HTTPS 지원함을 인식

HSTS response header의 Syntax

Strict-Transport-Security: max-age=<expire-time>
Strict-Transport-Security: max-age=<expire-time>; includeSubDomains
Strict-Transport-Security: max-age=<expire-time>; preload
  • Max Age 값

    • HSTS List에 존속하는 시간
    • Age 값이 0(zero)인 경우는 HSTS Policy를 삭제하라는 명령
  • Subdomain 적용 여부 값

    • subdomain에 HSTS를 적용할지 여부를 알려줌
  • Preloaded HSTS Lists

    • 이미 만들어져 있는 HSTS Lists를 Browser에 제공하는 기능도 지원 → “Preloaded HSTS Lists”
    • Preloaded HSTS Lists는 Browser 설치 또는 Update할 때 Browser Vendor에 의해 제공
    • Preloaded HSTS Lists를 사용하는 목적 : SSL Stripping 공격을 방지하기 위한 목적
    • 사이트를 “Preloaded HSTS Lists”에 포함시키려면 “hstspreload.org” 사이트에 신청 → 요구하는 기능 충족 후 양식에 맞춰서 신청하기
      • 사이트가 “Preloaded HSTS Lists”에 포함되어 있는 지 사이트에서 확인 가능
        • HTTP만 지원하는 사이트를 HSTS List에 추가하거나, 공격자에 의해 HTTP를 지원하는 사이트로 Redirect 된 경우, “Your connection is not private” 경고 메시지 출력 → 접속 안됨(X)
          • DNS Spoofing에 의한 Redirection은 IP 주소 자체가 변경되는 경우는 해당 X
    • “HSTS Lists”와 “Preloaded HSTS List”가 각각 존재하는 것이 아닌, 개념상 미리 만들어져 있는 “HSTS Lists”를 “Preloaded HSTS Lists”라고 부르는 것

0개의 댓글