부모의 message 리스너 fingerprinting
여러 postMessage payload 를 부모에게 보내 응답이나 사이드 이펙트로 리스너 존재를 관찰한다.
sandbox 정책별 동작
| 정책 | 예상 결과 |
|---|---|
| sandbox 미부착 | 동작함 |
sandbox="allow-scripts" | 동작함 |
sandbox="" (가장 엄격) | 차단됨 |
임베드 스니펫
이 코드는 임베드 전용 페이지를 사용합니다. 본인 서비스에 그대로 붙여 넣고 렌더링/차단 여부를 확인하세요.
<iframe src="https://xss-playground.com/embed/parent-message-listener-probe?lang=ko" title="XSS Playground - 부모의 message 리스너 fingerprinting" width="600" height="420" loading="lazy" referrerpolicy="strict-origin-when-cross-origin"></iframe>
실행
target origin
// 로그 없음
부모로부터 받은 응답
// 응답 없음
해설
- 부모 페이지가 어떤 message listener 를 갖고 있는지 직접 읽을 수는 없지만, 다양한 payload 를 던진 뒤 응답이나 화면 변화, 라우팅 변화를 관찰할 수 있습니다.
- 리스너가 origin 검증 없이 라우팅, 인증, resize, close 같은 동작을 수행하면 iframe 이 부모 동작을 유도할 수 있습니다.
- 대응은 origin allowlist, message schema 검증, 예상하지 않은 message 무시, 그리고 민감한 동작의 사용자 확인입니다.