Skip to content
Heist/ feed
Back to feed
Medium

FTP too eager connection reuse

Type: advisorySources: OSV

libcurl would reuse a previously created FTP connection even when one or more options had been changed that could have made the effective user a different one, thus leading to doing the second transfer with the wrong credentials. libcurl keeps previously used connections in a connection pool for subsequent transfers to reuse if one of them matches the setup. However, several FTP settings were left out from the configuration match checks, making them match too easily. The settings in questions are `CURLOPT_FTP_ACCOUNT`, `CURLOPT_FTP_ALTERNATIVE_TO_USER`, `CURLOPT_FTP_SSL_CCC` and `CURLOPT_USE_SSL` level.

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

Source evidence

FTP too eager connection reuse

core-osv · Original source

Published 20 Mar 2023, 08:00 UTC

libcurl would reuse a previously created FTP connection even when one or more options had been changed that could have made the effective user a different one, thus leading to doing the second transfer with the wrong credentials. libcurl keeps previously used connections in a connection pool for subsequent transfers to reuse if one of them matches the setup. However, several FTP settings were left out from the configuration match checks, making them match too easily. The settings in questions are `CURLOPT_FTP_ACCOUNT`, `CURLOPT_FTP_ALTERNATIVE_TO_USER`, `CURLOPT_FTP_SSL_CCC` and `CURLOPT_USE_SSL` level.

osv:CURL-CVE-2023-27535
Complete source record
{
  "id": "404de46f893a5678bd714461744d11eea6bae736769378ab45666806959f14e0",
  "url": "https://osv.dev/vulnerability/CURL-CVE-2023-27535",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "FTP too eager connection reuse",
    "summary": "libcurl would reuse a previously created FTP connection even when one or more options had been changed that could have made the effective user a different one, thus leading to doing the second transfer with the wrong credentials. libcurl keeps previously used connections in a connection pool for subsequent transfers to reuse if one of them matches the setup. However, several FTP settings were left out from the configuration match checks, making them match too easily. The settings in questions are `CURLOPT_FTP_ACCOUNT`, `CURLOPT_FTP_ALTERNATIVE_TO_USER`, `CURLOPT_FTP_SSL_CCC` and `CURLOPT_USE_SSL` level.",
    "evidence": "osv:CURL-CVE-2023-27535",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CURL-CVE-2023-27535",
      "aliases": [
        "CURL-CVE-2023-27535",
        "CVE-2023-27535"
      ],
      "affected": [
        {
          "ranges": [
            {
              "type": "SEMVER",
              "events": [
                {
                  "introduced": "7.13.0"
                },
                {
                  "fixed": "8.0.0"
                }
              ]
            },
            {
              "repo": "https://github.com/curl/curl.git",
              "type": "GIT",
              "events": [
                {
                  "introduced": "177dbc7be07125582ddb7416dba7140b88ab9f62"
                },
                {
                  "fixed": "8f4608468b890dce2dad9f91d5607ee7e9c1aba1"
                }
              ]
            }
          ],
          "versions": [
            "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",
            "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"
          ],
          "database_specific": {
            "source": "https://curl.se/docs/CURL-CVE-2023-27535.json",
            "vanir_signatures": [
              {
                "id": "CURL-CVE-2023-27535-0ca20558",
                "digest": {
                  "length": 777,
                  "function_hash": "144756889052754724113260167292418157541"
                },
                "source": "https://github.com/curl/curl.git/commit/8f4608468b890dce2dad9f91d5607ee7e9c1aba1",
                "target": {
                  "file": "lib/ftp.c",
                  "function": "ftp_setup_connection"
                },
                "deprecated": false,
                "signature_type": "Function",
                "signature_version": "v1"
              },
              {
                "id": "CURL-CVE-2023-27535-5a3f4eb2",
                "digest": {
                  "threshold": 0.9,
                  "line_hashes": [
                    "249051371496294325293418146167441131792",
                    "316907984681467913074278740758804087811",
                    "281964232941739306942312270938929632981",
                    "314513495324286136254649528906640218513",
                    "59818866099852585929691621550690602494",
                    "189398374495080186353900728924496061138",
                    "49017665737998123067433446619972586829"
                  ]
                },
                "source": "https://github.com/curl/curl.git/commit/8f4608468b890dce2dad9f91d5607ee7e9c1aba1",
                "target": {
                  "file": "lib/ftp.h"
                },
                "deprecated": false,
                "signature_type": "Line",
                "signature_version": "v1"
              },
              {
                "id": "CURL-CVE-2023-27535-80d619dd",
                "digest": {
                  "threshold": 0.9,
                  "line_hashes": [
                    "332259773312131520347784395960594867798",
                    "247017993323766348137310678584532769631",
                    "22308357113486268949295633834223453721",
                    "282282641468099021671143748795016787753",
                    "238075788874476604671325002963907786373",
                    "224917612884175414508469408838208632177",
                    "123998458353505256223391052022143096594"
                  ]
                },
                "source": "https://github.com/curl/curl.git/commit/8f4608468b890dce2dad9f91d5607ee7e9c1aba1",
                "target": {
                  "file": "lib/url.c"
                },
                "deprecated": false,
                "signature_type": "Line",
                "signature_version": "v1"
              },
              {
                "id": "CURL-CVE-2023-27535-8739c594",
                "digest": {
                  "length": 58702,
                  "function_hash": "287625333089971616187303518351041995084"
                },
                "source": "https://github.com/curl/curl.git/commit/8f4608468b890dce2dad9f91d5607ee7e9c1aba1",
                "target": {
                  "file": "lib/setopt.c",
                  "function": "Curl_vsetopt"
                },
                "deprecated": false,
                "signature_type": "Function",
                "signature_version": "v1"
              },
              {
                "id": "CURL-CVE-2023-27535-abf50e41",
                "digest": {
                  "threshold": 0.9,
                  "line_hashes": [
                    "74109690018164856253709935642972399407",
                    "75165499141075901214628231832880523375",
                    "110851002141732273096457901093342829072",
                    "180457837491557558910985949895831641599"
                  ]
                },
                "source": "https://github.com/curl/curl.git/commit/8f4608468b890dce2dad9f91d5607ee7e9c1aba1",
                "target": {
                  "file": "lib/setopt.c"
                },
                "deprecated": false,
                "signature_type": "Line",
                "signature_version": "v1"
              },
              {
                "id": "CURL-CVE-2023-27535-cb963ebf",
                "digest": {
                  "length": 546,
                  "function_hash": "235731259646339135720910914033614136221"
                },
                "source": "https://github.com/curl/curl.git/commit/8f4608468b890dce2dad9f91d5607ee7e9c1aba1",
                "target": {
                  "file": "lib/ftp.c",
                  "function": "ftp_disconnect"
                },
                "deprecated": false,
                "signature_type": "Function",
                "signature_version": "v1"
              },
              {
                "id": "CURL-CVE-2023-27535-db767618",
                "digest": {
                  "threshold": 0.9,
                  "line_hashes": [
                    "98607751071061447667102384908952080537",
                    "126075237465289502977227077682288377449",
                    "115053390739190186024814476981529991660",
                    "252482238254390640024046494066099538032",
                    "125734872709257450007733563406606533180",
                    "246416999668734211632054196818464283146",
                    "299159724073895036453087682718363295772",
                    "153163230545241619422145211833813789150",
                    "234914403891334043182449190585115321460",
                    "310598283540096646520017203596794268563",
                    "186346695731389008844458887596826507733",
                    "213841626365942384945289272722400034984",
                    "289314043101237170926513048805797970261",
                    "224256726566915586364990289283517722913",
                    "164416533207039211609920938841404295833"
                  ]
                },
                "source": "https://github.com/curl/curl.git/commit/8f4608468b890dce2dad9f91d5607ee7e9c1aba1",
                "target": {
                  "file": "lib/ftp.c"
                },
                "deprecated": false,
                "signature_type": "Line",
                "signature_version": "v1"
              },
              {
                "id": "CURL-CVE-2023-27535-e13320eb",
                "digest": {
                  "length": 7619,
                  "function_hash": "76320048837308618459250607276719881293"
                },
                "source": "https://github.com/curl/curl.git/commit/8f4608468b890dce2dad9f91d5607ee7e9c1aba1",
                "target": {
                  "file": "lib/url.c",
                  "function": "ConnectionExists"
                },
                "deprecated": false,
                "signature_type": "Function",
                "signature_version": "v1"
              },
              {
                "id": "CURL-CVE-2023-27535-f5ba771b",
                "digest": {
                  "threshold": 0.9,
                  "line_hashes": [
                    "16326998884989052871149855688495315716",
                    "217575825825678641381432349213129179279",
                    "97693253926019497739106840961767973719",
                    "262915691538625425481332498558368980621",
                    "28006377176174725601274651049959845431",
                    "311215650137085283969731094994410715046",
                    "39038549729658767785283109170598690744",
                    "340267614596093670905078009377547099794"
                  ]
                },
                "source": "https://github.com/curl/curl.git/commit/8f4608468b890dce2dad9f91d5607ee7e9c1aba1",
                "target": {
                  "file": "lib/urldata.h"
                },
                "deprecated": false,
                "signature_type": "Line",
                "signature_version": "v1"
              }
            ],
            "vanir_signatures_modified": "2026-10-25T01:04:37Z"
          }
        }
      ],
      "modified": "2026-10-25T01:04:37.328657852Z",
      "provider": "osv",
      "references": [],
      "provider_metadata": {
        "CWE": {
          "id": "CWE-305",
          "desc": "Authentication Bypass by Primary Weakness"
        },
        "URL": "https://curl.se/docs/CVE-2023-27535.json",
        "www": "https://curl.se/docs/CVE-2023-27535.html",
        "award": {
          "amount": "2400",
          "currency": "USD"
        },
        "issue": "https://hackerone.com/reports/1892780",
        "affects": "both",
        "package": "curl",
        "severity": "Medium",
        "last_affected": "7.88.1"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2023-27535",
        "evidence": "/aliases"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/database_specific/severity"
  },
  "source_id": "core-osv",
  "document_id": 444267,
  "published_at": "2023-03-20T08:00:00+00:00"
}