{"id":"CVE-2026-87865","state":"PUBLISHED","title":"knownhost callback mismatches key as missing","description":"When libcurl uses libssh2 with a hashed `known_hosts` file, an unrelated\ninitial entry can cause host key validation to report a key *mismatch* as a\n*missing* key to the `CURLOPT_SSH_KEYFUNCTION` callback.","publishedAt":"2026-10-20T20:15:13.165Z","updatedAt":"2026-10-30T12:08:50.301Z","severity":{"score":7.4,"label":"High","version":"3.1","vector":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N","source":"CISA-ADP"},"assigner":"curl","products":["curl curl"],"affected":[{"vendor":"curl","product":"curl","defaultStatus":"unaffected","versions":[{"version":"8.22.0","status":"affected","lessThanOrEqual":"8.22.0","versionType":"semver"},{"version":"8.21.0","status":"affected","lessThanOrEqual":"8.21.0","versionType":"semver"},{"version":"8.20.0","status":"affected","lessThanOrEqual":"8.20.0","versionType":"semver"},{"version":"8.19.0","status":"affected","lessThanOrEqual":"8.19.0","versionType":"semver"},{"version":"8.18.0","status":"affected","lessThanOrEqual":"8.18.0","versionType":"semver"},{"version":"8.17.0","status":"affected","lessThanOrEqual":"8.17.0","versionType":"semver"},{"version":"8.16.0","status":"affected","lessThanOrEqual":"8.16.0","versionType":"semver"},{"version":"8.15.0","status":"affected","lessThanOrEqual":"8.15.0","versionType":"semver"},{"version":"8.14.1","status":"affected","lessThanOrEqual":"8.14.1","versionType":"semver"},{"version":"8.14.0","status":"affected","lessThanOrEqual":"8.14.0","versionType":"semver"},{"version":"8.13.0","status":"affected","lessThanOrEqual":"8.13.0","versionType":"semver"},{"version":"8.12.1","status":"affected","lessThanOrEqual":"8.12.1","versionType":"semver"},{"version":"8.12.0","status":"affected","lessThanOrEqual":"8.12.0","versionType":"semver"},{"version":"8.11.1","status":"affected","lessThanOrEqual":"8.11.1","versionType":"semver"},{"version":"8.11.0","status":"affected","lessThanOrEqual":"8.11.0","versionType":"semver"},{"version":"8.10.1","status":"affected","lessThanOrEqual":"8.10.1","versionType":"semver"},{"version":"8.10.0","status":"affected","lessThanOrEqual":"8.10.0","versionType":"semver"},{"version":"8.9.1","status":"affected","lessThanOrEqual":"8.9.1","versionType":"semver"},{"version":"8.9.0","status":"affected","lessThanOrEqual":"8.9.0","versionType":"semver"},{"version":"8.8.0","status":"affected","lessThanOrEqual":"8.8.0","versionType":"semver"},{"version":"8.7.1","status":"affected","lessThanOrEqual":"8.7.1","versionType":"semver"},{"version":"8.7.0","status":"affected","lessThanOrEqual":"8.7.0","versionType":"semver"},{"version":"8.6.0","status":"affected","lessThanOrEqual":"8.6.0","versionType":"semver"},{"version":"8.5.0","status":"affected","lessThanOrEqual":"8.5.0","versionType":"semver"},{"version":"8.4.0","status":"affected","lessThanOrEqual":"8.4.0","versionType":"semver"},{"version":"8.3.0","status":"affected","lessThanOrEqual":"8.3.0","versionType":"semver"},{"version":"8.2.1","status":"affected","lessThanOrEqual":"8.2.1","versionType":"semver"},{"version":"8.2.0","status":"affected","lessThanOrEqual":"8.2.0","versionType":"semver"},{"version":"8.1.2","status":"affected","lessThanOrEqual":"8.1.2","versionType":"semver"},{"version":"8.1.1","status":"affected","lessThanOrEqual":"8.1.1","versionType":"semver"},{"version":"8.1.0","status":"affected","lessThanOrEqual":"8.1.0","versionType":"semver"},{"version":"8.0.1","status":"affected","lessThanOrEqual":"8.0.1","versionType":"semver"},{"version":"8.0.0","status":"affected","lessThanOrEqual":"8.0.0","versionType":"semver"},{"version":"7.88.1","status":"affected","lessThanOrEqual":"7.88.1","versionType":"semver"},{"version":"7.88.0","status":"affected","lessThanOrEqual":"7.88.0","versionType":"semver"},{"version":"7.87.0","status":"affected","lessThanOrEqual":"7.87.0","versionType":"semver"},{"version":"7.86.0","status":"affected","lessThanOrEqual":"7.86.0","versionType":"semver"},{"version":"7.85.0","status":"affected","lessThanOrEqual":"7.85.0","versionType":"semver"},{"version":"7.84.0","status":"affected","lessThanOrEqual":"7.84.0","versionType":"semver"},{"version":"7.83.1","status":"affected","lessThanOrEqual":"7.83.1","versionType":"semver"},{"version":"7.83.0","status":"affected","lessThanOrEqual":"7.83.0","versionType":"semver"},{"version":"7.82.0","status":"affected","lessThanOrEqual":"7.82.0","versionType":"semver"},{"version":"7.81.0","status":"affected","lessThanOrEqual":"7.81.0","versionType":"semver"},{"version":"7.80.0","status":"affected","lessThanOrEqual":"7.80.0","versionType":"semver"},{"version":"7.79.1","status":"affected","lessThanOrEqual":"7.79.1","versionType":"semver"},{"version":"7.79.0","status":"affected","lessThanOrEqual":"7.79.0","versionType":"semver"},{"version":"7.78.0","status":"affected","lessThanOrEqual":"7.78.0","versionType":"semver"},{"version":"7.77.0","status":"affected","lessThanOrEqual":"7.77.0","versionType":"semver"},{"version":"7.76.1","status":"affected","lessThanOrEqual":"7.76.1","versionType":"semver"},{"version":"7.76.0","status":"affected","lessThanOrEqual":"7.76.0","versionType":"semver"},{"version":"7.75.0","status":"affected","lessThanOrEqual":"7.75.0","versionType":"semver"},{"version":"7.74.0","status":"affected","lessThanOrEqual":"7.74.0","versionType":"semver"},{"version":"7.73.0","status":"affected","lessThanOrEqual":"7.73.0","versionType":"semver"},{"version":"7.72.0","status":"affected","lessThanOrEqual":"7.72.0","versionType":"semver"},{"version":"7.71.1","status":"affected","lessThanOrEqual":"7.71.1","versionType":"semver"},{"version":"7.71.0","status":"affected","lessThanOrEqual":"7.71.0","versionType":"semver"},{"version":"7.70.0","status":"affected","lessThanOrEqual":"7.70.0","versionType":"semver"},{"version":"7.69.1","status":"affected","lessThanOrEqual":"7.69.1","versionType":"semver"}]}],"references":["https://curl.se/docs/CVE-2026-87865.json","https://curl.se/docs/CVE-2026-87865.html","https://hackerone.com/reports/3975408"],"weaknesses":["CWE-295"],"ingestedAt":"2026-10-30T12:14:06.385Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/87xxx/CVE-2026-87865.json","commit":"f1263ed2dd922de1f0683bcee77f58c4f72aaad0","baselineCommit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-87865","state":"PUBLISHED","datePublished":"2026-10-20T20:15:13.165Z","dateUpdated":"2026-10-30T12:08:50.301Z","assignerShortName":"curl","assignerOrgId":"2499f714-1537-4658-8207-48ae4bb9eae9","dateReserved":"2026-09-09T13:17:41.347Z"},"containers":{"cna":{"title":"knownhost callback mismatches key as missing","descriptions":[{"lang":"en","value":"When libcurl uses libssh2 with a hashed `known_hosts` file, an unrelated\ninitial entry can cause host key validation to report a key *mismatch* as a\n*missing* key to the `CURLOPT_SSH_KEYFUNCTION` callback."}],"affected":[{"vendor":"curl","product":"curl","defaultStatus":"unaffected","versions":[{"version":"8.22.0","status":"affected","lessThanOrEqual":"8.22.0","versionType":"semver"},{"version":"8.21.0","status":"affected","lessThanOrEqual":"8.21.0","versionType":"semver"},{"version":"8.20.0","status":"affected","lessThanOrEqual":"8.20.0","versionType":"semver"},{"version":"8.19.0","status":"affected","lessThanOrEqual":"8.19.0","versionType":"semver"},{"version":"8.18.0","status":"affected","lessThanOrEqual":"8.18.0","versionType":"semver"},{"version":"8.17.0","status":"affected","lessThanOrEqual":"8.17.0","versionType":"semver"},{"version":"8.16.0","status":"affected","lessThanOrEqual":"8.16.0","versionType":"semver"},{"version":"8.15.0","status":"affected","lessThanOrEqual":"8.15.0","versionType":"semver"},{"version":"8.14.1","status":"affected","lessThanOrEqual":"8.14.1","versionType":"semver"},{"version":"8.14.0","status":"affected","lessThanOrEqual":"8.14.0","versionType":"semver"},{"version":"8.13.0","status":"affected","lessThanOrEqual":"8.13.0","versionType":"semver"},{"version":"8.12.1","status":"affected","lessThanOrEqual":"8.12.1","versionType":"semver"},{"version":"8.12.0","status":"affected","lessThanOrEqual":"8.12.0","versionType":"semver"},{"version":"8.11.1","status":"affected","lessThanOrEqual":"8.11.1","versionType":"semver"},{"version":"8.11.0","status":"affected","lessThanOrEqual":"8.11.0","versionType":"semver"},{"version":"8.10.1","status":"affected","lessThanOrEqual":"8.10.1","versionType":"semver"},{"version":"8.10.0","status":"affected","lessThanOrEqual":"8.10.0","versionType":"semver"},{"version":"8.9.1","status":"affected","lessThanOrEqual":"8.9.1","versionType":"semver"},{"version":"8.9.0","status":"affected","lessThanOrEqual":"8.9.0","versionType":"semver"},{"version":"8.8.0","status":"affected","lessThanOrEqual":"8.8.0","versionType":"semver"},{"version":"8.7.1","status":"affected","lessThanOrEqual":"8.7.1","versionType":"semver"},{"version":"8.7.0","status":"affected","lessThanOrEqual":"8.7.0","versionType":"semver"},{"version":"8.6.0","status":"affected","lessThanOrEqual":"8.6.0","versionType":"semver"},{"version":"8.5.0","status":"affected","lessThanOrEqual":"8.5.0","versionType":"semver"},{"version":"8.4.0","status":"affected","lessThanOrEqual":"8.4.0","versionType":"semver"},{"version":"8.3.0","status":"affected","lessThanOrEqual":"8.3.0","versionType":"semver"},{"version":"8.2.1","status":"affected","lessThanOrEqual":"8.2.1","versionType":"semver"},{"version":"8.2.0","status":"affected","lessThanOrEqual":"8.2.0","versionType":"semver"},{"version":"8.1.2","status":"affected","lessThanOrEqual":"8.1.2","versionType":"semver"},{"version":"8.1.1","status":"affected","lessThanOrEqual":"8.1.1","versionType":"semver"},{"version":"8.1.0","status":"affected","lessThanOrEqual":"8.1.0","versionType":"semver"},{"version":"8.0.1","status":"affected","lessThanOrEqual":"8.0.1","versionType":"semver"},{"version":"8.0.0","status":"affected","lessThanOrEqual":"8.0.0","versionType":"semver"},{"version":"7.88.1","status":"affected","lessThanOrEqual":"7.88.1","versionType":"semver"},{"version":"7.88.0","status":"affected","lessThanOrEqual":"7.88.0","versionType":"semver"},{"version":"7.87.0","status":"affected","lessThanOrEqual":"7.87.0","versionType":"semver"},{"version":"7.86.0","status":"affected","lessThanOrEqual":"7.86.0","versionType":"semver"},{"version":"7.85.0","status":"affected","lessThanOrEqual":"7.85.0","versionType":"semver"},{"version":"7.84.0","status":"affected","lessThanOrEqual":"7.84.0","versionType":"semver"},{"version":"7.83.1","status":"affected","lessThanOrEqual":"7.83.1","versionType":"semver"},{"version":"7.83.0","status":"affected","lessThanOrEqual":"7.83.0","versionType":"semver"},{"version":"7.82.0","status":"affected","lessThanOrEqual":"7.82.0","versionType":"semver"},{"version":"7.81.0","status":"affected","lessThanOrEqual":"7.81.0","versionType":"semver"},{"version":"7.80.0","status":"affected","lessThanOrEqual":"7.80.0","versionType":"semver"},{"version":"7.79.1","status":"affected","lessThanOrEqual":"7.79.1","versionType":"semver"},{"version":"7.79.0","status":"affected","lessThanOrEqual":"7.79.0","versionType":"semver"},{"version":"7.78.0","status":"affected","lessThanOrEqual":"7.78.0","versionType":"semver"},{"version":"7.77.0","status":"affected","lessThanOrEqual":"7.77.0","versionType":"semver"},{"version":"7.76.1","status":"affected","lessThanOrEqual":"7.76.1","versionType":"semver"},{"version":"7.76.0","status":"affected","lessThanOrEqual":"7.76.0","versionType":"semver"},{"version":"7.75.0","status":"affected","lessThanOrEqual":"7.75.0","versionType":"semver"},{"version":"7.74.0","status":"affected","lessThanOrEqual":"7.74.0","versionType":"semver"},{"version":"7.73.0","status":"affected","lessThanOrEqual":"7.73.0","versionType":"semver"},{"version":"7.72.0","status":"affected","lessThanOrEqual":"7.72.0","versionType":"semver"},{"version":"7.71.1","status":"affected","lessThanOrEqual":"7.71.1","versionType":"semver"},{"version":"7.71.0","status":"affected","lessThanOrEqual":"7.71.0","versionType":"semver"},{"version":"7.70.0","status":"affected","lessThanOrEqual":"7.70.0","versionType":"semver"},{"version":"7.69.1","status":"affected","lessThanOrEqual":"7.69.1","versionType":"semver"}]}],"references":[{"url":"https://curl.se/docs/CVE-2026-87865.json","name":"json"},{"url":"https://curl.se/docs/CVE-2026-87865.html","name":"www"},{"url":"https://hackerone.com/reports/3975408","name":"issue"}],"problemTypes":[{"descriptions":[{"lang":"en","description":"CWE-295 Improper Certificate Validation"}]}],"providerMetadata":{"shortName":"curl","orgId":"2499f714-1537-4658-8207-48ae4bb9eae9","dateUpdated":"2026-10-20T20:15:13.165Z"},"credits":[{"lang":"en","value":"Bobbeh Rhino","type":"finder"},{"lang":"en","value":"Bobbeh Rhino","type":"remediation developer"}]},"adp":[{"title":"CISA ADP Vulnrichment","references":[{"url":"https://hackerone.com/reports/3975408","tags":["exploit"]}],"metrics":[{"cvssV3_1":{"scope":"UNCHANGED","version":"3.1","baseScore":7.4,"attackVector":"NETWORK","baseSeverity":"HIGH","vectorString":"CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N","integrityImpact":"HIGH","userInteraction":"NONE","attackComplexity":"HIGH","availabilityImpact":"NONE","privilegesRequired":"NONE","confidentialityImpact":"HIGH"}},{"other":{"type":"ssvc","content":{"timestamp":"2026-10-30T12:08:42.701402Z","id":"CVE-2026-87865","options":[{"Exploitation":"poc"},{"Automatable":"no"},{"Technical Impact":"total"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-295","type":"CWE","lang":"en","description":"CWE-295 Improper Certificate Validation"}]}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-10-30T12:08:50.301Z"}}]}}}