cve-2026-9547

HIGH CVSS 7.4 nvd
Description

When a libcurl-based application performs transfers via `SCP://` or `SFTP://` and utilizes the `CURLOPT_SSH_KEYFUNCTION` callback, it may silently accept an untrusted server. This vulnerability occurs when a server presents a host key type that does not match the specific key type already recorded for that host in the `known_hosts` file. Instead of rejecting the mismatch, the callback mechanism fails to properly enforce the restriction, allowing the connection to succeed without warning and risking a potential man-in-the-middle attack.

Timeline
Published
2026-07-03
Last Modified
2026-09-15
CVSS Details
Attack Vector
NETWORK
Attack Complexity
HIGH
Privileges Required
NONE
Affected Products
  • haxx curl
Weaknesses (CWE)
CVSS metrics
Version Base Severity Vector Exploitability Impact Source
3.1 7.4 HIGH CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N 2.2 5.2 134c704f-9b21-4f2e-91b3-4a467353bcc0
CPE configurations
OR
CPE Version range Vulnerable
cpe:2.3:a:haxx:curl:*:*:*:*:*:*:*:* >= 7.69.0, < 8.21.0 yes
NVD metadata
NVD status
Modified
Source identifier
2499f714-1537-4658-8207-48ae4bb9eae9
References
Linked Vulnerabilities

{
  "cvss": 7.4,
  "datePublished": "2026-07-03T07:16:25.990",
  "dateUpdated": "2026-09-15T07:16:35.310",
  "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.",
  "id": "CVE-2026-9547",
  "raw": {
    "affected": [
      {
        "affectedData": [
          {
            "defaultStatus": "unaffected",
            "product": "curl",
            "vendor": "curl",
            "versions": [
              {
                "lessThan": "8.14.2",
                "status": "affected",
                "version": "7.69.0",
                "versionType": "semver"
              },
              {
                "lessThan": "8.16.1",
                "status": "affected",
                "version": "8.15.0",
                "versionType": "semver"
              },
              {
                "lessThan": "8.20.1",
                "status": "affected",
                "version": "8.17.0",
                "versionType": "semver"
              }
            ]
          },
          {
            "defaultStatus": "unaffected",
            "product": "curl",
            "repo": "https://github.com/curl/curl.git",
            "vendor": "curl",
            "versions": [
              {
                "lessThan": "0b8dbbc63c98777e4584cb9fbd71df3464008ad1",
                "status": "affected",
                "version": "507cf6a13db0375eadd4655b4c64710db29e9cf2",
                "versionType": "git"
              }
            ]
          },
          {
            "defaultStatus": "unaffected",
            "product": "curl",
            "vendor": "curl",
            "versions": [
              {
                "status": "affected",
                "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"
              }
            ]
          }
        ],
        "source": "2499f714-1537-4658-8207-48ae4bb9eae9"
      }
    ],
    "configurations": [
      {
        "nodes": [
          {
            "cpeMatch": [
              {
                "criteria": "cpe:2.3:a:haxx:curl:*:*:*:*:*:*:*:*",
                "matchCriteriaId": "384FD0B4-826D-4A6C-9F78-BC25B9039011",
                "versionEndExcluding": "8.21.0",
                "versionStartIncluding": "7.69.0",
                "vulnerable": true
              }
            ],
            "negate": false,
            "operator": "OR"
          }
        ]
      }
    ],
    "cveTags": [],
    "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."
      }
    ],
    "id": "CVE-2026-9547",
    "lastModified": "2026-09-15T07:16:35.310",
    "metrics": {
      "cvssMetricV31": [
        {
          "cvssData": {
            "attackComplexity": "HIGH",
            "attackVector": "NETWORK",
            "availabilityImpact": "NONE",
            "baseScore": 7.4,
            "baseSeverity": "HIGH",
            "confidentialityImpact": "HIGH",
            "integrityImpact": "HIGH",
            "privilegesRequired": "NONE",
            "scope": "UNCHANGED",
            "userInteraction": "NONE",
            "vectorString": "CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N",
            "version": "3.1"
          },
          "exploitabilityScore": 2.2,
          "impactScore": 5.2,
          "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "type": "Secondary"
        }
      ],
      "ssvcV203": [
        {
          "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "ssvcData": {
            "id": "CVE-2026-9547",
            "options": [
              {
                "exploitation": "poc"
              },
              {
                "automatable": "no"
              },
              {
                "technicalImpact": "total"
              }
            ],
            "role": "CISA Coordinator",
            "timestamp": "2026-07-06T16:47:32.456534Z",
            "version": "2.0.3"
          }
        }
      ]
    },
    "published": "2026-07-03T07:16:25.990",
    "references": [
      {
        "source": "2499f714-1537-4658-8207-48ae4bb9eae9",
        "tags": [
          "Patch",
          "Vendor Advisory"
        ],
        "url": "https://curl.se/docs/CVE-2026-9547.html"
      },
      {
        "source": "2499f714-1537-4658-8207-48ae4bb9eae9",
        "tags": [
          "Vendor Advisory"
        ],
        "url": "https://curl.se/docs/CVE-2026-9547.json"
      },
      {
        "source": "2499f714-1537-4658-8207-48ae4bb9eae9",
        "tags": [
          "Exploit",
          "Issue Tracking",
          "Third Party Advisory"
        ],
        "url": "https://hackerone.com/reports/3751712"
      },
      {
        "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
        "tags": [
          "Exploit",
          "Issue Tracking",
          "Third Party Advisory"
        ],
        "url": "https://hackerone.com/reports/3751712"
      }
    ],
    "sourceIdentifier": "2499f714-1537-4658-8207-48ae4bb9eae9",
    "vulnStatus": "Modified",
    "weaknesses": [
      {
        "description": [
          {
            "lang": "en",
            "value": "CWE-297"
          }
        ],
        "source": "2499f714-1537-4658-8207-48ae4bb9eae9",
        "type": "Secondary"
      },
      {
        "description": [
          {
            "lang": "en",
            "value": "NVD-CWE-Other"
          }
        ],
        "source": "nvd@nist.gov",
        "type": "Primary"
      }
    ]
  },
  "severity": "HIGH",
  "source": "nvd",
  "title": "When a libcurl-based application performs transfers via `SCP://` or `SFTP://`\nand utilizes the `CURLOPT_SSH_KEYFUNCTI..."
}
Enrichment data
View JSON API Download JSON