new file mode 100644
@@ -0,0 +1,56 @@
+From 44d91a58fabd1de3555e669e12d88040844be716 Mon Sep 17 00:00:00 2001
+From: Daniel Stenberg <daniel@haxx.se>
+Date: Wed, 16 Sep 2026 23:46:44 +0200
+Subject: [PATCH] tftp: verify direction in a few places
+
+Closes #22974
+
+CVE: CVE-2026-92389
+Upstream-Status: Backport [https://github.com/curl/curl/commit/63dd390fab905a239a97e2700532929343ebc4e9]
+
+(cherry picked from commit 63dd390fab905a239a97e2700532929343ebc4e9)
+Signed-off-by: Darsh Kelaiya <dkelaiya@cisco.com>
+---
+ lib/tftp.c | 9 +++++++++
+ 1 file changed, 9 insertions(+)
+
+diff --git a/lib/tftp.c b/lib/tftp.c
+index cc0769b..fca77b7 100644
+--- a/lib/tftp.c
++++ b/lib/tftp.c
+@@ -361,6 +361,9 @@ static CURLcode tftp_tx(struct tftp_conn *state, tftp_event_t event)
+ char *bufptr;
+ bool eos;
+
++ if(!data->state.upload)
++ return CURLE_TFTP_ILLEGAL;
++
+ switch(event) {
+
+ case TFTP_EVENT_ACK:
+@@ -768,10 +771,14 @@ static CURLcode tftp_send_first(struct tftp_conn *state,
+ break;
+
+ case TFTP_EVENT_ACK: /* Connected for transmit */
++ if(!data->state.upload)
++ return CURLE_TFTP_ILLEGAL;
+ result = tftp_connect_for_tx(state, event);
+ break;
+
+ case TFTP_EVENT_DATA: /* Connected for receive */
++ if(data->state.upload)
++ return CURLE_TFTP_ILLEGAL;
+ result = tftp_connect_for_rx(state, event);
+ break;
+
+@@ -1074,6 +1081,8 @@ static CURLcode tftp_receive_packet(struct Curl_easy *data,
+
+ switch(state->event) {
+ case TFTP_EVENT_DATA:
++ if(data->state.upload)
++ return CURLE_TFTP_ILLEGAL;
+ /* Do not pass to the client empty or retransmitted packets */
+ if(state->rbytes > 4 &&
+ (NEXT_BLOCKNUM(state->block) == getrpacketblock(&state->rpacket))) {
+--
+2.35.6
@@ -57,6 +57,7 @@ SRC_URI = "https://curl.se/download/${BP}.tar.xz \
file://CVE-2026-92386_p2.patch \
file://CVE-2026-107928.patch \
file://CVE-2026-87864.patch \
+ file://CVE-2026-92389.patch \
"
SRC_URI:append:class-nativesdk = " \