HTTP 다운그레이드와 혼합 콘텐츠 위험
공격자가 HTTP 대체 처리를 악용하는 방식과 혼합 콘텐츠가 보안 보장을 무너뜨리는 이유를 이해합니다.
HTTP 다운그레이드와 혼합 콘텐츠 위험은(는) CoddyKit의 무료 Cryptology Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Cryptology Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
HTTP 엄격한 전송 보안
HTTP 엄격한 전송 보안(HSTS) 헤더는 브라우저에 지정된 기간 동안 사이트에 HTTPS로만 연결하도록 지시합니다. 이 헤더를 받으면 브라우저는 HTTP 연결을 거부하고 http:// URL을 https://로 자동 업그레이드합니다.
일반적인 HSTS 헤더는 다음과 같습니다. "Strict-Transport-Security: max-age=31536000; includeSubDomains; preload". max-age는 초 단위이며 31536000은 1년을 의미합니다. 한 번 캐시되면 브라우저는 서버의 추가 관여 없이 1년 동안 HTTPS를 적용합니다.
HSTS max-age와 includeSubDomains
max-age 매개변수는 브라우저가 HTTPS 전용 연결을 적용할 기간을 초 단위로 설정합니다. 운영 사이트에는 최소 1년(31536000)을 권장합니다.
includeSubDomains 지시어는 HSTS 적용 범위를 모든 하위 도메인으로 확장합니다. 이를 통해 공격자가 하위 도메인 연결을 HTTP로 낮추고, 주 도메인에서 Secure 플래그 없이 설정한 쿠키를 훔치는 공격을 방지할 수 있습니다.
HSTS 사전 로드 목록
브라우저에는 처음 방문하는 경우에도 항상 HTTPS만 사용하도록 강제하는 도메인 목록이 하드코딩되어 함께 제공됩니다. hstspreload.org에서 관리하는 이 목록에는 수천 개의 주요 웹사이트가 포함되어 있습니다.
사전 로드를 사용하면 최초 방문 취약점이 제거됩니다. 사전 로드가 없으면 처음 방문한 사용자가 HSTS 헤더를 받기 전에 가로채기를 당할 수 있습니다. 사전 로드된 사이트는 HSTS 캐시 상태와 관계없이 첫 번째 요청부터 HTTPS만 사용합니다.
SSL 스트리핑 공격
2009년 Black Hat에서 Moxie Marlinspike가 발표한 SSL 스트리핑은 HTTPS 연결을 HTTP로 낮추는 MITM 공격입니다. 공격자는 사용자의 최초 HTTP 요청을 가로채고, 사용자를 대신해 실제 서버에 HTTPS 요청을 보낸 다음, 그 내용을 HTTP를 통해 사용자에게 전달합니다.
피해자는 평소처럼 콘텐츠를 보지만 연결은 HTTP입니다. 입력한 자격 증명은 공격자에게 전달됩니다. HSTS가 도입되기 전에는 사용자가 자물쇠 아이콘이 사라진 것을 알아차리지 못했기 때문에 이 공격이 매우 효과적이었습니다.
HSTS가 SSL 스트리핑을 막는 방식
HSTS가 적용된 도메인에 대해 브라우저가 HTTP 연결을 거부하므로 HSTS는 SSL 스트리핑을 막습니다. 공격자가 HTTP로 페이지를 제공하려 해도 브라우저는 연결을 거부하고 오류를 표시합니다.
브라우저의 HSTS 적용은 네트워크 요청이 전혀 발생하기 전에 이루어지므로 공격자가 개입할 수 없습니다. 남아 있는 유일한 취약점은 HSTS를 받기 전의 최초 방문이며, 사전 로드가 이를 제거합니다.
능동적 혼합 콘텐츠와 수동적 혼합 콘텐츠
혼합 콘텐츠는 HTTPS 페이지가 HTTP를 통해 리소스를 불러올 때 발생합니다. 수동적 혼합 콘텐츠에는 HTTP를 통해 불러온 이미지, 오디오, 동영상이 포함됩니다. 이러한 콘텐츠는 페이지를 직접 수정할 수는 없지만 HTTP 헤더를 통해 사용자 정보를 노출하고 추적을 허용할 수 있습니다.
능동적 혼합 콘텐츠에는 HTTP를 통해 불러온 스크립트, 스타일시트, iframe, XMLHttpRequests가 포함됩니다. HTTP 스크립트는 전체 DOM에 접근하고 쿠키와 양식 데이터를 읽을 수 있으므로 HTTPS 페이지의 보안을 완전히 침해할 수 있습니다.
브라우저의 혼합 콘텐츠 스크립트 차단
최신 브라우저는 포함하는 페이지가 HTTPS일 때 능동적 혼합 콘텐츠(HTTP를 통한 스크립트, 스타일시트, iframe)를 기본적으로 차단합니다. 콘솔에 오류가 표시되고 해당 리소스는 로드되지 않습니다.
Chrome 81(2020)부터 브라우저는 수동적 혼합 콘텐츠를 HTTPS로 자동 업그레이드하기 시작했습니다. HTTPS 버전이 있으면 해당 버전이 로드됩니다. 없으면 리소스가 차단됩니다.
브라우저 DevTools의 혼합 콘텐츠
브라우저의 개발자 콘솔에는 혼합 콘텐츠 경고와 오류가 표시됩니다. Chrome에서는 DevTools를 열고 Console 탭으로 이동한 다음 "Mixed Content"로 필터링하세요. 차단된 각 리소스에는 업데이트해야 하는 안전하지 않은 URL이 표시됩니다.
DevTools의 Security 패널에는 인증서 세부 정보, 연결 정보, 페이지의 모든 안전하지 않은 리소스 목록을 포함한 종합적인 보안 개요가 표시됩니다.
upgrade-insecure-requests CSP 지시어
Content Security Policy(CSP)의 "upgrade-insecure-requests" 지시어는 페이지에서 발생하는 모든 HTTP 요청을 HTTPS로 자동 업그레이드하도록 브라우저에 지시합니다. 이를 통해 HTTP URL이 하드코딩된 레거시 콘텐츠를 처리할 수 있습니다.
혼합 콘텐츠를 차단하는 방식과 달리 upgrade-insecure-requests는 먼저 HTTPS 버전을 가져오려고 시도합니다. 레거시 콘텐츠에 포함된 모든 URL을 업데이트하기 어려운 HTTP에서 HTTPS로의 전환 과정에서 유용합니다.
HTTP에서의 ISP 광고 삽입
HTTPS가 없으면 ISP는 HTTP 응답에 콘텐츠를 삽입할 수 있습니다. 여러 ISP가 광고가 없던 웹 페이지에 광고를 삽입하거나, 추적 픽셀을 추가하거나, 사용자가 데이터 한도에 가까워졌을 때 경고 페이지를 삽입한 사실이 적발되었습니다.
HTTPS 페이지에서는 응답이 인증되고 암호화되므로 이러한 형태의 콘텐츠 삽입이 불가능합니다. 수정이 이루어지면 TLS MAC 검증이 실패하여 변경된 콘텐츠가 제공되는 대신 연결 오류가 발생합니다.
최초 HTTP 방문이 여전히 위험한 이유
브라우저가 어떤 도메인의 HSTS 헤더를 아직 확인하지 않은 상태라면, HTTP를 통한 최초 방문은 취약합니다. 공격자는 이 초기 요청을 가로채 브라우저 경고를 일으키지 않고 SSL 스트리핑을 수행할 수 있습니다.
이 "최초 사용 시 신뢰" 취약점 때문에 HSTS 사전 로드 목록이 존재합니다. 사이트를 사전 로드 목록에 제출하면 브라우저가 첫 번째 요청부터 해당 도메인에 HTTPS를 적용하므로 최초 방문의 취약한 시간대를 완전히 제거할 수 있습니다.
HSTS 퀴즈
HTTP 엄격한 전송 보안에 대한 이해도를 확인해 보세요.
핵심 정리: HSTS와 혼합 콘텐츠
HSTS는 지정된 기간 동안 브라우저가 도메인에 HTTPS로만 연결하도록 지시합니다. 사전 로드 목록은 브라우저에 HSTS 정책을 하드코딩하여 최초 방문부터 보호 기능을 확장합니다.
SSL 스트리핑은 HTTPS를 HTTP로 낮추는 공격이며(Moxie Marlinspike, 2009), HSTS가 이를 막습니다. 능동적 혼합 콘텐츠(HTTPS 페이지의 HTTP 스크립트)는 브라우저에서 차단됩니다. upgrade-insecure-requests CSP 지시어는 레거시 콘텐츠의 HTTP에서 HTTPS로의 전환을 자동화합니다.
AI 튜터와 함께 Cryptology Academy을(를) 배우세요 — 무료
브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.
- 코스
- 67
- 레슨
- 261
자주 묻는 질문
“HTTP 다운그레이드와 혼합 콘텐츠 위험” 강의는 무료인가요?
네 — “HTTP 다운그레이드와 혼합 콘텐츠 위험” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Cryptology Academy 강의 전체를 잠금 해제할 수 있습니다. Cryptology Academy 강의에는 총 4개의 강의가 포함되어 있습니다.
“HTTP 다운그레이드와 혼합 콘텐츠 위험”에서 뭘 배우나요?
공격자가 HTTP 대체 처리를 악용하는 방식과 혼합 콘텐츠가 보안 보장을 무너뜨리는 이유를 이해합니다. 브라우저에서 직접 실행하는 실습 코드로 Cryptology Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.
Cryptology Academy을(를) 시작하는 데 경험이 필요한가요?
사전 경험은 필요하지 않습니다. CoddyKit의 Cryptology Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.
“HTTP 다운그레이드와 혼합 콘텐츠 위험” 강의는 얼마나 걸리나요?
대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.
이 Cryptology Academy 강의에서 코드를 작성하고 실행할 수 있나요?
네. 모든 Cryptology Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.
이 강의의 모든 강의
- 자물쇠 아이콘: 실제 의미
- 웹사이트는 SSL 인증서를 어떻게 발급받는가
- TLS 인증서 경고와 대처 방법
- HTTP 다운그레이드와 혼합 콘텐츠 위험