본문 바로가기
보안

🚨 CORS Misconfiguration Exploitation: 취약한 CORS 설정을 악용한 데이터 탈취 공격 🔓

by IT 분석가 2025. 2. 20.
반응형

취약한 CORS 설정 악용

 

📌 목차

  1. CORS란 무엇인가?
  2. CORS Misconfiguration Exploitation의 원리
  3. 주요 공격 기법
  4. 보안 위협과 실제 사례
  5. 방어 방법 및 대응 방안

🔍 CORS란 무엇인가?

CORS(Cross-Origin Resource Sharing)웹 브라우저가 다른 도메인의 리소스에 접근할 수 있도록 허용하는 보안 메커니즘이다.
보통 웹 애플리케이션은 **동일 출처 정책(Same-Origin Policy, SOP)**에 의해 다른 도메인의 요청을 차단하지만,
CORS 설정이 적절하지 않으면 공격자가 이를 악용하여 민감한 데이터를 탈취하거나 악성 요청을 수행할 수 있다.


⚙️ CORS Misconfiguration Exploitation의 원리

웹 서버가 잘못된 CORS 정책을 사용하면 공격자는 악성 웹사이트에서 피해자의 데이터를 요청할 수 있음
다음과 같은 경우 취약점이 발생할 수 있다:

  1. 와일드카드(*) 사용
    • 서버가 Access-Control-Allow-Origin: * 설정을 적용하면 모든 도메인에서 접근 가능
  2. 동적 출처 허용 (Origin Reflection)
    • 서버가 요청한 Origin 값을 그대로 Access-Control-Allow-Origin으로 반환하면 공격자의 사이트도 승인됨
  3. 민감한 데이터가 포함된 응답 허용
    • Access-Control-Allow-Credentials: true와 함께 취약한 CORS 설정이 적용되면 쿠키 및 인증 정보가 포함된 요청 가능

🚨 주요 공격 기법

1️⃣ 와일드카드(*) 허용으로 인한 공격

📌 공격 방식

  • 서버가 Access-Control-Allow-Origin: *을 설정한 경우, 공격자는 임의의 사이트에서 요청 가능

취약한 CORS 응답 예제

HTTP/1.1 200 OK  
Access-Control-Allow-Origin: *
 

 

공격 예시 (공격자가 실행하는 코드)

fetch("https://victim.com/api/userinfo", {
    method: "GET",
    credentials: "include"
})
.then(response => response.text())
.then(data => console.log(data));  // 사용자 데이터가 공격자에게 전송됨
 

🚨 결과: 공격자는 피해자의 인증 정보를 이용하여 민감한 데이터를 가져올 수 있음


2️⃣ Origin Reflection을 이용한 공격

📌 공격 방식

  • 서버가 요청의 Origin 값을 그대로 반영하여 응답하는 경우 발생

취약한 CORS 응답 예제

HTTP/1.1 200 OK  
Access-Control-Allow-Origin: https://evil.com  
Access-Control-Allow-Credentials: true​
 

공격 예시

  1. 피해자가 공격자의 사이트(evil.com)에 방문
  2. 공격자가 악성 JavaScript 코드를 실행하여 victim.com의 데이터를 요청
  3. 서버는 evil.com을 신뢰하여 민감한 데이터 응답

🚨 결과: 공격자가 로그인된 사용자의 정보를 탈취 가능


3️⃣ 허용된 서브도메인 공격

📌 공격 방식

  • 서버가 *.victim.com을 허용한 경우, 공격자가 attacker.victim.com을 이용해 공격 가능

취약한 CORS 설정 예제

Access-Control-Allow-Origin: *.victim.com
 

공격 예시

  1. 공격자가 attacker.victim.com을 등록
  2. https://api.victim.com에 요청을 보내 사용자 정보를 탈취

🚨 결과: 공격자가 공식 서브도메인을 이용해 보안 정책을 우회 가능


⚠️ 보안 위협과 실제 사례

보안 위협

  • 🛡️ CSRF & 세션 하이재킹: 공격자가 피해자의 세션을 가로채어 민감한 데이터 탈취
  • 🎭 API 데이터 탈취: 클라이언트 측 요청을 가로채서 응답을 공격자 서버로 전송
  • 🚀 피싱 공격 강화: 악성 사이트에서 사용자의 로그인 정보 접근 가능

실제 발생 사례

  1. 2016년 Facebook CORS 취약점 발견
    • 공격자가 특정 API 요청을 통해 사용자 이메일과 전화번호 탈취 가능
  2. 2019년 금융 기관 API에서 CORS 설정 오류 발견
    • 특정 Origin이 허용되면서 공격자가 사용자의 계좌 정보 접근 가능

🔐 방어 방법 및 대응 방안

1. 와일드카드(*) 사용 금지

  • 민감한 데이터가 포함된 요청에는 Access-Control-Allow-Origin: *을 사용하지 말 것

2. 신뢰할 수 있는 Origin만 허용

  • 예제 (Nginx 설정):
if ($http_origin ~* "^https://(www\.trusteddomain\.com|api\.trusteddomain\.com)$") {
    add_header Access-Control-Allow-Origin "$http_origin";
}

 

3. Access-Control-Allow-Credentials: true 설정 주의

  • 세션 기반 요청에서는 신뢰할 수 있는 Origin만 허용

4. CORS 설정 점검 도구 활용

  • Burp Suite, CORS Scanner 등의 도구로 취약점 점검

5. 웹 애플리케이션 방화벽(WAF) 적용

  • 비정상적인 CORS 요청을 감지하고 차단

6. 정기적인 보안 테스트 수행

  • OWASP ZAP, Google Lighthouse 등을 이용하여 취약점 검사

📌 해시태그
#CORS #웹보안 #데이터탈취 #보안취약점 #XSS #API보안 #SameOriginPolicy #정보보안

반응형