Web Inspector: BackendResourceDataStore for Site Isolation response bodies
ccf6c82
Source/WebKit/WebProcess/Inspector/WebInspectorBackend.messages.in
+ GetResponseBody(String requestId) -> (String body, bool base64Encoded, String errorMessage) Async
Source/WebCore/inspector/InspectorIdentifierRegistry.h
+ std::optional<DeterministicRequestId> parseDeterministicRequestId(const String&);
Source/JavaScriptCore/inspector/protocol/Network.json
- { "name": "getResponseBody", ... }
+ { "name": "getResponseBody", "async": true, ... }
WebKit의 Site Isolation 환경에서 cross-origin iframe은 별도의 WebContent process에서 실행됩니다. Web Inspector의 UIProcess는 ProxyingNetworkAgent를 통해 CDP 방식의 명령을 해당 WebProcess 내 per-frame agent로 전달합니다. 기존의 Network.getResponseBody는 동기 방식으로 동작했으며, NetworkResourcesData 내의 CachedResource 참조에 의존했습니다. 그러나 이 구조는 process 경계를 넘을 수 없었습니다.
이 commit에서는 BackendResourceDataStore가 새로 추가되었습니다. 각 WebProcess에 위치하는 HTTP response 메타데이터 및 content 버퍼로, WebInspectorBackend가 이를 소유합니다. Response 데이터는 instrumentation 시점에 복사되어 CachedResource의 lifetime과 독립적으로 관리됩니다. 또한 Network.getResponseBody가 동기에서 비동기 방식으로 전환되었습니다. ProxyingNetworkAgent는 parseDeterministicRequestId를 통해 frontend에서 제공한 requestId 문자열을 파싱해 대상 WebProcess 식별자를 추출하고, 해당 process에 비동기 GetResponseBody IPC 메시지를 전송하게 됩니다.
Significance
이 commit은 새로운 IPC 경로와 requestId 기반 라우팅 메커니즘을 도입해 Site Isolation process 경계를 넘어 Web Inspector의 접근 범위를 확장합니다. 신뢰 검증 과정에 버그가 존재한다면, inspector frontend가 접근해서는 안 되는 WebProcess의 response body를 탈취할 가능성이 있습니다.
Audit directions
a Aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa Aaaaaaaaaaaaaaaaaaa Aaaa Aaaaaaaa Aaaaaaaaa Aaaaaaaaaa Aaaa Aa Aaaaaaaaaaa Aaa Aaaa Aaa Aaaa a Aaaaaa Aaa Aaaaa Aaaaaaaaaaaaaaa Aaaa Aaa Aaa Aaaa Aaa a Aaaaa Aaa Aaaaaaaaa Aaaaaaaaa Aaaaa a Aa Aaaaaaaaaaa Aaaaaaaaaaaaaaaaaa Aaa Aaaa Aaaaa
a Aaaaaaaaaaaa Aaaaaaaaaaaaaaaaa Aaaaaaaaaa Aaaaaaaaaa Aa Aaaaaaaaaaaa Aaa Aaa Aaaa Aaaa Aaaa Aaaa Aaaaaaaa Aaaaa Aa Aa Aaa Aaaa Aaaaaa Aaa Aaaaaaaaaa Aa Aaaa Aa Aaaaa Aaaaaaaa Aaaaa Aaa a Aaaaa
a Aaaaaaaaaaaaaaaaaaaaaaaaaaaaa Aaa Aaaaaaaaa Aaaaaaaaaaaaaaaa Aaaaaaaaa Aaaaaaaa Aaa Aaa Aa Aaaa Aaaaaaaaaaaaaaa Aaaaaaaaaaaaaaa Aaa Aaa Aaaa Aaaa Aa Aaaa Aaaaaaaaa Aa Aa Aaaaaaaaaaaaaaaaa Aa Aaa Aaaa Aaaaaaaaaa Aaaa Aaa Aa Aa Aaaa Aaaa
a Aaaaaaaa Aaa Aaa Aaaaaaaaaa Aaaaaa Aaaaa Aaaa Aaaaa Aaa Aaaaaaa Aa Aaa Aaaa Aaaa Aaa Aaa Aaa Aaa Aaaaaa
🔒The new IPC routing logic parses frontend-controlled identifiers to target WebProcesses — actionable audit directions are included for this path.
더 확인하려면 구독해 주세요