The vulnerability is a Server-Side Request Forgery (SSRF) in the browser navigation feature, exploitable via DNS rebinding. The core of the issue lies in a time-of-check, time-of-use (TOCTOU) flaw where the application validates a URL in the Node.js environment, but the actual navigation occurs within the browser's separate network stack. An attacker could use a malicious DNS server to respond with a safe IP address during the initial check and then provide a private, internal IP address when the browser makes its request, thus bypassing the SSRF policy.
The patch addresses this by fundamentally changing the validation logic in the assertBrowserNavigationAllowed and assertBrowserNavigationResultAllowed functions located in extensions/browser/src/browser/navigation-guard.ts. The fix enforces a stricter policy: when a restrictive SSRF policy is active, navigation to URLs with hostnames is blocked by default. Navigation is only permitted if the URL uses an IP literal or if the hostname is explicitly listed on an allowlist. This prevents the browser from performing a second, potentially malicious, DNS lookup, thereby mitigating the DNS rebinding attack.
The vulnerable functions identified, assertBrowserNavigationAllowed and assertBrowserNavigationResultAllowed, are central to this flawed process. They were responsible for processing and validating user-supplied URLs for browser navigation and were the entry point for the vulnerability. The function assertCdpEndpointAllowed was also identified as it was removed during the fix, indicating it was part of the vulnerable logic for validating CDP endpoints.