{"id":"CVE-2026-9547","state":"PUBLISHED","title":"SSH improper host validation","description":"When a libcurl-based application performs transfers via `SCP://` or `SFTP://`\nand utilizes the `CURLOPT_SSH_KEYFUNCTION` callback, it may silently accept an\nuntrusted server. This vulnerability occurs when a server presents a host key\ntype that does not match the specific key type already recorded for that host\nin the `known_hosts` file. Instead of rejecting the mismatch, the callback\nmechanism fails to properly enforce the restriction, allowing the connection\nto succeed without warning and risking a potential man-in-the-middle attack.","publishedAt":"2026-07-03T06:18:44.499Z","updatedAt":"2026-09-15T06:03:34.802Z","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":"7.69.0","status":"affected","lessThan":"8.14.2","versionType":"semver"},{"version":"8.15.0","status":"affected","lessThan":"8.16.1","versionType":"semver"},{"version":"8.17.0","status":"affected","lessThan":"8.20.1","versionType":"semver"}]},{"vendor":"curl","product":"curl","defaultStatus":"unaffected","versions":[{"version":"507cf6a13db0375eadd4655b4c64710db29e9cf2","status":"affected","lessThan":"0b8dbbc63c98777e4584cb9fbd71df3464008ad1","versionType":"git"}],"repo":"https://github.com/curl/curl.git"},{"vendor":"curl","product":"curl","defaultStatus":"unaffected","versions":[{"version":"8.20.0","status":"affected"},{"version":"8.19.0","status":"affected"},{"version":"8.18.0","status":"affected"},{"version":"8.17.0","status":"affected"},{"version":"8.16.0","status":"affected"},{"version":"8.15.0","status":"affected"},{"version":"8.14.1","status":"affected"},{"version":"8.14.0","status":"affected"},{"version":"8.13.0","status":"affected"},{"version":"8.12.1","status":"affected"},{"version":"8.12.0","status":"affected"},{"version":"8.11.1","status":"affected"},{"version":"8.11.0","status":"affected"},{"version":"8.10.1","status":"affected"},{"version":"8.10.0","status":"affected"},{"version":"8.9.1","status":"affected"},{"version":"8.9.0","status":"affected"},{"version":"8.8.0","status":"affected"},{"version":"8.7.1","status":"affected"},{"version":"8.7.0","status":"affected"},{"version":"8.6.0","status":"affected"},{"version":"8.5.0","status":"affected"},{"version":"8.4.0","status":"affected"},{"version":"8.3.0","status":"affected"},{"version":"8.2.1","status":"affected"},{"version":"8.2.0","status":"affected"},{"version":"8.1.2","status":"affected"},{"version":"8.1.1","status":"affected"},{"version":"8.1.0","status":"affected"},{"version":"8.0.1","status":"affected"},{"version":"8.0.0","status":"affected"},{"version":"7.88.1","status":"affected"},{"version":"7.88.0","status":"affected"},{"version":"7.87.0","status":"affected"},{"version":"7.86.0","status":"affected"},{"version":"7.85.0","status":"affected"},{"version":"7.84.0","status":"affected"},{"version":"7.83.1","status":"affected"},{"version":"7.83.0","status":"affected"},{"version":"7.82.0","status":"affected"},{"version":"7.81.0","status":"affected"},{"version":"7.80.0","status":"affected"},{"version":"7.79.1","status":"affected"},{"version":"7.79.0","status":"affected"},{"version":"7.78.0","status":"affected"},{"version":"7.77.0","status":"affected"},{"version":"7.76.1","status":"affected"},{"version":"7.76.0","status":"affected"},{"version":"7.75.0","status":"affected"},{"version":"7.74.0","status":"affected"},{"version":"7.73.0","status":"affected"},{"version":"7.72.0","status":"affected"},{"version":"7.71.1","status":"affected"},{"version":"7.71.0","status":"affected"},{"version":"7.70.0","status":"affected"},{"version":"7.69.1","status":"affected"},{"version":"7.69.0","status":"affected"}]}],"references":["https://curl.se/docs/CVE-2026-9547.json","https://curl.se/docs/CVE-2026-9547.html","https://hackerone.com/reports/3751712"],"weaknesses":["CWE-297"],"ingestedAt":"2026-10-29T20:13:52.441Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/9xxx/CVE-2026-9547.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-9547","state":"PUBLISHED","datePublished":"2026-07-03T06:18:44.499Z","dateUpdated":"2026-09-15T06:03:34.802Z","assignerShortName":"curl","assignerOrgId":"2499f714-1537-4658-8207-48ae4bb9eae9","dateReserved":"2026-05-26T06:45:27.665Z"},"containers":{"cna":{"title":"SSH improper host validation","descriptions":[{"lang":"en","value":"When a libcurl-based application performs transfers via `SCP://` or `SFTP://`\nand utilizes the `CURLOPT_SSH_KEYFUNCTION` callback, it may silently accept an\nuntrusted server. This vulnerability occurs when a server presents a host key\ntype that does not match the specific key type already recorded for that host\nin the `known_hosts` file. Instead of rejecting the mismatch, the callback\nmechanism fails to properly enforce the restriction, allowing the connection\nto succeed without warning and risking a potential man-in-the-middle attack."}],"affected":[{"vendor":"curl","product":"curl","defaultStatus":"unaffected","versions":[{"version":"7.69.0","status":"affected","lessThan":"8.14.2","versionType":"semver"},{"version":"8.15.0","status":"affected","lessThan":"8.16.1","versionType":"semver"},{"version":"8.17.0","status":"affected","lessThan":"8.20.1","versionType":"semver"}]},{"vendor":"curl","product":"curl","defaultStatus":"unaffected","versions":[{"version":"507cf6a13db0375eadd4655b4c64710db29e9cf2","status":"affected","lessThan":"0b8dbbc63c98777e4584cb9fbd71df3464008ad1","versionType":"git"}],"repo":"https://github.com/curl/curl.git"},{"vendor":"curl","product":"curl","defaultStatus":"unaffected","versions":[{"version":"8.20.0","status":"affected"},{"version":"8.19.0","status":"affected"},{"version":"8.18.0","status":"affected"},{"version":"8.17.0","status":"affected"},{"version":"8.16.0","status":"affected"},{"version":"8.15.0","status":"affected"},{"version":"8.14.1","status":"affected"},{"version":"8.14.0","status":"affected"},{"version":"8.13.0","status":"affected"},{"version":"8.12.1","status":"affected"},{"version":"8.12.0","status":"affected"},{"version":"8.11.1","status":"affected"},{"version":"8.11.0","status":"affected"},{"version":"8.10.1","status":"affected"},{"version":"8.10.0","status":"affected"},{"version":"8.9.1","status":"affected"},{"version":"8.9.0","status":"affected"},{"version":"8.8.0","status":"affected"},{"version":"8.7.1","status":"affected"},{"version":"8.7.0","status":"affected"},{"version":"8.6.0","status":"affected"},{"version":"8.5.0","status":"affected"},{"version":"8.4.0","status":"affected"},{"version":"8.3.0","status":"affected"},{"version":"8.2.1","status":"affected"},{"version":"8.2.0","status":"affected"},{"version":"8.1.2","status":"affected"},{"version":"8.1.1","status":"affected"},{"version":"8.1.0","status":"affected"},{"version":"8.0.1","status":"affected"},{"version":"8.0.0","status":"affected"},{"version":"7.88.1","status":"affected"},{"version":"7.88.0","status":"affected"},{"version":"7.87.0","status":"affected"},{"version":"7.86.0","status":"affected"},{"version":"7.85.0","status":"affected"},{"version":"7.84.0","status":"affected"},{"version":"7.83.1","status":"affected"},{"version":"7.83.0","status":"affected"},{"version":"7.82.0","status":"affected"},{"version":"7.81.0","status":"affected"},{"version":"7.80.0","status":"affected"},{"version":"7.79.1","status":"affected"},{"version":"7.79.0","status":"affected"},{"version":"7.78.0","status":"affected"},{"version":"7.77.0","status":"affected"},{"version":"7.76.1","status":"affected"},{"version":"7.76.0","status":"affected"},{"version":"7.75.0","status":"affected"},{"version":"7.74.0","status":"affected"},{"version":"7.73.0","status":"affected"},{"version":"7.72.0","status":"affected"},{"version":"7.71.1","status":"affected"},{"version":"7.71.0","status":"affected"},{"version":"7.70.0","status":"affected"},{"version":"7.69.1","status":"affected"},{"version":"7.69.0","status":"affected"}]}],"references":[{"url":"https://curl.se/docs/CVE-2026-9547.json"},{"url":"https://curl.se/docs/CVE-2026-9547.html"},{"url":"https://hackerone.com/reports/3751712"}],"problemTypes":[{"descriptions":[{"cweId":"CWE-297","lang":"en","description":"Improper Validation of Certificate with Host Mismatch","type":"CWE"}]}],"providerMetadata":{"shortName":"curl","orgId":"2499f714-1537-4658-8207-48ae4bb9eae9","dateUpdated":"2026-09-15T06:03:34.802Z"},"x_osv":{"schema_version":"1.5.0","id":"CURL-CVE-2026-9547","aliases":["CVE-2026-9547"],"summary":"SSH improper host validation","modified":"2026-09-07T10:34:51.00Z","database_specific":{"package":"curl","affects":"lib","URL":"https://curl.se/docs/CVE-2026-9547.json","www":"https://curl.se/docs/CVE-2026-9547.html","issue":"https://hackerone.com/reports/3751712","CWE":{"id":"CWE-297","desc":"Improper Validation of Certificate with Host Mismatch"},"last_affected":"8.20.0","severity":"Low"},"published":"2026-06-24T08:00:00.00Z","affected":[{"ranges":[{"type":"SEMVER","events":[{"introduced":"7.69.0"},{"fixed":"8.14.2"},{"introduced":"8.15.0"},{"fixed":"8.16.1"},{"introduced":"8.17.0"},{"fixed":"8.20.1"}]},{"type":"GIT","repo":"https://github.com/curl/curl.git","events":[{"introduced":"507cf6a13db0375eadd4655b4c64710db29e9cf2"},{"fixed":"0b8dbbc63c98777e4584cb9fbd71df3464008ad1"}]}],"versions":["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","7.69.0"]}],"credits":[{"name":"Joshua Rogers (Aisle Research)","type":"finder"},{"name":"Joshua Rogers (Aisle Research)","type":"remediation developer"}],"details":"When a libcurl-based application performs transfers via `SCP://` or `SFTP://`\nand utilizes the `CURLOPT_SSH_KEYFUNCTION` callback, it may silently accept an\nuntrusted server. This vulnerability occurs when a server presents a host key\ntype that does not match the specific key type already recorded for that host\nin the `known_hosts` file. Instead of rejecting the mismatch, the callback\nmechanism fails to properly enforce the restriction, allowing the connection\nto succeed without warning and risking a potential man-in-the-middle attack."},"credits":[{"lang":"en","value":"Joshua Rogers (Aisle Research)","type":"finder"},{"lang":"en","value":"Joshua Rogers (Aisle Research)","type":"remediation developer"}],"x_generator":{"engine":"cvelib 1.8.0"}},"adp":[{"title":"CISA ADP Vulnrichment","references":[{"url":"https://hackerone.com/reports/3751712","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-07-06T16:47:32.456534Z","id":"CVE-2026-9547","options":[{"Exploitation":"poc"},{"Automatable":"no"},{"Technical Impact":"total"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-07-06T16:48:14.469Z"}}]}}}