Skip to content

Commit 0f0ae5b

Browse files
azurelinux-securityKanishk-Bansaljykanase
authored
[AutoPR- Security] Patch nodejs18 for CVE-2026-27135 [HIGH] (#16251)
Co-authored-by: Kanishk Bansal <103916909+Kanishk-Bansal@users.noreply.github.com> Co-authored-by: jykanase <v-jykanase@microsoft.com>
1 parent 98b359e commit 0f0ae5b

2 files changed

Lines changed: 122 additions & 1 deletion

File tree

SPECS/nodejs/CVE-2026-27135.patch

Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
From 5c7df8fa815ac1004d9ecb9d1f7595c4d37f46e1 Mon Sep 17 00:00:00 2001
2+
From: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
3+
Date: Wed, 18 Feb 2026 18:04:30 +0900
4+
Subject: [PATCH] Fix missing iframe->state validations to avoid assertion
5+
failure
6+
7+
Upstream Patch Reference: https://github.com/nghttp2/nghttp2/commit/5c7df8fa815ac1004d9ecb9d1f7595c4d37f46e1.patch
8+
---
9+
deps/nghttp2/lib/nghttp2_session.c | 40 +++++++++++++++++++++++++++---
10+
1 file changed, 36 insertions(+), 4 deletions(-)
11+
12+
diff --git a/deps/nghttp2/lib/nghttp2_session.c b/deps/nghttp2/lib/nghttp2_session.c
13+
index 004a4dff..3f1fab3a 100644
14+
--- a/deps/nghttp2/lib/nghttp2_session.c
15+
+++ b/deps/nghttp2/lib/nghttp2_session.c
16+
@@ -6079,6 +6079,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
17+
return rv;
18+
}
19+
20+
+ if (iframe->state == NGHTTP2_IB_IGN_ALL) {
21+
+ return (nghttp2_ssize)inlen;
22+
+ }
23+
+
24+
on_begin_frame_called = 1;
25+
26+
rv = session_process_headers_frame(session);
27+
@@ -6445,6 +6449,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
28+
if (nghttp2_is_fatal(rv)) {
29+
return rv;
30+
}
31+
+
32+
+ if (iframe->state == NGHTTP2_IB_IGN_ALL) {
33+
+ return (nghttp2_ssize)inlen;
34+
+ }
35+
}
36+
}
37+
38+
@@ -6701,6 +6709,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
39+
return rv;
40+
}
41+
42+
+ if (iframe->state == NGHTTP2_IB_IGN_ALL) {
43+
+ return (nghttp2_ssize)inlen;
44+
+ }
45+
+
46+
session_inbound_frame_reset(session);
47+
48+
break;
49+
@@ -7004,6 +7016,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
50+
if (nghttp2_is_fatal(rv)) {
51+
return rv;
52+
}
53+
+
54+
+ if (iframe->state == NGHTTP2_IB_IGN_ALL) {
55+
+ return (nghttp2_ssize)inlen;
56+
+ }
57+
} else {
58+
iframe->state = NGHTTP2_IB_IGN_HEADER_BLOCK;
59+
}
60+
@@ -7169,13 +7185,17 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
61+
rv = session->callbacks.on_data_chunk_recv_callback(
62+
session, iframe->frame.hd.flags, iframe->frame.hd.stream_id,
63+
in - readlen, (size_t)data_readlen, session->user_data);
64+
- if (rv == NGHTTP2_ERR_PAUSE) {
65+
- return (nghttp2_ssize)(in - first);
66+
- }
67+
-
68+
if (nghttp2_is_fatal(rv)) {
69+
return NGHTTP2_ERR_CALLBACK_FAILURE;
70+
}
71+
+
72+
+ if (iframe->state == NGHTTP2_IB_IGN_ALL) {
73+
+ return (nghttp2_ssize)inlen;
74+
+ }
75+
+
76+
+ if (rv == NGHTTP2_ERR_PAUSE) {
77+
+ return (nghttp2_ssize)(in - first);
78+
+ }
79+
}
80+
}
81+
}
82+
@@ -7256,6 +7276,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
83+
return rv;
84+
}
85+
86+
+ if (iframe->state == NGHTTP2_IB_IGN_ALL) {
87+
+ return (nghttp2_ssize)inlen;
88+
+ }
89+
+
90+
if (rv != 0) {
91+
busy = 1;
92+
93+
@@ -7274,6 +7298,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
94+
return rv;
95+
}
96+
97+
+ if (iframe->state == NGHTTP2_IB_IGN_ALL) {
98+
+ return (nghttp2_ssize)inlen;
99+
+ }
100+
+
101+
session_inbound_frame_reset(session);
102+
103+
break;
104+
@@ -7302,6 +7330,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,
105+
return rv;
106+
}
107+
108+
+ if (iframe->state == NGHTTP2_IB_IGN_ALL) {
109+
+ return (nghttp2_ssize)inlen;
110+
+ }
111+
+
112+
session_inbound_frame_reset(session);
113+
114+
break;
115+
--
116+
2.45.4
117+

SPECS/nodejs/nodejs18.spec

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ Name: nodejs18
66
# WARNINGS: MUST check and update the 'npm_version' macro for every version update of this package.
77
# The version of NPM can be found inside the sources under 'deps/npm/package.json'.
88
Version: 18.20.3
9-
Release: 11%{?dist}
9+
Release: 12%{?dist}
1010
License: BSD and MIT and Public Domain and NAIST-2003 and Artistic-2.0
1111
Group: Applications/System
1212
Vendor: Microsoft Corporation
@@ -30,6 +30,7 @@ Patch10: CVE-2025-7656.patch
3030
Patch11: CVE-2025-5889.patch
3131
Patch12: CVE-2025-5222.patch
3232
Patch13: CVE-2025-55131.patch
33+
Patch14: CVE-2026-27135.patch
3334
BuildRequires: brotli-devel
3435
BuildRequires: coreutils >= 8.22
3536
BuildRequires: gcc
@@ -130,6 +131,9 @@ make cctest
130131
%{_datadir}/systemtap/tapset/node.stp
131132

132133
%changelog
134+
* Fri Mar 20 2026 Azure Linux Security Servicing Account <azurelinux-security@microsoft.com> - 18.20.3-12
135+
- Patch for CVE-2026-27135
136+
133137
* Fri Jan 23 2026 Aditya Singh <v-aditysing@microsoft.com> - 18.20.3-11
134138
- Patch for CVE-2025-55131
135139

0 commit comments

Comments
 (0)