{"id":"CVE-2026-9648","aliases":["DEBIAN-CVE-2026-9648","EUVD-2026-36248","GHSA-7jx5-vvgh-vcjw","HSEC-2026-0008","UBUNTU-CVE-2026-9648","openSUSE-SU-2026:11077-1","openSUSE-SU-2026:11078-1","openSUSE-SU-2026:11079-1","openSUSE-SU-2026:11080-1","openSUSE-SU-2026:11081-1","openSUSE-SU-2026:11082-1","openSUSE-SU-2026:11083-1","openSUSE-SU-2026:11084-1","openSUSE-SU-2026:11085-1","openSUSE-SU-2026:11087-1"],"status":"published","title":"CVE-2026-9648","description":"The crypton-x509-validation Haskell library fails to enforce X.509 NameConstraints, allowing TLS clients to accept certificates whose Subject Alternative Names fall outside the issuing CA’s permitted subtrees. This oversight enables an attacker who compromises a name-constrained sub-CA to impersonate domains beyond its intended scope.","severity":{"version":"3.1","score":9.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N","level":"critical","assessor":"adp","from":"cve"},"epss":{"day":"2026-11-09","score":0.00223,"percentile":0.12974,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"published":"2026-06-03T13:30:48Z","modified":"2026-10-27T09:47:29Z","fixes":[{"ecosystem":"Hackage","package":"crypton-x509-validation","fixed_in":["1.9.1"],"sources":["osv"]},{"ecosystem":"Hackage","package":"crypton-x509","fixed_in":["1.9.1"],"sources":["osv"]},{"ecosystem":"openSUSE:Tumbleweed","package":"ghc-aws","fixed_in":["0.25.2-1.1"],"sources":["osv"]},{"ecosystem":"openSUSE:Tumbleweed","package":"ghc-crypton-asn1-encoding","fixed_in":["0.10.0-1.1"],"sources":["osv"]},{"ecosystem":"openSUSE:Tumbleweed","package":"ghc-crypton-asn1-parse","fixed_in":["0.10.0-1.1"],"sources":["osv"]},{"ecosystem":"openSUSE:Tumbleweed","package":"ghc-crypton-asn1-types","fixed_in":["0.4.1-1.1"],"sources":["osv"]},{"ecosystem":"openSUSE:Tumbleweed","package":"ghc-crypton-pem","fixed_in":["0.3.0-1.1"],"sources":["osv"]},{"ecosystem":"openSUSE:Tumbleweed","package":"ghc-crypton-x509","fixed_in":["1.9.1-1.1"],"sources":["osv"]},{"ecosystem":"openSUSE:Tumbleweed","package":"ghc-crypton-x509-store","fixed_in":["1.9.0-1.1"],"sources":["osv"]},{"ecosystem":"openSUSE:Tumbleweed","package":"ghc-crypton-x509-system","fixed_in":["1.9.0-1.1"],"sources":["osv"]},{"ecosystem":"openSUSE:Tumbleweed","package":"ghc-crypton-x509-validation","fixed_in":["1.9.1-1.1"],"sources":["osv"]},{"ecosystem":"openSUSE:Tumbleweed","package":"git-annex","fixed_in":["10.20260601-2.1"],"sources":["osv"]}],"affected":[{"source":"osv","ecosystem":"Debian:13","package":"haskell-crypton-x509","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.7.7-1","1.7.7-2"]},{"source":"osv","ecosystem":"Debian:14","package":"haskell-crypton-x509","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.7.7-1","1.7.7-2"]},{"source":"osv","ecosystem":"Debian:13","package":"haskell-crypton-x509-validation","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.6.12-3","1.6.14-1"]},{"source":"osv","ecosystem":"Debian:14","package":"haskell-crypton-x509-validation","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.6.12-3","1.6.14-1"]},{"source":"osv","ecosystem":"Hackage","package":"crypton-x509-validation","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"1.6.12"},{"fixed":"1.9.1"}]}],"versions":["1.6.12","1.6.13","1.6.14","1.8.0","1.9.0"]},{"source":"osv","ecosystem":"Hackage","package":"crypton-x509","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"1.7.6"},{"fixed":"1.9.1"}]}],"versions":["1.7.6","1.7.7","1.8.0","1.9.0"]},{"source":"osv","ecosystem":"Hackage","package":"x509-validation","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"1.4.0"}]}],"versions":["1.4.0","1.4.1","1.4.2","1.4.3","1.4.4","1.4.5","1.4.6","1.4.7","1.4.8","1.5.0","1.5.1","1.5.2","1.6.0","1.6.1","1.6.10","1.6.11","1.6.12","1.6.2","1.6.3","1.6.4","1.6.5","1.6.7","1.6.8","1.6.9"]},{"source":"osv","ecosystem":"Hackage","package":"x509","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"1.4.0"}]}],"versions":["1.4.0","1.4.1","1.4.10","1.4.11","1.4.12","1.4.13","1.4.2","1.4.3","1.4.4","1.4.5","1.4.6","1.4.7","1.4.8","1.4.9","1.5.0","1.5.0.1","1.5.1","1.6.0","1.6.1","1.6.2","1.6.3","1.6.4","1.6.5","1.7.0","1.7.1","1.7.2","1.7.3","1.7.4","1.7.5","1.7.6","1.7.7"]},{"source":"osv","ecosystem":"Ubuntu:24.04:LTS","package":"haskell-crypton-x509-validation","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.6.12-1","1.6.12-2","1.6.12-2build1"]},{"source":"osv","ecosystem":"Ubuntu:25.10","package":"haskell-crypton-x509-validation","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.6.12-3build1"]},{"source":"osv","ecosystem":"Ubuntu:26.10","package":"haskell-crypton-x509-validation","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.6.14-1build1"]},{"source":"osv","ecosystem":"Ubuntu:26.04:LTS","package":"haskell-crypton-x509-validation","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["1.6.12-3build1","1.6.14-1build1"]},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"ghc-aws","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.25.2-1.1"}]}]},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"ghc-crypton-asn1-encoding","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.10.0-1.1"}]}]},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"ghc-crypton-asn1-parse","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.10.0-1.1"}]}]},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"ghc-crypton-asn1-types","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.4.1-1.1"}]}]},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"ghc-crypton-pem","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.3.0-1.1"}]}]},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"ghc-crypton-x509","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.9.1-1.1"}]}]},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"ghc-crypton-x509-store","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.9.0-1.1"}]}]},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"ghc-crypton-x509-system","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.9.0-1.1"}]}]},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"ghc-crypton-x509-validation","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.9.1-1.1"}]}]},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"git-annex","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"10.20260601-2.1"}]}]}],"products":[{"vendor":"haskell programming language","product":"crypton-certificate"}],"references":[{"url":"https://github.com/kazu-yamamoto/crypton-certificate/pull/30","tags":["fix","report"]},{"url":"https://github.com/kazu-yamamoto/crypton-certificate/pull/30/changes/f4b77edf6ead77f4a886da40e41eab20f0180e39","tags":["report"]},{"url":"https://hackage.haskell.org/package/crypton-x509-validation-1.9.1/revisions/","tags":["report"]},{"url":"https://github.com/haskell/security-advisories/pull/332","tags":["report"]},{"url":"https://www.kb.cert.org/vuls/id/862559","tags":["advisory","report"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-9648"},{"url":"https://hackage.haskell.org/package/crypton-x509-validation-1.9.1/revisions"},{"url":"https://github.com/advisories/GHSA-7jx5-vvgh-vcjw"},{"url":"https://security-tracker.debian.org/tracker/CVE-2026-9648","tags":["advisory"]},{"url":"https://ubuntu.com/security/CVE-2026-9648","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-9648","tags":["report"]},{"url":"","tags":["advisory"]},{"url":"https://www.suse.com/security/cve/CVE-2026-9648","tags":["web"]}],"sources":{"cve":[{"id":"CVE-2026-9648","title":"CVE-2026-9648","description":"The crypton-x509-validation Haskell library fails to enforce X.509 NameConstraints, allowing TLS clients to accept certificates whose Subject Alternative Names fall outside the issuing CA’s permitted subtrees. This oversight enables an attacker who compromises a name-constrained sub-CA to impersonate domains beyond its intended scope.","status":"published","published":"2026-06-11T14:30:30.8Z","modified":"2026-06-11T15:39:31.21Z","cvss":[{"version":"3.1","score":9.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N","level":"critical","assessor":"adp"}],"updated_at":"2026-11-02T13:42:26.790871Z"}],"euvd":[{"id":"EUVD-2026-36248","description":"The crypton-x509-validation Haskell library fails to enforce X.509 NameConstraints, allowing TLS clients to accept certificates whose Subject Alternative Names fall outside the issuing CA’s permitted subtrees. This oversight enables an attacker who compromises a name-constrained sub-CA to impersonate domains beyond its intended scope.","status":"published","published":"2026-06-11T14:30:30Z","modified":"2026-06-11T15:39:31Z","cvss":[{"version":"3.1","score":9.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N","level":"critical"}],"updated_at":"2026-11-02T18:20:44.061211Z"}],"ghsa":[{"id":"GHSA-7jx5-vvgh-vcjw","title":"The crypton-x509-validation Haskell library fails to enforce X.509 NameConstraints, allowing TLS...","description":"The crypton-x509-validation Haskell library fails to enforce X.509 NameConstraints, allowing TLS clients to accept certificates whose Subject Alternative Names fall outside the issuing CA’s permitted subtrees. This oversight enables an attacker who compromises a name-constrained sub-CA to impersonate domains beyond its intended scope.","status":"published","published":"2026-06-11T18:31:34Z","modified":"2026-06-11T18:31:41Z","cvss":[{"version":"3.1","score":9.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N","level":"critical"}],"updated_at":"2026-11-02T15:08:44.492605Z"}],"nvd":[{"id":"CVE-2026-9648","description":"The crypton-x509-validation Haskell library fails to enforce X.509 NameConstraints, allowing TLS clients to accept certificates whose Subject Alternative Names fall outside the issuing CA’s permitted subtrees. This oversight enables an attacker who compromises a name-constrained sub-CA to impersonate domains beyond its intended scope.","status":"published","published":"2026-06-11T16:16:25.503Z","modified":"2026-10-26T11:10:00.157Z","cvss":[{"version":"3.1","score":9.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N","level":"critical","assessor":"secondary"}],"updated_at":"2026-11-02T14:12:23.485267Z"}],"osv":[{"id":"DEBIAN-CVE-2026-9648","description":"The crypton-x509-validation Haskell library fails to enforce X.509 NameConstraints, allowing TLS clients to accept certificates whose Subject Alternative Names fall outside the issuing CA’s permitted subtrees. This oversight enables an attacker who compromises a name-constrained sub-CA to impersonate domains beyond its intended scope.","status":"published","published":"2026-06-11T16:16:25.503Z","modified":"2026-10-27T09:47:29.758762556Z","cvss":[{"version":"3.1","score":9.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N","level":"critical"}],"updated_at":"2026-11-02T15:46:07.324252Z"},{"id":"UBUNTU-CVE-2026-9648","description":"The crypton-x509-validation Haskell library fails to enforce X.509 NameConstraints, allowing TLS clients to accept certificates whose Subject Alternative Names fall outside the issuing CA’s permitted subtrees. This oversight enables an attacker who compromises a name-constrained sub-CA to impersonate domains beyond its intended scope.","status":"published","published":"2026-06-11T16:16:00Z","modified":"2026-10-17T13:01:19.594599428Z","cvss":[{"version":"3.1","score":9.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N","level":"critical"}],"updated_at":"2026-11-02T16:57:44.071534Z"},{"id":"HSEC-2026-0008","title":"crypton-x509-validation and crypton-x509 do not enforce X.509 Name Constraints","description":"# crypton-x509-validation and crypton-x509 do not enforce X.509 Name Constraints\n\nThe `crypton-x509-validation` and `crypton-x509` libraries did not\nenforce the X.509 Name Constraints extension during certificate\nvalidation. The Name Constraints extension is a critical X.509\nextension that restricts the namespace (permitted and excluded\nsubtrees) for which a CA is authorized to issue certificates.\n\nWithout this enforcement, a TLS client would accept certificates with\nSubject Alternative Names (SANs) that fall outside the issuing CA's\npermitted subtrees. An attacker with access to a name-constrained\nsub-CA's private key could therefore issue certificates for domains\noutside the sub-CA's intended scope, enabling impersonation of\narbitrary domains and man-in-the-middle attacks on TLS connections.\n\nThe older `x509` and `x509-validation` packages are also affected but\nare no longer maintained and have no fix available.\n\nThis issue was fixed in `crypton-x509-validation-1.9.1` and\n`crypton-x509-1.9.1`.\n","status":"published","published":"2026-06-03T13:30:48Z","modified":"2026-06-03T13:45:42.872452373Z","updated_at":"2026-11-02T15:47:17.805107Z"},{"id":"openSUSE-SU-2026:11077-1","title":"ghc-aws-0.25.2-1.1 on GA media","description":"These are all security issues fixed in the ghc-aws-0.25.2-1.1 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2026-06-22T00:00:00Z","modified":"2026-06-24T09:00:19.977334771Z","updated_at":"2026-11-02T16:58:38.95195Z"},{"id":"openSUSE-SU-2026:11078-1","title":"ghc-crypton-asn1-encoding-0.10.0-1.1 on GA media","description":"These are all security issues fixed in the ghc-crypton-asn1-encoding-0.10.0-1.1 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2026-06-22T00:00:00Z","modified":"2026-06-24T09:00:20.093916857Z","updated_at":"2026-11-02T16:58:38.95195Z"},{"id":"openSUSE-SU-2026:11079-1","title":"ghc-crypton-asn1-parse-0.10.0-1.1 on GA media","description":"These are all security issues fixed in the ghc-crypton-asn1-parse-0.10.0-1.1 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2026-06-22T00:00:00Z","modified":"2026-06-24T09:00:21.006060529Z","updated_at":"2026-11-02T16:58:38.95195Z"},{"id":"openSUSE-SU-2026:11080-1","title":"ghc-crypton-asn1-types-0.4.1-1.1 on GA media","description":"These are all security issues fixed in the ghc-crypton-asn1-types-0.4.1-1.1 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2026-06-22T00:00:00Z","modified":"2026-06-24T09:00:21.000510387Z","updated_at":"2026-11-02T16:58:38.95195Z"},{"id":"openSUSE-SU-2026:11081-1","title":"ghc-crypton-pem-0.3.0-1.1 on GA media","description":"These are all security issues fixed in the ghc-crypton-pem-0.3.0-1.1 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2026-06-22T00:00:00Z","modified":"2026-06-24T09:00:20.074287083Z","updated_at":"2026-11-02T16:58:38.95195Z"},{"id":"openSUSE-SU-2026:11082-1","title":"ghc-crypton-x509-1.9.1-1.1 on GA media","description":"These are all security issues fixed in the ghc-crypton-x509-1.9.1-1.1 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2026-06-22T00:00:00Z","modified":"2026-06-24T09:00:20.951255246Z","updated_at":"2026-11-02T16:58:38.95195Z"},{"id":"openSUSE-SU-2026:11083-1","title":"ghc-crypton-x509-store-1.9.0-1.1 on GA media","description":"These are all security issues fixed in the ghc-crypton-x509-store-1.9.0-1.1 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2026-06-22T00:00:00Z","modified":"2026-06-24T09:00:20.953126717Z","updated_at":"2026-11-02T16:58:38.95195Z"},{"id":"openSUSE-SU-2026:11084-1","title":"ghc-crypton-x509-system-1.9.0-1.1 on GA media","description":"These are all security issues fixed in the ghc-crypton-x509-system-1.9.0-1.1 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2026-06-22T00:00:00Z","modified":"2026-06-24T09:00:20.960666034Z","updated_at":"2026-11-02T16:58:38.95195Z"},{"id":"openSUSE-SU-2026:11085-1","title":"ghc-crypton-x509-validation-1.9.1-1.1 on GA media","description":"These are all security issues fixed in the ghc-crypton-x509-validation-1.9.1-1.1 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2026-06-22T00:00:00Z","modified":"2026-06-24T09:00:20.958741608Z","updated_at":"2026-11-02T16:58:38.95195Z"},{"id":"openSUSE-SU-2026:11087-1","title":"git-annex-10.20260601-2.1 on GA media","description":"These are all security issues fixed in the git-annex-10.20260601-2.1 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2026-06-22T00:00:00Z","modified":"2026-06-24T09:00:20.963179792Z","updated_at":"2026-11-02T16:58:38.95195Z"}]}}
