Skip to content
Heist/ feed
Back to feed
Medium

Bad connection reuse due to flawed path name checks

Type: advisorySources: OSV

libcurl keeps previously used connections in a connection pool for subsequent transfers to reuse, if one of them matches the setup. Due to errors in the logic, the config matching function did not take 'issuer cert' into account and it compared the involved paths *case insensitively*, which could lead to libcurl reusing wrong connections. File paths are, or can be, case sensitive on many systems but not all, and can even vary depending on used file systems. The comparison also did not include the 'issuer cert' which a transfer can set to qualify how to verify the server certificate.

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

Source evidence

Bad connection reuse due to flawed path name checks

core-osv · Original source

Published 21 Jul 2021, 08:00 UTC

libcurl keeps previously used connections in a connection pool for subsequent transfers to reuse, if one of them matches the setup. Due to errors in the logic, the config matching function did not take 'issuer cert' into account and it compared the involved paths *case insensitively*, which could lead to libcurl reusing wrong connections. File paths are, or can be, case sensitive on many systems but not all, and can even vary depending on used file systems. The comparison also did not include the 'issuer cert' which a transfer can set to qualify how to verify the server certificate.

osv:CURL-CVE-2021-22924
Complete source record
{
  "id": "a201b9fe15c4e8ba2e1dab615c89bf324bdc22f3879f16a29ccaac133abd4ae5",
  "url": "https://osv.dev/vulnerability/CURL-CVE-2021-22924",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Bad connection reuse due to flawed path name checks",
    "summary": "libcurl keeps previously used connections in a connection pool for subsequent transfers to reuse, if one of them matches the setup. Due to errors in the logic, the config matching function did not take 'issuer cert' into account and it compared the involved paths *case insensitively*, which could lead to libcurl reusing wrong connections. File paths are, or can be, case sensitive on many systems but not all, and can even vary depending on used file systems. The comparison also did not include the 'issuer cert' which a transfer can set to qualify how to verify the server certificate.",
    "evidence": "osv:CURL-CVE-2021-22924",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CURL-CVE-2021-22924",
      "aliases": [
        "CURL-CVE-2021-22924",
        "CVE-2021-22924"
      ],
      "affected": [
        {
          "ranges": [
            {
              "type": "SEMVER",
              "events": [
                {
                  "introduced": "7.10.4"
                },
                {
                  "fixed": "7.78.0"
                }
              ]
            },
            {
              "repo": "https://github.com/curl/curl.git",
              "type": "GIT",
              "events": [
                {
                  "introduced": "89721ff04af70f527baae1368f3b992777bf6526"
                },
                {
                  "fixed": "5ea3145850ebff1dc2b13d17440300a01ca38161"
                }
              ]
            }
          ],
          "versions": [
            "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",
            "7.11.2",
            "7.11.1",
            "7.11.0",
            "7.10.8",
            "7.10.7",
            "7.10.6",
            "7.10.5",
            "7.10.4",
            "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",
            "curl-7_11_2",
            "curl-7_11_1",
            "curl-7_11_0",
            "curl-7_10_8",
            "curl-7_10_7",
            "curl-7_10_6",
            "curl-7_10_5",
            "curl-7_10_4"
          ],
          "database_specific": {
            "source": "https://curl.se/docs/CURL-CVE-2021-22924.json",
            "vanir_signatures": [
              {
                "id": "CURL-CVE-2021-22924-000012e9",
                "digest": {
                  "length": 959,
                  "function_hash": "160738917255142178955719735977220262662"
                },
                "source": "https://github.com/curl/curl.git/commit/5ea3145850ebff1dc2b13d17440300a01ca38161",
                "target": {
                  "file": "lib/vtls/vtls.c",
                  "function": "Curl_ssl_config_matches"
                },
                "deprecated": false,
                "signature_type": "Function",
                "signature_version": "v1"
              },
              {
                "id": "CURL-CVE-2021-22924-3090f164",
                "digest": {
                  "length": 607,
                  "function_hash": "242173141107224124593678877270860419379"
                },
                "source": "https://github.com/curl/curl.git/commit/5ea3145850ebff1dc2b13d17440300a01ca38161",
                "target": {
                  "file": "lib/vtls/vtls.c",
                  "function": "Curl_clone_primary_ssl_config"
                },
                "deprecated": false,
                "signature_type": "Function",
                "signature_version": "v1"
              },
              {
                "id": "CURL-CVE-2021-22924-462e4343",
                "digest": {
                  "threshold": 0.9,
                  "line_hashes": [
                    "92808530411196095553505616157115942300",
                    "45908650368393808521057200267284180006",
                    "65749180650725409552700972312456308709",
                    "279012087684869453557416819277899115117",
                    "103860506802024578069238006428027510678",
                    "71080160458351588707589298016896833413",
                    "8573403993379032944205432985058103251",
                    "290296481367090699367906201443546441822",
                    "164156621551702113882480748469909602192",
                    "37439760373268398819219735979266640793",
                    "264559488954933425065606112307380306297",
                    "147768301069492776064288891387278737600",
                    "24189586831723203088695513291558074805",
                    "101764922127543190502463200563219920239",
                    "195374512285048170792986521670755682324",
                    "4653310523144342939875486544856805823",
                    "153496304968905480299042061006678310230",
                    "25698682391873307635810879422215793501",
                    "19364255763905544985647682997849314189",
                    "201295286300248511913340915835683442594",
                    "241785596331168220846828305650148360325",
                    "9760484766662901931555145842670872098"
                  ]
                },
                "source": "https://github.com/curl/curl.git/commit/5ea3145850ebff1dc2b13d17440300a01ca38161",
                "target": {
                  "file": "lib/vtls/gtls.c"
                },
                "deprecated": false,
                "signature_type": "Line",
                "signature_version": "v1"
              },
              {
                "id": "CURL-CVE-2021-22924-5ffc7054",
                "digest": {
                  "threshold": 0.9,
                  "line_hashes": [
                    "293346117710277402906988127379890480911",
                    "318951684812481869243577089894720244646",
                    "18170087799223666007426473235044785551",
                    "266187893201071675177604364123925103853",
                    "171260927682318293961594133787203067126",
                    "328809578005112650065821281926250553108",
                    "225365005245117342631172596991759472217",
                    "153111872541287374148010254532861402235",
                    "84844479104922469123145650136873381337",
                    "2839830162856843112537799467360632339",
                    "93781514207428267086035567221395752890",
                    "46550453571787906225150361732149447396",
                    "112115463682973560938950716028849298333",
                    "234419127224589967834346841740175619327",
                    "182311796693765693336368824111205311935",
                    "286586140641224583010268132967431241219",
                    "4549786900216407333280300744289060178",
                    "235038765624297746982724450876579261780",
                    "229353987035307832145937329149868806857"
                  ]
                },
                "source": "https://github.com/curl/curl.git/commit/5ea3145850ebff1dc2b13d17440300a01ca38161",
                "target": {
                  "file": "lib/url.c"
                },
                "deprecated": false,
                "signature_type": "Line",
                "signature_version": "v1"
              },
              {
                "id": "CURL-CVE-2021-22924-65c5d3c9",
                "digest": {
                  "length": 10376,
                  "function_hash": "248677399743325539643140681582998464273"
                },
                "source": "https://github.com/curl/curl.git/commit/5ea3145850ebff1dc2b13d17440300a01ca38161",
                "target": {
                  "file": "lib/url.c",
                  "function": "create_conn"
                },
                "deprecated": false,
                "signature_type": "Function",
                "signature_version": "v1"
              },
              {
                "id": "CURL-CVE-2021-22924-7abb74e2",
                "digest": {
                  "threshold": 0.9,
                  "line_hashes": [
                    "15757231600732059158571126738210615864",
                    "117297194168511139335890601047691353274",
                    "138162738216625249823585872246671233443",
                    "147188775421521834898568518394550291605",
                    "89737260241347709804384695839942085590",
                    "318509396129690063523857738033106073097",
                    "264506098599363399822308635250389899908",
                    "274912860633912436608852698371101886353",
                    "226691280622271496660979682611784869483",
                    "175500027849282046470475612004391296625",
                    "134520456038036498335310997176798181588",
                    "205513155513630399959947656952210446268",
                    "204905006960169871119557553463088111225",
                    "175021463767232054193704746405311102677",
                    "23693625037367047861775064605680333386",
                    "191429445508757613753957535825142679963",
                    "302591730111736563819300950364465242614",
                    "97438422859912533387679836331737701037",
                    "330330332109499592883786629861615514265",
                    "290099400450357343265566085917158862950",
                    "120537013791886103479240535362162086080",
                    "97438422859912533387679836331737701037",
                    "237171504862118343897598936381192612659",
                    "251045997626051927972639140287717601528",
                    "269951754765483649621071236782919165257",
                    "339782191851451572074317887953510321708"
                  ]
                },
                "source": "https://github.com/curl/curl.git/commit/5ea3145850ebff1dc2b13d17440300a01ca38161",
                "target": {
                  "file": "lib/vtls/openssl.c"
                },
                "deprecated": false,
                "signature_type": "Line",
                "signature_version": "v1"
              },
              {
                "id": "CURL-CVE-2021-22924-7fb98150",
                "digest": {
                  "threshold": 0.9,
                  "line_hashes": [
                    "178881535967346012844534644950804721617",
                    "15491625948753420841440374743570172541",
                    "149040547399085134523628283748476493915",
                    "286074142602130352306206274787889650603",
                    "103783743252185635213364904057627986924",
                    "44523985181067970189430356034193698845",
                    "147519152362249048856319206821814615632",
                    "123610764079018646825744040587986639482",
                    "28491497157451483591521087165952964885",
                    "105828568507482087968053650094540196569",
                    "17155300917969481069162815139569642501",
                    "149565981473750260567049695066475562244",
                    "146674854162478022566779611378330929397",
                    "105484363866334435499468113053511255352",
                    "68161695637551885713435561732280354275",
                    "171075501572669003584871720241871200760",
                    "86740406311077208702415908789574493621",
                    "30847945595387687381109931342760330654",
                    "283094443084957324069752826618452617396",
                    "333470389671590736452140016651734855648",
                    "252195360132147883602387796286157002936",
                    "118425473015913311769827279452339033834",
                    "227482610010153162648074697399567504837",
                    "285656102205084817448009996583162641794",
                    "99864908992219397062017706828922638924"
                  ]
                },
                "source": "https://github.com/curl/curl.git/commit/5ea3145850ebff1dc2b13d17440300a01ca38161",
                "target": {
                  "file": "lib/vtls/vtls.c"
                },
                "deprecated": false,
                "signature_type": "Line",
                "signature_version": "v1"
              },
              {
                "id": "CURL-CVE-2021-22924-eed09ef4",
                "digest": {
                  "threshold": 0.9,
                  "line_hashes": [
                    "253668304373867434131915883306279004843",
                    "6098749495236049606845501337078767604",
                    "113464609033696595307876047359290863092",
                    "161304663542919207107361156362112408225",
                    "157523912409415977762975736989244532732",
                    "37453528659375637919847176861485781957"
                  ]
                },
                "source": "https://github.com/curl/curl.git/commit/5ea3145850ebff1dc2b13d17440300a01ca38161",
                "target": {
                  "file": "lib/vtls/nss.c"
                },
                "deprecated": false,
                "signature_type": "Line",
                "signature_version": "v1"
              },
              {
                "id": "CURL-CVE-2021-22924-f21819f5",
                "digest": {
                  "threshold": 0.9,
                  "line_hashes": [
                    "277716173613333568270939873035932733905",
                    "243994665543004312243278186090819898326",
                    "333476890002922296191737523957188975406",
                    "108423462039099165372816647138974532328",
                    "301060764247840366787304667459951704429",
                    "143735507196655671240203607573988264066",
                    "106868650378686105475000263083078756885",
                    "204940380738548914723598794478466999600",
                    "251236219414679271158809357203900416385",
                    "18636468102943303674640048193104463704",
                    "194848697343772866306771499694126487788",
                    "201842751165840359112817185535784797224",
                    "175665670781964598315672527609109373936"
                  ]
                },
                "source": "https://github.com/curl/curl.git/commit/5ea3145850ebff1dc2b13d17440300a01ca38161",
                "target": {
                  "file": "lib/urldata.h"
                },
                "deprecated": false,
                "signature_type": "Line",
                "signature_version": "v1"
              },
              {
                "id": "CURL-CVE-2021-22924-fb15ac30",
                "digest": {
                  "length": 414,
                  "function_hash": "287691148767475833575965157359727109255"
                },
                "source": "https://github.com/curl/curl.git/commit/5ea3145850ebff1dc2b13d17440300a01ca38161",
                "target": {
                  "file": "lib/vtls/vtls.c",
                  "function": "Curl_free_primary_ssl_config"
                },
                "deprecated": false,
                "signature_type": "Function",
                "signature_version": "v1"
              }
            ],
            "vanir_signatures_modified": "2026-10-25T01:04:44Z"
          }
        }
      ],
      "modified": "2026-10-25T01:04:44.929895187Z",
      "provider": "osv",
      "references": [],
      "provider_metadata": {
        "CWE": {
          "id": "CWE-295",
          "desc": "Improper Certificate Validation"
        },
        "URL": "https://curl.se/docs/CVE-2021-22924.json",
        "www": "https://curl.se/docs/CVE-2021-22924.html",
        "award": {
          "amount": "1200",
          "currency": "USD"
        },
        "issue": "https://hackerone.com/reports/1223565",
        "affects": "both",
        "package": "curl",
        "severity": "Medium",
        "last_affected": "7.77.0"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2021-22924",
        "evidence": "/aliases"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/database_specific/severity"
  },
  "source_id": "core-osv",
  "document_id": 444284,
  "published_at": "2021-07-21T08:00:00+00:00"
}