CVE-2026-87865: knownhost callback mismatches key as missing
What the report claims
A mismatched SSH known_hosts entry causes libcurl to treat a missing key as missing instead of mismatched, allowing a hostile server to bypass host verification and authenticate.
Compare with curl's recorded outcome
Known vulnerability
A real vulnerability: CVE-2026-87865 knownhost callback mismatches key as missing
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 for lib/vssh/libssh2.c was provided in the context, making all code-dependent claims not_verifiable
- Deterministic check contradicts the reported line 653 content at the cited revision
- External sources fetched (CVE-2019-3856, CVE-2019-3857) are unrelated to the claimed CVE-2026-9547
- Report is detailed with reproduction steps and specific code references, so a human with access to the repository can investigate
What still needs checking
- The actual source code of lib/vssh/libssh2.c at revision 68720b483728, particularly lines 650-700
- The libssh2 advisory for CVE-2026-9547 (not the 2019 CVEs that were fetched)
How this analysis ran 6 claims · 0 citations verified
Checked against curl permalink 68720b483728 (68720b483728). Test 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. The provided context did not include the lib/vssh/libssh2.c source code at the cited revision, and the deterministic check shows line 653 differs from your description. Could you confirm the exact line numbers in the current master branch, or provide the relevant code snippet? Also, the fetched libssh2 advisories cover 2019 CVEs, not CVE-2026-9547 — do you have a link to that advisory?
Inspect all claims and source code 6 claims · 0 code excerpts
Report claims
curl treats the first hashed entry whose public name is NULL as the destination and forces that entry's key algorithm without checking its hostname hash
Read the reasoning
The curl source code for lib/vssh/libssh2.c was not provided in the context. The deterministic check shows the file exists at the revision but line 653 reads 'while(!libssh2_knownhost_get(sshc->kh, &store, store)) {' which does not match the callback handling logic described in the claim. Without the actual code around lines 653-687, the claim cannot be verified.
lib/vssh/libssh2.c lines 653-687
Read the reasoning
The deterministic check explicitly states that at the cited revision and line 653, the code does not match what the report describes. The report claims lines 653-687 contain the CURLOPT_SSH_KEYFUNCTION callback logic, but the actual line 653 shows a knownhost iteration loop.
an unrelated hashed RSA entry before the target's hashed Ed25519 entry
Read the reasoning
Trigger condition depends on the code structure described in C1, which cannot be verified without the source code.
a hostile RSA server negotiates successfully; libssh2 then filters out the Ed25519 pin and curl passes NOTFOUND to the callback as MISSING
Read the reasoning
Impact claim depends on the code behavior in C1 and C3, which cannot be verified without the source code.
run python3 poc.py --build-dir /absolute/path/to/build --output run.json
Read the reasoning
Reproduction steps are provided but cannot be validated without examining the actual code path they exercise.
the callback receives MISSING, the hostile server receives the password canary, and libcurl returns ATTACKER_SFTP_BODY
Read the reasoning
Detailed impact claim depends on the vulnerability existing, which cannot be verified without the source code.
Deterministic checks that failed
- line none of CURLOPT_SSH_KEYFUNCTION, CURLKHMATCH_MISSING, CURLKHMATCH_MISMATCH, json appear near line 653 at 68720b483728; it reads: 'while(!libssh2_knownhost_get(sshc->kh, &store, store)) {'
What the report says about other projects
not addressed CVE-2026-9547 advisory says libssh2 is unaffected
Read the original report
Source code
No source code was retrieved for this analysis. The evidence may be incomplete.