📌 목차
- CORS란 무엇인가?
- CORS Misconfiguration Exploitation의 원리
- 주요 공격 기법
- 보안 위협과 실제 사례
- 방어 방법 및 대응 방안
🔍 CORS란 무엇인가?
CORS(Cross-Origin Resource Sharing)는 웹 브라우저가 다른 도메인의 리소스에 접근할 수 있도록 허용하는 보안 메커니즘이다.
보통 웹 애플리케이션은 **동일 출처 정책(Same-Origin Policy, SOP)**에 의해 다른 도메인의 요청을 차단하지만,
CORS 설정이 적절하지 않으면 공격자가 이를 악용하여 민감한 데이터를 탈취하거나 악성 요청을 수행할 수 있다.
⚙️ CORS Misconfiguration Exploitation의 원리
웹 서버가 잘못된 CORS 정책을 사용하면 공격자는 악성 웹사이트에서 피해자의 데이터를 요청할 수 있음
다음과 같은 경우 취약점이 발생할 수 있다:
- 와일드카드(*) 사용
- 서버가 Access-Control-Allow-Origin: * 설정을 적용하면 모든 도메인에서 접근 가능
- 동적 출처 허용 (Origin Reflection)
- 서버가 요청한 Origin 값을 그대로 Access-Control-Allow-Origin으로 반환하면 공격자의 사이트도 승인됨
- 민감한 데이터가 포함된 응답 허용
- 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
✅ 공격 예시
- 피해자가 공격자의 사이트(evil.com)에 방문
- 공격자가 악성 JavaScript 코드를 실행하여 victim.com의 데이터를 요청
- 서버는 evil.com을 신뢰하여 민감한 데이터 응답
🚨 결과: 공격자가 로그인된 사용자의 정보를 탈취 가능
3️⃣ 허용된 서브도메인 공격
📌 공격 방식
- 서버가 *.victim.com을 허용한 경우, 공격자가 attacker.victim.com을 이용해 공격 가능
✅ 취약한 CORS 설정 예제
Access-Control-Allow-Origin: *.victim.com
✅ 공격 예시
- 공격자가 attacker.victim.com을 등록
- https://api.victim.com에 요청을 보내 사용자 정보를 탈취
🚨 결과: 공격자가 공식 서브도메인을 이용해 보안 정책을 우회 가능
⚠️ 보안 위협과 실제 사례
✅ 보안 위협
- 🛡️ CSRF & 세션 하이재킹: 공격자가 피해자의 세션을 가로채어 민감한 데이터 탈취
- 🎭 API 데이터 탈취: 클라이언트 측 요청을 가로채서 응답을 공격자 서버로 전송
- 🚀 피싱 공격 강화: 악성 사이트에서 사용자의 로그인 정보 접근 가능
✅ 실제 발생 사례
- 2016년 Facebook CORS 취약점 발견
- 공격자가 특정 API 요청을 통해 사용자 이메일과 전화번호 탈취 가능
- 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 #정보보안
'보안' 카테고리의 다른 글
🔓 BOLA 공격(Broken Object Level Authorization): 인증 취약점을 악용한 데이터 탈취 🚨 (0) | 2025.02.20 |
---|---|
🚨 GraphQL 공격: Introspection 쿼리를 이용한 내부 데이터 구조 유출 🔍 (0) | 2025.02.20 |
🛑 Host Header Injection: 서버 측 요청 위조(SSRF) 및 보안 우회 공격 🚨 (0) | 2025.02.19 |
🛑 HTTP Parameter Pollution (HPP): 동일한 요청 파라미터를 활용한 보안 우회 공격 🚨 (0) | 2025.02.19 |
🚨 HTTP Request Smuggling: 서버와 프록시 간 요청 해석 차이를 악용한 보안 공격 🚨 (0) | 2025.02.19 |