IDN wildcard match
curl supports matching of wildcard patterns when listed as "Subject Alternative Name" in TLS server certificates. curl can be built to use its own name matching function for TLS rather than one provided by a TLS library. This private wildcard matching function would match IDN (International Domain Name) hosts incorrectly and could as a result accept patterns that otherwise should mismatch. IDN hostnames are converted to puny code before used for certificate checks. Puny coded names always start with `xn--` and should not be allowed to pattern match, but the wildcard check in curl could still check for `x*`, which would match even though the IDN name most likely contained nothing even resembling an `x`.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2023-28321
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 1 Nov 2026, 09:38 UTC · Revision 1
Source evidence
curl supports matching of wildcard patterns when listed as "Subject Alternative Name" in TLS server certificates. curl can be built to use its own name matching function for TLS rather than one provided by a TLS library. This private wildcard matching function would match IDN (International Domain Name) hosts incorrectly and could as a result accept patterns that otherwise should mismatch. IDN hostnames are converted to puny code before used for certificate checks. Puny coded names always start with `xn--` and should not be allowed to pattern match, but the wildcard check in curl could still check for `x*`, which would match even though the IDN name most likely contained nothing even resembling an `x`.
osv:CURL-CVE-2023-28321
Complete source record
{
"id": "27ded5cf6f9e745795166f0ac36f5951c95a6d78bc80c244325b560edd58eb56",
"url": "https://osv.dev/vulnerability/CURL-CVE-2023-28321",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "IDN wildcard match",
"summary": "curl supports matching of wildcard patterns when listed as \"Subject Alternative Name\" in TLS server certificates. curl can be built to use its own name matching function for TLS rather than one provided by a TLS library. This private wildcard matching function would match IDN (International Domain Name) hosts incorrectly and could as a result accept patterns that otherwise should mismatch. IDN hostnames are converted to puny code before used for certificate checks. Puny coded names always start with `xn--` and should not be allowed to pattern match, but the wildcard check in curl could still check for `x*`, which would match even though the IDN name most likely contained nothing even resembling an `x`.",
"evidence": "osv:CURL-CVE-2023-28321",
"products": [],
"severity": "low",
"structured": {
"id": "CURL-CVE-2023-28321",
"aliases": [
"CURL-CVE-2023-28321",
"CVE-2023-28321"
],
"affected": [
{
"ranges": [
{
"type": "SEMVER",
"events": [
{
"introduced": "7.12.0"
},
{
"fixed": "8.1.0"
}
]
},
{
"repo": "https://github.com/curl/curl.git",
"type": "GIT",
"events": [
{
"introduced": "9631fa740708b1890197fad01e25b34b7e8eb80e"
},
{
"fixed": "199f2d440d8659b42670c1b796220792b01a97bf"
}
]
}
],
"versions": [
"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",
"7.68.0",
"7.67.0",
"7.66.0",
"7.65.3",
"7.65.2",
"7.65.1",
"7.65.0",
"7.64.1",
"7.64.0",
"7.63.0",
"7.62.0",
"7.61.1",
"7.61.0",
"7.60.0",
"7.59.0",
"7.58.0",
"7.57.0",
"7.56.1",
"7.56.0",
"7.55.1",
"7.55.0",
"7.54.1",
"7.54.0",
"7.53.1",
"7.53.0",
"7.52.1",
"7.52.0",
"7.51.0",
"7.50.3",
"7.50.2",
"7.50.1",
"7.50.0",
"7.49.1",
"7.49.0",
"7.48.0",
"7.47.1",
"7.47.0",
"7.46.0",
"7.45.0",
"7.44.0",
"7.43.0",
"7.42.1",
"7.42.0",
"7.41.0",
"7.40.0",
"7.39.0",
"7.38.0",
"7.37.1",
"7.37.0",
"7.36.0",
"7.35.0",
"7.34.0",
"7.33.0",
"7.32.0",
"7.31.0",
"7.30.0",
"7.29.0",
"7.28.1",
"7.28.0",
"7.27.0",
"7.26.0",
"7.25.0",
"7.24.0",
"7.23.1",
"7.23.0",
"7.22.0",
"7.21.7",
"7.21.6",
"7.21.5",
"7.21.4",
"7.21.3",
"7.21.2",
"7.21.1",
"7.21.0",
"7.20.1",
"7.20.0",
"7.19.7",
"7.19.6",
"7.19.5",
"7.19.4",
"7.19.3",
"7.19.2",
"7.19.1",
"7.19.0",
"7.18.2",
"7.18.1",
"7.18.0",
"7.17.1",
"7.17.0",
"7.16.4",
"7.16.3",
"7.16.2",
"7.16.1",
"7.16.0",
"7.15.5",
"7.15.4",
"7.15.3",
"7.15.2",
"7.15.1",
"7.15.0",
"7.14.1",
"7.14.0",
"7.13.2",
"7.13.1",
"7.13.0",
"7.12.3",
"7.12.2",
"7.12.1",
"7.12.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",
"curl-7_69_0",
"curl-7_68_0",
"curl-7_67_0",
"curl-7_66_0",
"curl-7_65_3",
"curl-7_65_2",
"curl-7_65_1",
"curl-7_65_0",
"curl-7_64_1",
"curl-7_64_0",
"curl-7_63_0",
"curl-7_62_0",
"curl-7_61_1",
"curl-7_61_0",
"curl-7_60_0",
"curl-7_59_0",
"curl-7_58_0",
"curl-7_57_0",
"curl-7_56_1",
"curl-7_56_0",
"curl-7_55_1",
"curl-7_55_0",
"curl-7_54_1",
"curl-7_54_0",
"curl-7_53_1",
"curl-7_53_0",
"curl-7_52_1",
"curl-7_52_0",
"curl-7_51_0",
"curl-7_50_3",
"curl-7_50_2",
"curl-7_50_1",
"curl-7_50_0",
"curl-7_49_1",
"curl-7_49_0",
"curl-7_48_0",
"curl-7_47_1",
"curl-7_47_0",
"curl-7_46_0",
"curl-7_45_0",
"curl-7_44_0",
"curl-7_43_0",
"curl-7_42_1",
"curl-7_42_0",
"curl-7_41_0",
"curl-7_40_0",
"curl-7_39_0",
"curl-7_38_0",
"curl-7_37_1",
"curl-7_37_0",
"curl-7_36_0",
"curl-7_35_0",
"curl-7_34_0",
"curl-7_33_0",
"curl-7_32_0",
"curl-7_31_0",
"curl-7_30_0",
"curl-7_29_0",
"curl-7_28_1",
"curl-7_28_0",
"curl-7_27_0",
"curl-7_26_0",
"curl-7_25_0",
"curl-7_24_0",
"curl-7_23_1",
"curl-7_23_0",
"curl-7_22_0",
"curl-7_21_7",
"curl-7_21_6",
"curl-7_21_5",
"curl-7_21_4",
"curl-7_21_3",
"curl-7_21_2",
"curl-7_21_1",
"curl-7_21_0",
"curl-7_20_1",
"curl-7_20_0",
"curl-7_19_7",
"curl-7_19_6",
"curl-7_19_5",
"curl-7_19_4",
"curl-7_19_3",
"curl-7_19_2",
"curl-7_19_1",
"curl-7_19_0",
"curl-7_18_2",
"curl-7_18_1",
"curl-7_18_0",
"curl-7_17_1",
"curl-7_17_0",
"curl-7_17_0-preldapfix",
"curl-7_16_4",
"curl-7_16_3",
"curl-7_16_2",
"curl-7_16_1",
"curl-7_16_0",
"curl-7_15_6-prepipeline",
"curl-7_15_5",
"curl-7_15_4",
"curl-7_15_3",
"curl-7_15_2",
"curl-7_15_1",
"curl-7_15_0",
"curl-7_14_1",
"curl-7_14_0",
"curl-7_13_2",
"curl-7_13_1",
"before_ftp_statemachine",
"curl-7_13_0",
"curl-7_12_3",
"curl-7_12_2",
"curl-7_12_1",
"curl-7_12_0"
],
"database_specific": {
"source": "https://curl.se/docs/CURL-CVE-2023-28321.json",
"vanir_signatures": [
{
"id": "CURL-CVE-2023-28321-22907c43",
"digest": {
"threshold": 0.9,
"line_hashes": [
"207344050218123955699041356600465311264",
"176450998410173016986681428109077048181",
"96678665506437293532820654154268634943",
"244917099847138194886333478503103950628",
"290144097704787677007989522158933197135",
"202219654548396747986612148741026476277",
"106261824755708513465249537150556334520",
"292781301319785374301973628429098761201",
"182884367375154701311730416210809079942",
"184850878051911525171318602240408755679",
"70872935137333767821928064781034318777",
"3218818267648832516109818594963966423",
"259002975747539925722061061352013899141",
"119503835549450692804905006096445230805",
"237906647485658698509995646830117046063",
"64558883178164103185559295669389519803",
"43332104367442266067511898126447375423",
"220485707103904345636038975245330103165",
"32938390744849936639465126910748883463",
"84499700343107277191071546829722903595",
"174494594992661535818975793588245730124",
"18750924031455055675408890960159457343",
"70030276913893605866929172575700190452",
"297133321672383619089091827377126209520",
"13527663011686220506134752011245117688",
"209178442964219701653566614313755601921",
"293711842609800845236651907376106789971",
"14533965421150270866906735132835572603",
"267120981018669293215323945650870185363",
"196391514796541536002487959221554985156",
"227015790769795376859760859938160102021",
"316663134325251650730551586338244840937",
"117758670353837784665922420908474672441",
"224605571622261455075235519821174555378",
"20187487501335244557122662571306469028",
"181801461867350828320927042053029239737",
"236451809119585836700513312873152680197",
"29513611501008744280691819268018259285",
"145529806693255241543554255050574402265",
"79088044851467495900347924277634283669",
"287269455687870498246737122626929890878",
"187152424406849004443345873939226419529",
"128390619606535394460267015126923126753",
"215332077111943297502664971507561531214",
"315765897946706647711754345569895997735",
"323163036058898178658777904662209436316",
"106341659433086469923964117145680371865",
"176671770801296029345261879167953368048",
"149904613802364529128234921182639223146"
]
},
"source": "https://github.com/curl/curl.git/commit/199f2d440d8659b42670c1b796220792b01a97bf",
"target": {
"file": "tests/unit/unit1397.c"
},
"deprecated": false,
"signature_type": "Line",
"signature_version": "v1"
},
{
"id": "CURL-CVE-2023-28321-8ed8cea1",
"digest": {
"length": 997,
"function_hash": "17045556477640101631476317217175158095"
},
"source": "https://github.com/curl/curl.git/commit/199f2d440d8659b42670c1b796220792b01a97bf",
"target": {
"file": "lib/vtls/hostcheck.c",
"function": "hostmatch"
},
"deprecated": false,
"signature_type": "Function",
"signature_version": "v1"
},
{
"id": "CURL-CVE-2023-28321-c9a94bbc",
"digest": {
"threshold": 0.9,
"line_hashes": [
"202480558793927032443896057348026301333",
"273735333512926019706092675697435160329",
"34575677330080548715188934758914392689",
"161833313914807409501102786217462292561",
"238242421435260085330126269803896816368",
"273956007976646414983790013364135847729",
"230972920637210048503660159829816561017",
"259847689724216513183948545756757181743",
"150274663693921415380239290079727876828",
"65363549928569964557700014265241454880",
"150200142490441987707881659854018231823",
"173788023322784971571172798032121242752",
"132679290044646887355311276072621944872",
"25619242862421188163039260771649062645",
"144281374625316198945495567413221501820",
"99020688279056881216991553987430980562",
"14968558949702634202354716346518045466",
"255582497584182576484126104750823177411",
"85790513418043162373358032904296192892",
"99212506937494681883937530713434009897",
"163907589584131067719163211430603514158",
"178650692711719712051589754764022254573",
"4542696306003919669504041750104887642",
"304976047544308717997234158838631226087",
"13064021874927037628782388118336597786",
"16708449399330014789651151293084031438",
"695481965351811090486431716371694364",
"329086040007228194495918905846678174541",
"219827008063691352413220017409881238791",
"178318043334528255561670293008793434335",
"92308745483557585579030948033692739499",
"308741393931263726980266449695143080759",
"91327533059102227972066396834652786653",
"76123061512330118630165763077009240403",
"45687453402880191195503626419558990401",
"211643802336353119040804615758864243236",
"283446933028853935968841514268993513422",
"235139287545283987764083845890182220162",
"176748493745458278603251314540948026316",
"162666952330111013622416839259305747227"
]
},
"source": "https://github.com/curl/curl.git/commit/199f2d440d8659b42670c1b796220792b01a97bf",
"target": {
"file": "lib/vtls/hostcheck.c"
},
"deprecated": false,
"signature_type": "Line",
"signature_version": "v1"
}
],
"vanir_signatures_modified": "2026-10-25T01:05:05Z"
}
}
],
"modified": "2026-10-25T01:05:05.058902206Z",
"provider": "osv",
"references": [],
"provider_metadata": {
"CWE": {
"id": "CWE-295",
"desc": "Improper Certificate Validation"
},
"URL": "https://curl.se/docs/CVE-2023-28321.json",
"www": "https://curl.se/docs/CVE-2023-28321.html",
"award": {
"amount": "480",
"currency": "USD"
},
"issue": "https://hackerone.com/reports/1950627",
"affects": "both",
"package": "curl",
"severity": "Low",
"last_affected": "8.0.1"
}
},
"related_cves": [
{
"value": "CVE-2023-28321",
"evidence": "/aliases"
}
],
"security_relevant": true,
"severity_evidence": "/database_specific/severity"
},
"source_id": "core-osv",
"document_id": 444330,
"published_at": "2023-05-17T08:00:00+00:00"
}