반응형

**CORS Misconfiguration(CORS 설정 오류)**를 정리해줄게.


🔥 1. CORS(Cross-Origin Resource Sharing)란?

정의:
CORS는 웹 브라우저가 다른 도메인의 리소스에 접근할 수 있게 허용할지 결정하는 정책이야.
브라우저에서만 강제되고, 서버에서 설정함.

  • 출처(origin) = 프로토콜 + 도메인 + 포트
  • 같은 출처 정책(Same-Origin Policy) 때문에, 기본적으로 다른 도메인 요청은 차단됨
  • 서버가 명시적으로 허용해야 접근 가능

예시:

 
Access-Control-Allow-Origin: https://example.com

🔹 2. CORS Misconfiguration이란?

CORS Misconfiguration은 서버가 CORS 정책을 잘못 설정해서 공격자가 다른 출처에서 민감 데이터에 접근할 수 있는 상황을 말해.

즉:

👉 “서버가 너무 느슨하게 허용하거나, 악성 출처도 허용하는 상태”


🔹 3. 대표적인 잘못된 설정

1️⃣ 모든 출처 허용

 
Access-Control-Allow-Origin: *
  • 인증 쿠키/토큰이 필요한 API는 위험
  • 외부 사이트에서 사용자 데이터 탈취 가능

2️⃣ 동적 허용 잘못 구현

 
origin = request.headers['Origin'] Access-Control-Allow-Origin = origin
  • 검증 없이 모든 Origin 반영 → 공격자 사이트도 허용

3️⃣ 자격 증명(Credentials)과 * 같이 허용

 
Access-Control-Allow-Credentials: true Access-Control-Allow-Origin: *
  • 브라우저가 인증 쿠키/세션까지 공격자 사이트에 전송 → 계정 탈취 가능

4️⃣ 잘못된 허용 도메인

  • *.example.com을 허용하면서 evil.example.com도 포함되는 경우

🔹 4. 공격 시나리오

1️⃣ 사용자 세션 탈취

  • 공격자가 악성 사이트에서 JS를 실행
  • 느슨한 CORS 허용 → victim 사이트 API 호출
  • 쿠키/세션이 공격자에게 노출

2️⃣ 민감 정보 노출

  • API가 JSON으로 반환하는 사용자 정보 접근 가능

3️⃣ 권한 우회

  • 공격자가 자신의 Origin에서 관리자 전용 API 호출 가능

🔹 5. 방어 방법

✔ 1) Origin 화이트리스트만 허용

  • 반드시 신뢰할 수 있는 도메인만 허용

✔ 2) Credentials + Origin * 조합 금지

  • Access-Control-Allow-Origin과 Allow-Credentials: true를 함께 쓰지 않음

✔ 3) 서버에서 인증/권한 확인

  • CORS는 브라우저 정책일 뿐, 서버 측 권한 검증은 필수

✔ 4) 프리플라이트(OPTIONS) 요청 검증

  • 허용되지 않은 메소드/헤더는 차단

✔ 5) 개발 단계 점검

  • OWASP CORS Security Cheat Sheet 참고

🎯 한 문장 요약

CORS Misconfiguration = 서버가 잘못된 출처 허용으로 공격자가 브라우저를 통해 다른 도메인에서 민감 데이터에 접근할 수 있게 되는 취약점

반응형

+ Recent posts