{"id":"CURL-CVE-2026-92389","summary":"TFTP direction confusion","details":"libcurl's TFTP state machine fails to validate state transitions against the\nrequested transfer direction, accepting opening server responses for both\nreads and writes interchangeably. A malicious TFTP server can respond to a\ndownload request in a way that forces the client into transmit mode, prompting\nlibcurl to consume and transmit data from the handle's persistent\n`CURLOPT_READDATA` pointer - including data remaining from unrelated prior\noperations, such as an HTTP POST request executed on a reused handle.","aliases":["CVE-2026-92389"],"modified":"2026-10-14T19:02:58.519370969Z","published":"2026-10-14T08:00:00Z","database_specific":{"affects":"lib","URL":"https://curl.se/docs/CVE-2026-92389.json","www":"https://curl.se/docs/CVE-2026-92389.html","issue":"https://hackerone.com/reports/4022568","CWE":{"id":"CWE-200","desc":"Exposure of Sensitive Information to an Unauthorized Actor"},"last_affected":"8.22.0","severity":"Low","package":"curl"},"affected":[{"ranges":[{"type":"SEMVER","events":[{"introduced":"7.15.0"},{"fixed":"8.14.3"},{"introduced":"8.15.0"},{"fixed":"8.16.2"},{"introduced":"8.17.0"},{"fixed":"8.20.2"},{"introduced":"8.21.0"},{"fixed":"8.23.0"}]},{"type":"GIT","repo":"https://github.com/curl/curl.git","events":[{"introduced":"56d9624b566ac15ffb4b4b6eef220a5000b767e0"},{"fixed":"63dd390fab905a239a97e2700532929343ebc4e9"}]}],"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","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","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","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"],"database_specific":{"source":"https://curl.se/docs/CURL-CVE-2026-92389.json","vanir_signatures":[{"deprecated":false,"digest":{"function_hash":"126715975532720111517959535471988949594","length":3057},"id":"CURL-CVE-2026-92389-178dd8b6","signature_type":"Function","signature_version":"v1","source":"https://github.com/curl/curl.git/commit/63dd390fab905a239a97e2700532929343ebc4e9","target":{"file":"lib/tftp.c","function":"tftp_send_first"}},{"target":{"function":"tftp_tx","file":"lib/tftp.c"},"deprecated":false,"digest":{"length":3133,"function_hash":"34361965089964356088835215325594431379"},"id":"CURL-CVE-2026-92389-27a716f8","signature_type":"Function","signature_version":"v1","source":"https://github.com/curl/curl.git/commit/63dd390fab905a239a97e2700532929343ebc4e9"},{"id":"CURL-CVE-2026-92389-69b29f4c","signature_type":"Line","signature_version":"v1","source":"https://github.com/curl/curl.git/commit/63dd390fab905a239a97e2700532929343ebc4e9","target":{"file":"lib/tftp.c"},"deprecated":false,"digest":{"line_hashes":["213941317550669709918500911202531654513","35863030846702792639856607557407963268","178703773221645595706614520454913989288","293691376477657943694425699409478412856","122942944211781658853321733045433026828","237224437274817058680788368080529376881","178387386025722784682918500492103308442","57550727752228984316738521433390636273","118571915241130250038855293273996087763","169248890489335299018722612150426794081","69787676918967109686887743133164846997","109714572990670583593454130630114093016","48309513796876514570774305896511421520","109621477506121803007201949863319434574"],"threshold":0.9}},{"target":{"file":"lib/tftp.c","function":"tftp_receive_packet"},"deprecated":false,"digest":{"function_hash":"158624474960533623644373297270543747832","length":1941},"id":"CURL-CVE-2026-92389-c91a0d38","signature_type":"Function","signature_version":"v1","source":"https://github.com/curl/curl.git/commit/63dd390fab905a239a97e2700532929343ebc4e9"}],"vanir_signatures_modified":"2026-10-14T19:02:58Z"}}],"schema_version":"1.9.0","credits":[{"name":"Joshua Rogers (Aisle Research)","type":"FINDER"},{"name":"Daniel Stenberg","type":"REMEDIATION_DEVELOPER"}]}