{"id":"CURL-CVE-2026-92388","summary":"FTP wildcard write callback mixup","details":"When an FTP wildcard `LIST` operation fails, libcurl omits the restoration\npath meant for successful listings, leaving the write callback set to the\ninternal listing parser and the write callback data pointing directly to the\neasy handle. Subsequent reuse of this handle triggers an immediate crash, and\ncloning it via `curl_easy_duphandle()` copies this corrupted state into the\nduplicate. If the original handle is subsequently freed, executing a transfer\non the cloned handle causes a heap use-after-free read against the dangling\nhandle reference; alternatively, reusing the original or cloned handle while\nchanging only `CURLOPT_WRITEDATA` (and omitting `CURLOPT_WRITEFUNCTION`)\nresults in type confusion, forcing the internal parser to interpret incoming\nserver response bytes into memory at the application-supplied write data\npointer.","aliases":["CVE-2026-92388"],"modified":"2026-10-14T07:04:24.926553205Z","published":"2026-10-14T08:00:00Z","database_specific":{"affects":"lib","URL":"https://curl.se/docs/CVE-2026-92388.json","www":"https://curl.se/docs/CVE-2026-92388.html","issue":"https://hackerone.com/reports/4022070","CWE":{"desc":"Use After Free","id":"CWE-416"},"last_affected":"8.22.0","severity":"Low","package":"curl"},"affected":[{"ranges":[{"type":"SEMVER","events":[{"introduced":"7.21.0"},{"fixed":"8.23.0"}]},{"type":"GIT","repo":"https://github.com/curl/curl.git","events":[{"introduced":"0825cd80a62c21725fb3615f1fdd3aa6cc5f0f34"},{"fixed":"ba8f8a7f27a5c5e19e4ef212b90b35a93559163e"}]}],"versions":["8.22.0","8.21.0","8.20.0","8.19.0","8.18.0","8.17.0","8.16.0","8.15.0","8.14.1","8.14.0","8.13.0","8.12.1","8.12.0","8.11.1","8.11.0","8.10.1","8.10.0","8.9.1","8.9.0","8.8.0","8.7.1","8.7.0","8.6.0","8.5.0","8.4.0","8.3.0","8.2.1","8.2.0","8.1.2","8.1.1","8.1.0","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","curl-8_22_0","rc-8_22_0-3","rc-8_22_0-2","rc-8_22_0-1","curl-8_21_0","rc-8_21_0-3","rc-8_21_0-2","rc-8_21_0-1","curl-8_20_0","rc-8_20_0-3","rc-8_20_0-2","rc-8_20_0-1","curl-8_19_0","rc-8_19_0-3","rc-8_19_0-2","rc-8_19_0-1","curl-8_18_0","rc-8_18_0-3","rc-8_18_0-2","rc-8_18_0-1","curl-8_17_0","curl-8_16_0","curl-8_15_0","curl-8_14_1","curl-8_14_0","curl-8_13_0","curl-8_12_1","curl-8_12_0","curl-8_11_1","curl-8_11_0","curl-8_10_1","curl-8_10_0","curl-8_9_1","curl-8_9_0","curl-8_8_0","curl-8_7_1","curl-8_7_0","curl-8_6_0","curl-8_5_0","tiny-curl-8_4_0","curl-8_4_0","curl-8_3_0","curl-8_2_1","curl-8_2_0","curl-8_1_2","curl-8_1_1","curl-8_1_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"],"database_specific":{"source":"https://curl.se/docs/CURL-CVE-2026-92388.json","vanir_signatures":[{"deprecated":false,"digest":{"function_hash":"143061753882336494767680983486733687706","length":635},"id":"CURL-CVE-2026-92388-37eddad8","signature_type":"Function","signature_version":"v1","source":"https://github.com/curl/curl.git/commit/ba8f8a7f27a5c5e19e4ef212b90b35a93559163e","target":{"file":"lib/cw-out.c","function":"cw_get_writefunc"}},{"source":"https://github.com/curl/curl.git/commit/ba8f8a7f27a5c5e19e4ef212b90b35a93559163e","target":{"file":"lib/ftp.c"},"deprecated":false,"digest":{"line_hashes":["77727340163860766620554115872749740762","215965894333253655639099792401512670376","338709366524257140505242780017015014304","23029853775342374852775865103147536005","311180633746911954006935032641693793537","80350778472714746253146260024223957333","222609923567134588938204587869455767597","169197121860397991234228114410720690241","317286478409241654378978163462513032399","35700631642782495486784183851604008463","120880201332487352896192931346932531400","82385839063148637403254157976501332086","136748861001560477059610996662755042352","196289514771246689056811597931181018401"],"threshold":0.9},"id":"CURL-CVE-2026-92388-3b791e24","signature_type":"Line","signature_version":"v1"},{"deprecated":false,"digest":{"line_hashes":["114755344196661425492569263542981357873","216946763721863210338275750488593142941","162416506894139747275011875526134287056","183527793812269515122717277074107565725","28961063934339295747761129566909650945"],"threshold":0.9},"id":"CURL-CVE-2026-92388-4a4e8297","signature_type":"Line","signature_version":"v1","source":"https://github.com/curl/curl.git/commit/ba8f8a7f27a5c5e19e4ef212b90b35a93559163e","target":{"file":"lib/cw-out.c"}},{"deprecated":false,"digest":{"line_hashes":["130817863030890983118293296577638000062","274140575119242962993643831035280188434","5841000899797701248683675423466086736","258286239204315396966363537849735098229","103146799315916396288288599903965856533","111949090213710644811275320467051447277","300345411605006602316296185193936705877"],"threshold":0.9},"id":"CURL-CVE-2026-92388-638f98b3","signature_type":"Line","signature_version":"v1","source":"https://github.com/curl/curl.git/commit/ba8f8a7f27a5c5e19e4ef212b90b35a93559163e","target":{"file":"lib/ftp-int.h"}},{"deprecated":false,"digest":{"line_hashes":["79512658832897824693821628832367898633","157747559540249585786259191057782044418","272747727497140786403123478759168137600"],"threshold":0.9},"id":"CURL-CVE-2026-92388-94de10bd","signature_type":"Line","signature_version":"v1","source":"https://github.com/curl/curl.git/commit/ba8f8a7f27a5c5e19e4ef212b90b35a93559163e","target":{"file":"lib/ftplistparser.c"}},{"digest":{"length":1639,"function_hash":"267106453770063182066636679835557640"},"id":"CURL-CVE-2026-92388-c1b74874","signature_type":"Function","signature_version":"v1","source":"https://github.com/curl/curl.git/commit/ba8f8a7f27a5c5e19e4ef212b90b35a93559163e","target":{"function":"init_wc_data","file":"lib/ftp.c"},"deprecated":false},{"deprecated":false,"digest":{"line_hashes":["329684666632550105705617958310312955708","256551381214279993971512015697635146721","19211126177995515624582079239923789260","291283242837785715977183739621750759514","26612390542160893402792408707125809158","4050957483259296026291694455142709245"],"threshold":0.9},"id":"CURL-CVE-2026-92388-c2a28f8a","signature_type":"Line","signature_version":"v1","source":"https://github.com/curl/curl.git/commit/ba8f8a7f27a5c5e19e4ef212b90b35a93559163e","target":{"file":"lib/ftplistparser.h"}},{"signature_version":"v1","source":"https://github.com/curl/curl.git/commit/ba8f8a7f27a5c5e19e4ef212b90b35a93559163e","target":{"file":"lib/ftp.c","function":"wc_statemach"},"deprecated":false,"digest":{"function_hash":"41863799115737491445661384955522584312","length":3010},"id":"CURL-CVE-2026-92388-d137e3bd","signature_type":"Function"}],"vanir_signatures_modified":"2026-10-14T07:04:24Z"}}],"schema_version":"1.9.0","credits":[{"name":"Joshua Rogers (Aisle Research)","type":"FINDER"},{"name":"Daniel Stenberg","type":"REMEDIATION_DEVELOPER"}]}