Skip to content
Heist/ feed
Back to feed
Medium

HSTS bypass via IDN

Type: advisorySources: OSV

curl's HSTS check could be bypassed to trick it to keep using HTTP. Using its HSTS support, curl can be instructed to use HTTPS directly instead of using an insecure clear-text HTTP step even when HTTP is provided in the URL. This mechanism could be bypassed if the hostname in the given URL uses IDN characters that get replaced to ASCII counterparts as part of the IDN conversion. Like using the character UTF-8 U+3002 (`IDEOGRAPHIC FULL STOP`) instead of the common ASCII full stop (U+002E) `.`. Like this: `http://curl。se。`

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2022-42916
Confirmed fixed CVEs
Not specified
Updated in this feed
1 Nov 2026, 09:39 UTC · Revision 1

Source evidence

HSTS bypass via IDN

core-osv · Original source

Published 26 Oct 2022, 08:00 UTC

curl's HSTS check could be bypassed to trick it to keep using HTTP. Using its HSTS support, curl can be instructed to use HTTPS directly instead of using an insecure clear-text HTTP step even when HTTP is provided in the URL. This mechanism could be bypassed if the hostname in the given URL uses IDN characters that get replaced to ASCII counterparts as part of the IDN conversion. Like using the character UTF-8 U+3002 (`IDEOGRAPHIC FULL STOP`) instead of the common ASCII full stop (U+002E) `.`. Like this: `http://curl。se。`

osv:CURL-CVE-2022-42916
Complete source record
{
  "id": "e51d5706d01ccbedb075c1cc1ba5e433f271401cc516231227e696e32d77b418",
  "url": "https://osv.dev/vulnerability/CURL-CVE-2022-42916",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "HSTS bypass via IDN",
    "summary": "curl's HSTS check could be bypassed to trick it to keep using HTTP. Using its HSTS support, curl can be instructed to use HTTPS directly instead of using an insecure clear-text HTTP step even when HTTP is provided in the URL. This mechanism could be bypassed if the hostname in the given URL uses IDN characters that get replaced to ASCII counterparts as part of the IDN conversion. Like using the character UTF-8 U+3002 (`IDEOGRAPHIC FULL STOP`) instead of the common ASCII full stop (U+002E) `.`. Like this: `http://curl。se。`",
    "evidence": "osv:CURL-CVE-2022-42916",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CURL-CVE-2022-42916",
      "aliases": [
        "CURL-CVE-2022-42916",
        "CVE-2022-42916"
      ],
      "affected": [
        {
          "ranges": [
            {
              "type": "SEMVER",
              "events": [
                {
                  "introduced": "7.77.0"
                },
                {
                  "fixed": "7.86.0"
                }
              ]
            },
            {
              "repo": "https://github.com/curl/curl.git",
              "type": "GIT",
              "events": [
                {
                  "introduced": "7385610d0c74c6a254fea5e4cd6e1d559d848c8c"
                },
                {
                  "fixed": "53bcf55b4538067e6dc36242168866becb987bb7"
                }
              ]
            }
          ],
          "versions": [
            "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",
            "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"
          ],
          "database_specific": {
            "source": "https://curl.se/docs/CURL-CVE-2022-42916.json",
            "vanir_signatures": [
              {
                "id": "CURL-CVE-2022-42916-12531e8b",
                "digest": {
                  "threshold": 0.9,
                  "line_hashes": [
                    "75107644506556931257839734745456594778",
                    "42044597254118802783507473983065446054",
                    "106485663130800929975671924726703558082",
                    "15999568815776653480033726278070187576",
                    "298802949360025253102477335493426961450",
                    "226031619676144204948728541996323025886",
                    "83565965808143116816602880943162234402",
                    "99111331056051150360841119739035710359",
                    "248371552790000917660180970131853738924",
                    "138235347098520216592907151270925216",
                    "332379120256841151707688734596365992864",
                    "115520424302230138298796121363648023567",
                    "116875644766770142877076463488246793587",
                    "104278356396383426619471619116276805662",
                    "329593957423421623966844451133585797053",
                    "227230350864470955163156543576614345601",
                    "175480898032272737354300925689259200686",
                    "270663691216286470486512797168809679066",
                    "304787360703412945384302540922630434582",
                    "327679326065517452833486961146454131127",
                    "177898379110637064503080678971123011046",
                    "187519522983891401729004566785046007834",
                    "201828046743865531488373427948287117845",
                    "147038231609941192317384960984072747528",
                    "174988572505711722422001190842731842096",
                    "186260712260723753909033636883694484089",
                    "278422629132883446350874988803082327404",
                    "1676954084558231879176817749451523299",
                    "229614720272057867854298589476783268798",
                    "214232556770858808594636913438370761431",
                    "54962445254502315437201154258309858901",
                    "209996503232981804868505299647402522137",
                    "308830015629257446961946828640339021875",
                    "196144543928929887087831021139237295202",
                    "182707647717647346469230947290975879069",
                    "321994174146889560038739064209743410061",
                    "245798318246260845538571341095419627204",
                    "308650669242612315274791965913057652582",
                    "12263600173226882060056727278823402490",
                    "53327177092035353638536486854703091803",
                    "133189311330754793865265601033160557464",
                    "261075140940187401730927381559652894676",
                    "184217470643600794455378728258914747102",
                    "57515447276371526737650122354422753157",
                    "233198043719645789025825038566621441267",
                    "152653257769245431270585784123078808711"
                  ]
                },
                "source": "https://github.com/curl/curl.git/commit/53bcf55b4538067e6dc36242168866becb987bb7",
                "target": {
                  "file": "lib/url.c"
                },
                "deprecated": false,
                "signature_type": "Line",
                "signature_version": "v1"
              },
              {
                "id": "CURL-CVE-2022-42916-3d926b16",
                "digest": {
                  "length": 5320,
                  "function_hash": "277931467909993625871566389517568582754"
                },
                "source": "https://github.com/curl/curl.git/commit/53bcf55b4538067e6dc36242168866becb987bb7",
                "target": {
                  "file": "lib/url.c",
                  "function": "parseurlandfillconn"
                },
                "deprecated": false,
                "signature_type": "Function",
                "signature_version": "v1"
              },
              {
                "id": "CURL-CVE-2022-42916-adb0406b",
                "digest": {
                  "length": 9897,
                  "function_hash": "31822263015254063761364928829698076583"
                },
                "source": "https://github.com/curl/curl.git/commit/53bcf55b4538067e6dc36242168866becb987bb7",
                "target": {
                  "file": "lib/url.c",
                  "function": "create_conn"
                },
                "deprecated": false,
                "signature_type": "Function",
                "signature_version": "v1"
              }
            ],
            "vanir_signatures_modified": "2026-10-25T01:05:32Z"
          }
        }
      ],
      "modified": "2026-10-25T01:05:32.136941930Z",
      "provider": "osv",
      "references": [],
      "provider_metadata": {
        "CWE": {
          "id": "CWE-319",
          "desc": "Cleartext Transmission of Sensitive Information"
        },
        "URL": "https://curl.se/docs/CVE-2022-42916.json",
        "www": "https://curl.se/docs/CVE-2022-42916.html",
        "award": {
          "amount": "2400",
          "currency": "USD"
        },
        "issue": "https://hackerone.com/reports/1730660",
        "affects": "both",
        "package": "curl",
        "severity": "Medium",
        "last_affected": "7.85.0"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2022-42916",
        "evidence": "/aliases"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/database_specific/severity"
  },
  "source_id": "core-osv",
  "document_id": 444399,
  "published_at": "2022-10-26T08:00:00+00:00"
}