navigator.sendBeacon / fetch exfiltration
iframe 자기 origin 안에서 수집한 정보를 attacker 서버로 송신.
sandbox 정책별 동작
| 정책 | 예상 결과 |
|---|---|
| sandbox 미부착 | 동작함 |
sandbox="allow-scripts" | 동작함 |
sandbox="" (가장 엄격) | 차단됨 |
임베드 스니펫
이 코드는 임베드 전용 페이지를 사용합니다. 본인 서비스에 그대로 붙여 넣고 렌더링/차단 여부를 확인하세요.
<iframe src="https://xss-playground.com/embed/beacon-exfil?lang=ko" title="XSS Playground - navigator.sendBeacon / fetch exfiltration" width="600" height="420" loading="lazy" referrerpolicy="strict-origin-when-cross-origin"></iframe>
실행
document.referrer
-navigator.userAgent
-// 로그 없음
해설
- iframe 안에서 일어난 클릭/키 입력은 자기 origin 이라 자유롭게 수집할 수 있습니다. iframe 위에 가짜 입력 필드를 두면 사용자가 거기 친 비밀번호 그대로 attacker 서버로 보낼 수 있습니다.
document.referrer로 부모 페이지 URL 의 origin / path 까지 확인 가능합니다 (Referrer-Policy 에 따라 다름). 어떤 문서, 게시글, 대시보드에 임베드됐는지 추적할 수 있습니다.- 이 공격은 진짜 데이터 탈취에 가장 가깝습니다. 대응은 sandbox 빈 값으로 JS 자체를 막거나 호스트 allowlist 로 신뢰 도메인만 허용하는 것.