✓ProveIt
Examples / Report #1048457 Saved analysis

CVE-2020-8286: Inferior OCSP verification

curl · 2020-12-019.2s analysis · $0.009 in model calls

What the report claims

cURL fails to verify that the OCSP response's certificate serial number matches the peer certificate's serial number, allowing validation of revoked certificates.

Compare with curl's recorded outcome

Known vulnerability

A real vulnerability: CVE-2020-8286 Inferior OCSP verification

Shown for comparison after analysis. The pipeline did not see this label.

ProveIt's finding

Needs human review

The available evidence does not settle the report. A maintainer should investigate.

Why this finding?
  • The report describes a plausible and specific OCSP validation flaw with concrete reproduction steps and references to RFC 6960 requirements.
  • However, no curl source code for lib/vtls/openssl.c at revision d6bfbfadd309 was provided in the context, so the central claim (missing serial number check in stapled OCSP response validation) cannot be verified against the implementation.
  • External sources confirm RFC 6960 requires OCSP responses to be tied to specific certificates, but do not address curl's specific implementation.
  • A human reviewer needs to examine the actual OCSP stapling validation code in lib/vtls/openssl.c at the target revision to determine if the serial number check is missing.
What still needs checking
  • The contents of lib/vtls/openssl.c at revision d6bfbfadd309, specifically the OCSP stapling validation logic that processes the stapled OCSP response and verifies it against the peer certificate.
How this analysis ran 5 claims · 0 citations verified

Checked against curl master on 2020-12-01 (d6bfbfadd309). Test evaluation split. Citation verification checks that a referenced line was in the evidence; it does not prove the model interpreted it correctly.

1 · Grounding
grounded
no model · 1 references checked out, 0 did not
2 · Claims
NVIDIA-Nemotron-3-Nano-30B-A3B
5 claims · 1540 tokens · $0.0002
3 · Evidence
0 code snippets
real curl source at d6bfbfadd309 · 3 docs via Tavily
4 · Judgment
Nemotron-3-Ultra-550b-a55b
4858 tokens · 6.4s · $0.0086
5 · Receipts
0 of 0 citations verified
every citation must point at code the judge was shown
Review a draft reply to the reporter

Edit and verify before sending.

Thank you for the detailed report with reproduction steps. To evaluate this, we need to examine the OCSP stapling validation code in lib/vtls/openssl.c at the relevant revision. Could you confirm which function handles the stapled OCSP response verification, or point to the specific lines where the serial number check should occur? The provided context did not include the curl source code for that file.

Inspect all claims and source code 5 claims · 0 code excerpts

Report claims

C1flaw not verifiable

cURL does not check that the certificate serial number in the stapled OCSP response matches the serial number of the certificate it is trying to validate (the peer certificate)

Read the reasoning

The core claim is that cURL does not verify the certificate serial number in the stapled OCSP response matches the peer certificate's serial number. The curl_source section explicitly states '(no curl code could be retrieved for this report)', so the deciding code in lib/vtls/openssl.c is not available for inspection. Without the implementation, I cannot confirm or contradict the missing check.

C2location not verifiable

in /lib/vtls/openssl.c

Read the reasoning

The location claim points to lib/vtls/openssl.c, but since no curl source code was provided for the target revision (d6bfbfadd309), I cannot verify the file exists or contains the relevant OCSP validation logic.

C3trigger not verifiable

when connecting to a site with a revoked certificate and using a stapled OCSP response from a different certificate with the same issuer

Read the reasoning

The trigger describes an attack scenario (revoked certificate + substituted OCSP response from same issuer). Whether this path exists in the code cannot be determined without the OCSP validation implementation.

C4impact not verifiable

cURL succeeds despite the site having a revoked certificate

Read the reasoning

The impact claim depends on C1 being true. Without the code to verify the missing serial number check, the impact cannot be confirmed.

C5reproduction not verifiable

use a site with a revoked certificate (e.g., https://revoked.grc.com) and replace its OCSP response with that of a different site signed by the same issuer (e.g., https://www.grc.com)

Read the reasoning

The reproduction steps are concrete and detailed, but without the curl source code I cannot verify the described code path exists or that the --replace_ocsp test option (which appears to be from the reporter's example program) exercises the actual vulnerability in curl's OCSP stapling validation.

What the report says about other projects

not addressed C1

not addressed C1

not addressed C1

Read the original report

Full report on HackerOne ↗

cURL (in /lib/vtls/openssl.c) does not check that the certificate serial number in the stapled OCSP response matches the serial number of the certificate it is trying to validate (the peer certificate). This results in a passed validity challenge even when connecting to a site that has had its certificate revoked. An example program showing the vulnerability and a suggested patch are included. EXAMPLE: 1. Identify a site with a revoked certificate. (https://revoked.grc.com) 2. Obtain a valid OCSP response for a site signed by the same issuer as the revoked site. (https://www.grc.com). See https://akshayranganath.github.io/OCSP-Validation-With-Openssl/ for a how-to. Use the ocsp option 'respout' to obtain the DER encoded OCSP response. Certificates for www.grc.com are provided. Use the following command to obtain an OCSP response for the example certificates: $ openssl ocsp -issuer grc_chain.pem -cert grc_cert.pem -text -url http://ocsp.digicert.com -respout grc_ocsp_resp.der 3. See the OCSP behavior without replacing the OCSP response: $ ./curl_ocsp_vuln_test https://revoked.grc.com Curl Error: SSL server certificate status verification FAILED Curl correctly fails. 4. See the OCSP behavior when replacing the OCSP response with that from www.grc.com: $ ./curl_ocsp_vuln_test https://revoked.grc.com --replace_ocsp grc_ocsp_resp.der <!DOCTYPE html PUBLIC... The result is that cURL succeeds despite the site having a revoked certificate. ## Impact Certificates are usually revoked because important information, such as the private key, has become known. This could allow an attacker to cause a "validated" connection to an attacker-controlled site by substituting the OCSP response.

Source code

No source code was retrieved for this analysis. The evidence may be incomplete.