브라우저 보안 모델은 웹 페이지가 사용자 데이터와 다른 출처의 리소스를 악용하지 못하도록 하는 일련의 메커니즘이다. 동일 출처 정책을 기반으로 CORS, CSP, 샌드박싱 등이 계층화된다.
보안 경계 계층
OS / 하드웨어
└─ 브라우저 프로세스 (권한 있음)
├─ 렌더러 프로세스 (샌드박스, 낮은 권한)
│ ├─ origin A (https://a.com)
│ └─ origin B (https://b.com) ← 분리된 컨텍스트
└─ 플러그인 프로세스
격리 메커니즘:
- Site Isolation: 각 사이트가 별도 프로세스
- Renderer Sandbox: 시스템 콜 제한 (seccomp 등)
- Same-Origin Policy: JS 간 접근 제한
- Content Security Policy: 리소스 로드 제한
Content Security Policy (CSP)
http
# 엄격한 CSP 설정 예시
Content-Security-Policy:
default-src 'none';
script-src 'self' 'nonce-abc123' https://cdn.trusted.com;
style-src 'self' 'unsafe-inline';
img-src 'self' data: https:;
font-src 'self';
connect-src 'self' https://api.mysite.com;
frame-ancestors 'none';
base-uri 'self';
form-action 'self';
upgrade-insecure-requests;
# nonce 방식 (인라인 스크립트 허용 - 권장)
# 서버가 매 요청마다 무작위 nonce 생성
<script nonce="abc123">/* 이 스크립트만 허용 */</script>
# CSP 위반 보고
Content-Security-Policy-Report-Only: ...; report-uri /csp-report
Spectre 취약점과 대응
Spectre 공격:
투기적 실행(Speculative Execution)을 이용해
같은 프로세스의 메모리를 타이밍 공격으로 읽음
브라우저 대응:
1. Site Isolation: 출처별 별도 프로세스
2. SharedArrayBuffer 제한 → COOP/COEP 필요
3. High-resolution Timer 정밀도 낮춤 (5μs → 100μs)
COOP/COEP (교차 출처 격리):
Cross-Origin-Opener-Policy: same-origin
Cross-Origin-Embedder-Policy: require-corp
→ window.crossOriginIsolated = true
→ SharedArrayBuffer, high-res timer 재활성화 가능
관련 문서
- •[same-origin-policy|[동일 출처 정책]]
- •[[cookie-security|쿠키 보안]]
- •[[subresource-integrity|SRI]]