refactor: 문서 개선 중

This commit is contained in:
donghyeon-ka
2026-09-21 14:30:55 +09:00
parent c93cdea150
commit 805a18f486
1497 changed files with 525837 additions and 59152 deletions
@@ -19,7 +19,7 @@ source:
# scriptable 콘텐츠 탐지가 BOM·NUL·주석으로 우회된다
브라우저가 실행할 수 있는 콘텐츠를 탐지하는 정책이 접두사 시작 매칭을 쓴다. 마커 앞에 바이트가 하나라도 있으면 탐지되지 않고, 브라우저는 그런 파일도 실행한다.
scriptable 콘텐츠를 탐지하는 정책이 접두사 시작 매칭을 쓴다. BOM·NUL·주석 같은 prefix를 앞에 두면 detector가 마커를 놓치는 것은 hermetic probe로 확인했다. 실제 대상 브라우저가 각 입력을 실행 가능한 콘텐츠로 해석하는지는 이번 evidence에서 확인하지 않았다.
## 관계
@@ -42,7 +42,7 @@ source:
앞의 1024 바이트를 읽고 그 안에서 마커를 찾는데, 마커가 콘텐츠의 시작에 있어야 한다.
브라우저는 그렇게 엄격하지 않다. 앞에 바이트가 있어도 콘텐츠를 스니핑해 실행한다.
이 probe만으로 실제 브라우저의 스니핑·실행 동작까지 증명할 수는 없다. 확인된 것은 prefix가 붙은 입력이 detector를 우회한다는 사실이다.
그래서 우회가 여럿이다.
@@ -50,7 +50,7 @@ source:
널 바이트를 앞에 넣어도 같다
주석이나 공백을 앞에 두어도 같다
실행 탐침이 이 우회들을 확인했다.
hermetic detector probe가 이 우회 입력들이 탐지를 통과한다는 사실을 확인했다.
시그니처 검사와 스니핑 패턴 검사는 다른 문제다. 시그니처는 파일 형식이 정의상 특정 바이트로 시작하므로 시작 매칭이 맞다. 브라우저 스니핑은 형식 정의가 아니라 관용적 해석이므로 시작 매칭이 맞지 않는다.
@@ -59,7 +59,7 @@ source:
## 검증 환경
OpenJDK : 21.0.12
확인 방식 : 실행 탐침으로 우회 입력 확인
확인 방식 : hermetic detector probe로 탐지 우회 입력 확인
소스 수정 : x
## 재현 조건
@@ -83,15 +83,15 @@ javadoc이 목적을 "Detection is on content, not on the claimed type or the ex
## hermetic probe 가 통과시킨 셋
UTF-8 BOM + `<html>` · 선행 HTML 주석 후 `<script>` · NUL 바이트 후 `<html>`. `String.stripLeading()``Character.isWhitespace`만 제거하므로 BOM(U+FEFF)도 NUL도 지우지 않는다. 셋 다 브라우저는 HTML로 렌더링하고, BOM 접두 HTML은 여러 편집기의 기본 출력이다.
UTF-8 BOM + `<html>` · 선행 HTML 주석 후 `<script>` · NUL 바이트 후 `<html>`. `String.stripLeading()``Character.isWhitespace`만 제거하므로 BOM(U+FEFF)도 NUL도 지우지 않는다. 세 입력 모두 detector를 통과했다. 실제 대상 브라우저가 이 입력을 HTML 또는 scriptable content로 해석하는지는 이번 evidence에서 확인하지 않았다.
## 형제 검증기와의 대비가 판정을 굳힌다
`MediaTypeVerifier`의 매직바이트 선두 매칭은 시그니처의 정의가 파일 선두이므로 옳지만, scriptable 마커는 시그니처가 아니라 브라우저가 스니핑하는 패턴이다.
`MediaTypeVerifier`의 매직바이트 선두 매칭은 시그니처의 정의가 파일 선두이므로 적합하다. 반면 이 scriptable detector는 prefix가 붙은 입력을 놓쳤고, 그 입력을 실제 브라우저가 어떻게 해석하는지는 별도 브라우저 검증이 필요하다.
## 확인하지 못한 것
실제 브라우저가 각 우회 입력을 실행하는지 확인하지 않았다. 브라우저의 스니핑 동작은 명세와 구현이 모두 관여하므로 별도 확인이 필요하다.
실제 대상 브라우저가 각 우회 입력을 실행 가능한 콘텐츠로 해석하는지 확인하지 않았다. 이번 evidence가 증명하는 범위는 detector bypass까지다.
안전 프로파일이 켜진 배포에서의 동작을 확인하지 않았다.