CVE-2023-46218: cookie mixed case PSL bypass
What the report claims
libcurl fails to normalize hostname and cookie_domain in psl_is_cookie_domain_acceptable, allowing uppercase domains to bypass PSL checks and set supercookies.
Compare with curl's recorded outcome
Known vulnerability
A real vulnerability: CVE-2023-46218 cookie mixed case PSL bypass
Shown for comparison after analysis. The pipeline did not see this label.
ProveIt's finding
The available evidence does not settle the report. A maintainer should investigate.
Why this finding?
- No curl source code was provided for the target revision (0b6d9ac8d9e1), so the central claim about missing normalization before calling psl_is_cookie_domain_acceptable cannot be verified.
- Deterministic checks confirm the relevant symbols exist but not their usage.
- The libpsl documentation URL cited by the reporter was not fetched; external sources returned unrelated content.
- The report provides concrete reproduction steps and the flaw, if real, would be a security issue (supercookie protection bypass). A human needs to examine the actual curl source at the revision to decide.
What still needs checking
- curl source code showing the call to psl_is_cookie_domain_acceptable and the handling of hostname/cookie_domain parameters at revision 0b6d9ac8d9e1
- The libpsl documentation for psl_is_cookie_domain_acceptable and psl_str_to_utf8lower
How this analysis ran 5 claims · 0 citations verified
Checked against curl master on 2023-10-16 (0b6d9ac8d9e1). Dev evaluation split. Citation verification checks that a referenced line was in the evidence; it does not prove the model interpreted it correctly.
Review a draft reply to the reporter
Edit and verify before sending.
Thank you for the detailed report and reproduction steps. We need to examine the curl source code at the revision you tested (0b6d9ac8d9e1) to verify whether hostname and cookie_domain are normalized before being passed to psl_is_cookie_domain_acceptable. Could you point to the specific file and function where this call occurs, or provide the relevant code snippet? The libpsl documentation you cite was not accessible in our fetch; if you have a copy of the relevant section, that would also help.
Inspect all claims and source code 5 claims · 0 code excerpts
Report claims
libcurl fails to normalize hostname and cookie_domain parameters passed to psl_is_cookie_domain_acceptable
Read the reasoning
No curl source code was provided for the revision checked (0b6d9ac8d9e1). The deterministic checks only confirm that the symbols 'hostname', 'cookie_domain', and 'psl_is_cookie_domain_acceptable' exist in the codebase, but do not show how they are used or whether normalization occurs before the call. Without the calling code, I cannot verify whether libcurl fails to normalize these parameters.
in psl_is_cookie_domain_acceptable function
Read the reasoning
The location claim depends on the same missing code. The function 'psl_is_cookie_domain_acceptable' exists per deterministic checks, but its implementation and call sites were not provided.
malicious site can set a super cookie if the victim requests the url with hostname with any upper case characters in the domain part of the hostname
Read the reasoning
The trigger claim describes an attack path that depends on the missing normalization. Without seeing the code that calls psl_is_cookie_domain_acceptable and handles the cookie domain, I cannot confirm or contradict the described bypass.
bypassing supercookie protection
Read the reasoning
Impact claim depends on the validity of C1-C3. If the bypass exists, the impact (bypassing supercookie protection) would follow, but the root cause is not verifiable from provided materials.
echo -ne "HTTP/1.1 200 OK\r\nSet-Cookie: super=oops; domain=co.UK\r\nContent-Length: 0\r\n" | nc -v -l -q 1 -p 8888; curl -v -c c.txt --resolve test.co.uk:8888:testserverip http://test.co.UK:8888; nc -v -l -p 7777; curl -v -b c.txt --resolve other.co.uk:7777:testserverip http://other.co.uk:7777
Read the reasoning
Reproduction steps are provided but cannot be validated against the code because the relevant curl source code is missing. The steps reference 'nc' and 'curl' command-line tools, not curl source code.
What the report says about other projects
not addressed Use helper function psl_str_to_utf8lower() for normalization of hostname and cookie_domain
Read the original report
Source code
No source code was retrieved for this analysis. The evidence may be incomplete.