{"id":"CURL-CVE-2026-87865","summary":"knownhost callback mismatches key as missing","details":"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.","aliases":["CVE-2026-87865"],"modified":"2026-10-14T19:02:59.732096580Z","published":"2026-10-14T08:00:00Z","database_specific":{"affects":"both","URL":"https://curl.se/docs/CVE-2026-87865.json","www":"https://curl.se/docs/CVE-2026-87865.html","issue":"https://hackerone.com/reports/3975408","CWE":{"desc":"Improper Certificate Validation","id":"CWE-295"},"last_affected":"8.22.0","severity":"Low","package":"curl"},"affected":[{"ranges":[{"type":"SEMVER","events":[{"introduced":"7.69.1"},{"fixed":"8.14.3"},{"introduced":"8.15.0"},{"fixed":"8.16.2"},{"introduced":"8.17.0"},{"fixed":"8.20.2"},{"introduced":"8.21.0"},{"fixed":"8.23.0"}]},{"type":"GIT","repo":"https://github.com/curl/curl.git","events":[{"introduced":"e96fe70cabcb3a5a009821dbb453dc0160ddc3f5"},{"fixed":"323c184b6bdf5b1988a10c0a61560666e1588149"}]}],"versions":["8.22.0","8.21.0","8.20.0","8.19.0","8.18.0","8.17.0","8.16.0","8.15.0","8.14.1","8.14.0","8.13.0","8.12.1","8.12.0","8.11.1","8.11.0","8.10.1","8.10.0","8.9.1","8.9.0","8.8.0","8.7.1","8.7.0","8.6.0","8.5.0","8.4.0","8.3.0","8.2.1","8.2.0","8.1.2","8.1.1","8.1.0","8.0.1","8.0.0","7.88.1","7.88.0","7.87.0","7.86.0","7.85.0","7.84.0","7.83.1","7.83.0","7.82.0","7.81.0","7.80.0","7.79.1","7.79.0","7.78.0","7.77.0","7.76.1","7.76.0","7.75.0","7.74.0","7.73.0","7.72.0","7.71.1","7.71.0","7.70.0","7.69.1","curl-8_22_0","rc-8_22_0-3","rc-8_22_0-2","rc-8_22_0-1","curl-8_21_0","rc-8_21_0-3","rc-8_21_0-2","rc-8_21_0-1","curl-8_20_0","rc-8_20_0-3","rc-8_20_0-2","rc-8_20_0-1","curl-8_19_0","rc-8_19_0-3","rc-8_19_0-2","rc-8_19_0-1","curl-8_18_0","rc-8_18_0-3","rc-8_18_0-2","rc-8_18_0-1","curl-8_17_0","curl-8_16_0","curl-8_15_0","curl-8_14_1","curl-8_14_0","curl-8_13_0","curl-8_12_1","curl-8_12_0","curl-8_11_1","curl-8_11_0","curl-8_10_1","curl-8_10_0","curl-8_9_1","curl-8_9_0","curl-8_8_0","curl-8_7_1","curl-8_7_0","curl-8_6_0","curl-8_5_0","tiny-curl-8_4_0","curl-8_4_0","curl-8_3_0","curl-8_2_1","curl-8_2_0","curl-8_1_2","curl-8_1_1","curl-8_1_0","curl-8_0_1","curl-8_0_0","curl-7_88_1","curl-7_88_0","curl-7_87_0","curl-7_86_0","curl-7_85_0","curl-7_84_0","curl-7_83_1","curl-7_83_0","curl-7_82_0","curl-7_81_0","curl-7_80_0","curl-7_79_1","curl-7_79_0","curl-7_78_0","curl-7_77_0","curl-7_76_1","curl-7_76_0","curl-7_75_0","curl-7_74_0","curl-7_73_0","tiny-curl-7_72_0","curl-7_72_0","curl-7_71_1","curl-7_71_0","curl-7_70_0","curl-7_69_1"],"database_specific":{"source":"https://curl.se/docs/CURL-CVE-2026-87865.json","vanir_signatures":[{"source":"https://github.com/curl/curl.git/commit/323c184b6bdf5b1988a10c0a61560666e1588149","target":{"file":"lib/vssh/libssh2.c"},"deprecated":false,"digest":{"line_hashes":["5702662798046728584313952421750973160","202534345375092530488621442962458175438","263912510949158082883963750255407488814","205112045761851138696299861521993606695","37685542541009928423447540252806687242","75407180318704451699303769443305508093"],"threshold":0.9},"id":"CURL-CVE-2026-87865-683de849","signature_type":"Line","signature_version":"v1"},{"deprecated":false,"digest":{"function_hash":"50640757737372994581328470495395855929","length":2789},"id":"CURL-CVE-2026-87865-91a95df3","signature_type":"Function","signature_version":"v1","source":"https://github.com/curl/curl.git/commit/323c184b6bdf5b1988a10c0a61560666e1588149","target":{"file":"lib/vssh/libssh2.c","function":"ssh_force_knownhost_key_type"}}],"vanir_signatures_modified":"2026-10-14T19:02:59Z"}}],"schema_version":"1.9.0","credits":[{"name":"Bobbeh Rhino","type":"FINDER"},{"name":"Bobbeh Rhino","type":"REMEDIATION_DEVELOPER"}]}