FTP too eager connection reuse
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
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"
}