스킬캠퍼스
8강 · 브라우저 샌드박스
강의

오늘 끝나면

브라우저 샌드박스

  • 브라우저 샌드박스의 핵심 문제를 한 문장으로 설명한다
  • 오른쪽 실습에서 브라우저이 어떻게 움직이는지 관찰한다
  • 다음 강의와 이어지는 한계를 말할 수 있다

실습 미션

격리는 어떻게 만들고, 어떻게 새나 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.

성공 조건

  • 실습의 기본값을 먼저 관찰
  • 입력값이나 모드를 한 번 이상 바꿔 결과 비교
  • 왜 결과가 바뀌었는지 한 문장으로 설명

화이트해킹 · 08

브라우저
샌드박스

브라우저는 사이트 하나하나를 모래상자에 가둠.
한 사이트가 OS도 · 옆 사이트도 못 건드림.
이 벽이 뚫리는 게 가장 무서운 버그임.

P.01화이트해킹 · 08

사이트마다 모래상자에 가둠

브라우저는 아무 사이트나 코드를 실행함. 그런데 안전함. 이유는 격리임.

내가 연 페이지의 자바스크립트는 모래상자(샌드박스) 안에서만 돔.
파일 시스템도 · 다른 프로그램도 · 옆 탭의 은행 페이지도 직접 못 건드림.

모래상자 안에서 뭘 하든 밖으로는 안 샘.
그래서 처음 보는 사이트를 눌러도 노트북이 안 털림.
격리가 기본값이라 위험한 코드도 갇혀 있음.

탭 하나 = 격리된 모래상자 하나
한 브라우저 · 격리된 모래상자들
bank.com샌드박스 1
코드는 이 안에서만 돔
news.com샌드박스 2
코드는 이 안에서만 돔
evil.com샌드박스 3
코드는 이 안에서만 돔
OS · 파일 · 다른 탭접근 차단

벽을 넘는 화살표가 없음 — 그게 격리임

P.02화이트해킹 · 08

출처 = 스킴 · 호스트 · 포트

격리의 기준은 출처(origin)임. 출처가 같으면 한 식구, 다르면 남임.

출처는 세 칸으로 정해짐.
스킴(https) · 호스트(bank.com) · 포트(443).
이 셋이 전부 같아야 같은 출처임.

http로만 바꿔도 다른 출처임.
포트 하나만 달라도 남임. api.bank.com도 호스트가 달라 남임.
글자 하나 차이로 식구냐 남이냐가 갈림.

세 칸이 다 같아야 같은 출처
같은 출처 vs 다른 출처
같음https://bank.com:443
같음https://bank.com:443/pay
다름http://bank.com:443
다름https://evil.com:443
다름https://bank.com:8080
스킴·호스트·포트 셋 다 같아야 같은 출처
P.03화이트해킹 · 08

동일출처정책 — 직접 해봄

동일출처정책(SOP)은 한 줄임. 다른 출처는 내 데이터를 못 읽음.

오른쪽에서 직접 해봄.
내 사이트는 https://bank.com:443로 고정임.
접근하려는 사이트의 스킴·호스트·포트를 바꿔 가며 허용/차단을 봄.

세 칸이 다 같으면 허용.
하나라도 다르면 차단.
그래서 evil.com이 내 로그인 세션을 못 읽음 / 이게 SOP가 매일 막는 일임.

같은 출처 허용 · 다른 출처 차단
동일출처정책 · 데이터 읽기 시도
내 사이트 — 보호 대상

https://bank.com:443

접근하려는 사이트 — 바꿔 보셈
스킴
호스트
포트
출처 = 스킴 · 호스트 · 포트
스킴https = https같음
호스트evil.com bank.com다름
포트443 = 443같음
판정 — 내 데이터를 읽을 수 있나
차단다른 출처 — 브라우저가 막음

하나라도 다르면 다른 출처임. evil.com이 bank.com 데이터를 못 읽는 이유가 이거임.

P.04화이트해킹 · 08

격리가 막아주는 것

이 벽이 없다고 상상해 봄. 광고 한 줄이 띄운 스크립트가 내 은행 탭을 읽음.

SOP가 막는 건 구체적임.
다른 출처가 내 페이지의 쿠키·로컬스토리지를 읽는 것.
다른 출처가 내 응답 본문을 몰래 가져가는 것.
다른 출처가 내 페이지 안(iframe)을 들여다보는 것.

방어 관점에선 이게 공짜 방어선임 / 브라우저가 기본으로 깔아줌.
개발자는 필요할 때만 CORS로 문을 콕 집어 엶 / 함부로 다 열면 SOP를 스스로 무너뜨리는 셈임.

벽이 없으면 벌어지는 일
SOP가 차단하는 행동

쿠키 · 로컬스토리지 읽기

다른 출처 스크립트

응답 본문 가로채기

다른 출처 fetch

iframe 안 들여다보기

끼워 넣은 남의 페이지

필요한 문만 CORS로 콕 집어 엶
P.05화이트해킹 · 08

샌드박스 탈출 = 최상위 심각도

그럼 공격자는 뭘 노리나? 모래상자 자체를 깨는 것 / 샌드박스 탈출임.

탈출이 되면 웹페이지 코드가 모래상자 밖 OS로 나감.
파일을 읽고 · 프로그램을 깔고 · 카메라를 켬.
그냥 한 페이지가 뚫린 게 아니라 기기 전체가 뚫림.

그래서 샌드박스 탈출 버그는 값이 가장 비쌈 / 패치도 가장 급함.
방어는 단순함 — 브라우저를 최신으로 유지하는 것. 격리는 패치로 계속 메워지는 벽임.

Q. 동일출처정책(SOP)이 막는 것은? (내 코드가 내 데이터 읽기 · 다른 출처가 내 데이터 읽기 · 페이지 새로고침 · 이미지 표시)정답은 다른 출처 사이트가 내 데이터를 읽는 것임.
내 코드가 내 데이터를 읽는 건 같은 출처라 당연히 허용임.
새로고침·이미지 표시는 격리와 무관함.
SOP의 핵심은 한 줄 — 남의 출처는 내 데이터에 손 못 댐.
모래상자를 깨고 밖으로
정상 vs 샌드박스 탈출
정상
웹 코드
↓ 막힘
OS
탈출 버그
웹 코드
↓ 뚫림
OS 전체 장악
방어 = 브라우저 최신 유지로 벽 메우기

3줄 요약

  1. 1격리는 어떻게 만들고, 어떻게 새나
  2. 2브라우저 샌드박스은 기초·정찰 → 웹 취약점 → 시스템 침투 → 네트워크·IoT → 레드팀·AI 흐름 안의 한 칸이다.
  3. 3개념을 외우는 것보다 입력을 바꾸면 무엇이 달라지는지 보는 것이 우선이다.

완료 전 점검

복습 카드

브라우저

격리는 어떻게 만들고, 어떻게 새나

취약점

공격에 악용될 수 있는 시스템의 약점

익스플로잇

취약점을 실제로 이용하는 코드나 기법