HTTP Cache Poisoning Attack (HTTP CC 공격)은 웹 애플리케이션의 캐시 시스템을 악용하여 사용자에게 보이는 페이지를 조작하거나 변조하는 공격입니다. 이 공격은 주로 캐시 제어 헤더를 잘못 구성한 웹 서버에서 발생할 수 있습니다.
HTTP CC 공격은 일반적으로 다음과 같은 과정을 거칩니다:
캐시 메커니즘 이해: 웹 서버는 자주 요청되는 페이지의 복사본을 캐시에 저장하여 다음 요청에서 빠르게 제공할 수 있습니다. 이를 통해 성능이 향상되지만, 적절한 제어 없이 캐시된 데이터가 변경되거나 조작될 수 있는 위험이 있습니다.
캐시 제어 헤더 조작: 공격자는 적절하지 않은 캐시 제어 헤더를 이용해 서버가 캐시하는 동작을 조작합니다. 예를 들어, 캐시 무효화나 캐시 독점을 위해 "Cache-Control" 헤더의 값을 조작할 수 있습니다.
캐시 무효화: 공격자는 원하는 페이지의 캐시를 무효화하도록 서버를 속여 유도합니다. 이를 통해 공격자는 원래 페이지가 아닌 조작된 페이지를 다시 요청할 때 서버가 새로운 조작된 내용을 제공하도록 만듭니다.
캐시 독점: 공격자는 특정 사용자 또는 그룹에게만 표시되는 페이지를 조작하여 악의적인 스크립트나 부적절한 콘텐츠를 제공할 수 있습니다. 예를 들어, 공격자는 쿼리 문자열을 조작하여 웹 애플리케이션이 서버에 캐시할 때 다른 사용자에게는 보이지 않는 악성 코드를 포함한 페이지를 제공할 수 있습니다.
HTTP CC 공격으로부터 보호하기 위한 몇 가지 방어 전략은 다음과 같습니다:
적절한 캐시 제어 헤더 사용: Cache-Control 헤더를 적절히 구성하여 캐시 동작을 제어합니다. 예를 들어, 중요한 페이지에 대해 "no-store"이나 "no-cache" 지시자를 사용하여 캐시를 비활성화할 수 있습니다.
입력 검증 및 통제: 사용자 입력을 적절히 검증하고 이를 처리하기 전에 인증하고 승인해야 합니다. 이는 공격자가 쿼리 문자열 등을 조작하여 캐시를 독점하는 것을 방지하는 데 도움이 됩니다.
보안 헤더 사용: Content-Security-Policy (CSP)와 같은 보안 헤더를 사용하여 스크립트 실행 및 리소스 로드에 대한 정책을 강화할 수 있습니다.
모니터링 및 로깅: 적절한 모니터링 도구를 사용하여 캐시 이상 징후를 식별하고 공격 시도를 탐지할 수 있습니다.
HTTP CC 공격은 웹 보안에서 중요한 문제이며, 적절한 예방 조치와 보안 정책을 갖추는 것이 필요합니다.