{"id":2219518,"url":"http://patchwork.ozlabs.org/api/patches/2219518/?format=json","web_url":"http://patchwork.ozlabs.org/project/buildroot/patch/20260403084221.35659-1-thomas.perale@mind.be/","project":{"id":27,"url":"http://patchwork.ozlabs.org/api/projects/27/?format=json","name":"Buildroot development","link_name":"buildroot","list_id":"buildroot.buildroot.org","list_email":"buildroot@buildroot.org","web_url":"","scm_url":"","webscm_url":"","list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<20260403084221.35659-1-thomas.perale@mind.be>","list_archive_url":null,"date":"2026-04-03T08:42:21","name":"[1/1] package/nghttp2: patch CVE-2026-27135","commit_ref":null,"pull_url":null,"state":"superseded","archived":false,"hash":"cb052cd5c4363ded5bff0b77daf43e9a2788a5d5","submitter":{"id":87308,"url":"http://patchwork.ozlabs.org/api/people/87308/?format=json","name":"Thomas Perale","email":"thomas.perale@mind.be"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/buildroot/patch/20260403084221.35659-1-thomas.perale@mind.be/mbox/","series":[{"id":498601,"url":"http://patchwork.ozlabs.org/api/series/498601/?format=json","web_url":"http://patchwork.ozlabs.org/project/buildroot/list/?series=498601","date":"2026-04-03T08:42:21","name":"[1/1] package/nghttp2: patch CVE-2026-27135","version":1,"mbox":"http://patchwork.ozlabs.org/series/498601/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2219518/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2219518/checks/","tags":{},"related":[],"headers":{"Return-Path":"<buildroot-bounces@buildroot.org>","X-Original-To":["incoming-buildroot@patchwork.ozlabs.org","buildroot@buildroot.org"],"Delivered-To":["patchwork-incoming-buildroot@legolas.ozlabs.org","buildroot@buildroot.org"],"Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=buildroot.org header.i=@buildroot.org\n header.a=rsa-sha256 header.s=default header.b=ow5/eNzi;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=buildroot.org\n (client-ip=2605:bc80:3010::137; helo=smtp4.osuosl.org;\n envelope-from=buildroot-bounces@buildroot.org; receiver=patchwork.ozlabs.org)"],"Received":["from smtp4.osuosl.org (smtp4.osuosl.org [IPv6:2605:bc80:3010::137])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1) server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fnC0803Gpz1yD3\n\tfor <incoming-buildroot@patchwork.ozlabs.org>;\n Fri, 03 Apr 2026 19:42:31 +1100 (AEDT)","from localhost (localhost [127.0.0.1])\n\tby smtp4.osuosl.org (Postfix) with ESMTP id 4E6D740CE5;\n\tFri,  3 Apr 2026 08:42:30 +0000 (UTC)","from smtp4.osuosl.org ([127.0.0.1])\n by localhost (smtp4.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id 7Zfe1Slauh_Q; Fri,  3 Apr 2026 08:42:29 +0000 (UTC)","from lists1.osuosl.org (lists1.osuosl.org [140.211.166.142])\n\tby smtp4.osuosl.org (Postfix) with ESMTP id 5DF3440CE7;\n\tFri,  3 Apr 2026 08:42:29 +0000 (UTC)","from smtp1.osuosl.org (smtp1.osuosl.org [140.211.166.138])\n by lists1.osuosl.org (Postfix) with ESMTP id D0D852CC\n for <buildroot@buildroot.org>; Fri,  3 Apr 2026 08:42:27 +0000 (UTC)","from localhost (localhost [127.0.0.1])\n by smtp1.osuosl.org (Postfix) with ESMTP id CE1CD8132A\n for <buildroot@buildroot.org>; Fri,  3 Apr 2026 08:42:27 +0000 (UTC)","from smtp1.osuosl.org ([127.0.0.1])\n by localhost (smtp1.osuosl.org [127.0.0.1]) (amavis, port 10024) with ESMTP\n id D4aDfyQ3i6Xe for <buildroot@buildroot.org>;\n Fri,  3 Apr 2026 08:42:26 +0000 (UTC)","from mail-wr1-x42a.google.com (mail-wr1-x42a.google.com\n [IPv6:2a00:1450:4864:20::42a])\n by smtp1.osuosl.org (Postfix) with ESMTPS id 8B80D80F40\n for <buildroot@buildroot.org>; Fri,  3 Apr 2026 08:42:24 +0000 (UTC)","by mail-wr1-x42a.google.com with SMTP id\n ffacd0b85a97d-43cfbd17589so1304588f8f.0\n for <buildroot@buildroot.org>; Fri, 03 Apr 2026 01:42:24 -0700 (PDT)","from arch ([79.132.232.220]) by smtp.gmail.com with ESMTPSA id\n ffacd0b85a97d-43d1e4e52a0sm13936040f8f.30.2026.04.03.01.42.21\n for <buildroot@buildroot.org>\n (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);\n Fri, 03 Apr 2026 01:42:22 -0700 (PDT)"],"X-Virus-Scanned":["amavis at osuosl.org","amavis at osuosl.org"],"X-Comment":"SPF check N/A for local connections - client-ip=140.211.166.142;\n helo=lists1.osuosl.org; envelope-from=buildroot-bounces@buildroot.org;\n receiver=<UNKNOWN> ","DKIM-Filter":["OpenDKIM Filter v2.11.0 smtp4.osuosl.org 5DF3440CE7","OpenDKIM Filter v2.11.0 smtp1.osuosl.org 8B80D80F40"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=buildroot.org;\n\ts=default; t=1775205749;\n\tbh=w379+XbIsaBDNgQERWr3QPhg2kbS5wnNoRERaX0pnB8=;\n\th=To:Date:Subject:List-Id:List-Unsubscribe:List-Archive:List-Post:\n\t List-Help:List-Subscribe:From:Reply-To:From;\n\tb=ow5/eNziFKE/ASC6JvH2Zh2QjOmIzyqq8e/CREZIBy3OuaWBJnFUsA45ub9rpeX5c\n\t pIfAu3ioPBupH5Nu0tgQLg9e/2nAaF2d8EBA9FBkg4/zhMkOKR59GfVrRpJK3qBE1S\n\t 81FJRGwyvSKKZIq55jL39Os3hnGwtaXiQ3UlcmbsJYOFslOKxVse6Z6YTb3thT9c2H\n\t hfasBTLmNCr/JLP0x120zE5Yj8RSdUoVT1+6P9a9+dZeFe5sPrynZEirzlVRdQkxbK\n\t aX1WJK71X1JzsJqF1KWNuTYG0TL9Ul6xEYhpn6+ARabcwZlSLkhPJ409KR4ZkwGgwi\n\t cZU6TLMraeN+w==","Received-SPF":"Pass (mailfrom) identity=mailfrom;\n client-ip=2a00:1450:4864:20::42a; helo=mail-wr1-x42a.google.com;\n envelope-from=thomas.perale@essensium.com; receiver=<UNKNOWN>","DMARC-Filter":"OpenDMARC Filter v1.4.2 smtp1.osuosl.org 8B80D80F40","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=1e100.net; s=20251104; t=1775205743; x=1775810543;\n h=content-transfer-encoding:mime-version:message-id:date:subject:to\n :from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id\n :reply-to;\n bh=9+w1x+PkIWu8g+70ZUMmR18pyahDp04donL3DACjSHM=;\n b=ll8yauXoNZUEibyvvb0Fh3xKDoNYnLQJ3j5IQBKv75yzaKaPM2UmWF/9It4IcOI0kR\n btLfLcQ9FaVYJ1k6YGux8XzXC2Eoq+rANKwB41DNUmcziyetoI8A7g6pqnttp8X/XveW\n IAqAAJOBG/9cJh5woGxUm45Eh8TsOSPQQiD4K54WrygoR6asN3mmgzyge3+BNHxpran+\n UXhQq+3VsU8Xq2uP19Efi7duW9wr3EaCC52Hhizh1ypj7s3EL5dBnUDo3NLiAcsXV06s\n KdcULxxDplNSH2ZZ7PExCUx3AAPeUVy8KnAIaBj92bGbrpfQXtjG3yf5JlT8DTU+DZj+\n mg/w==","X-Gm-Message-State":"AOJu0YwZcYysBif93vjOJy/+psULcTMu1Yz2JC2GynWvRkVSHeIKJJsA\n 9bhr5wE6VmcKL6RcZxE2tMtkJWNigOEWIpM8gabUO0NERfAi/qW33CuTQQdAsIjCVYPPkTZxan4\n 1rR3fT7Q=","X-Gm-Gg":"AeBDievBYo83A73EiaO3VSAjPPlIGqpP0s3jETF3Ofbv0brL7fBeLKqQdBLXZkPjyr/\n yie1gtYMYIiaf1TudpXwAYyKXXkz+H/6T6Ac8jSWNWx0qAesXCxfh6SGNDBnTH4KV2g+ImVbMdx\n tqdnofL+S35nECozS0BOYcptfmV0Om/SegJpECn/STsJzSyq70z+zB+qL65e0eY5OROGavONKAz\n em/YA/gsMJj8s48dyeyyz7zPe8s+Pbin4dFSyYqwc7XaTuhmlgROZQFab3Ka3i72RVwDiQ2MOGN\n 7B4Dk3s2YiY7BGsSc5TBkUWiZPeTTS4tDjmJu9hM5GW8IBvj9/9hKZ2UqyLFfSEw1mXD3zgCWZz\n p4Be/2Qf/YgM2WnzfPnQUEFGxn+8ROZJfydUr03B1Kt4dQmChU2CkDzwBatb/MuZvtW0QrZec+t\n YNvq1bozxMhfRBLut5","X-Received":"by 2002:a05:6000:238a:b0:43b:3bed:f34 with SMTP id\n ffacd0b85a97d-43d292e70a9mr3853352f8f.30.1775205742544;\n Fri, 03 Apr 2026 01:42:22 -0700 (PDT)","To":"buildroot@buildroot.org","Date":"Fri,  3 Apr 2026 10:42:21 +0200","Message-ID":"<20260403084221.35659-1-thomas.perale@mind.be>","X-Mailer":"git-send-email 2.53.0","MIME-Version":"1.0","X-Mailman-Original-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n d=mind.be; s=google; t=1775205743; x=1775810543; darn=buildroot.org;\n h=content-transfer-encoding:mime-version:message-id:date:subject:to\n :from:from:to:cc:subject:date:message-id:reply-to;\n bh=9+w1x+PkIWu8g+70ZUMmR18pyahDp04donL3DACjSHM=;\n b=aquE97XwPgpAXYXvWpi0Z9GTXcY5cGIOacFlLZ9vLJqY8zKbx1WSDTQAaiElpqEQBn\n qSU+GzgtB+lxnLc1pv8cEHAeBNhDrZOCPgA5InfF743d6Od/YKrZ96AxljaodJc3lMzP\n eVkkP1WDiTjuBMO82omNY0KWyeJ5jYSbHhS0Wh9mJniW0g2ke7ApdcJa2fwmMRVlFbde\n 2pHGuIGKRLylZwjDYBbdlACI5nNg7Z/5R/WpBNJHQTTPQy8nzhGkVLWC4UPokncA+cbd\n oK0p165KZWLfsZY6XEFRXDWRiGeqW0arY14sAO3Xg0ZnxawWLLV2qwCYiY/oIJG9pbVC\n aPFA==","X-Mailman-Original-Authentication-Results":["smtp1.osuosl.org;\n dmarc=pass (p=quarantine dis=none)\n header.from=mind.be","smtp1.osuosl.org;\n dkim=pass (2048-bit key,\n unprotected) header.d=mind.be header.i=@mind.be header.a=rsa-sha256\n header.s=google header.b=aquE97Xw"],"Subject":"[Buildroot] [PATCH 1/1] package/nghttp2: patch CVE-2026-27135","X-BeenThere":"buildroot@buildroot.org","X-Mailman-Version":"2.1.30","Precedence":"list","List-Id":"Discussion and development of buildroot <buildroot.buildroot.org>","List-Unsubscribe":"<https://lists.buildroot.org/mailman/options/buildroot>,\n <mailto:buildroot-request@buildroot.org?subject=unsubscribe>","List-Archive":"<http://lists.buildroot.org/pipermail/buildroot/>","List-Post":"<mailto:buildroot@buildroot.org>","List-Help":"<mailto:buildroot-request@buildroot.org?subject=help>","List-Subscribe":"<https://lists.buildroot.org/mailman/listinfo/buildroot>,\n <mailto:buildroot-request@buildroot.org?subject=subscribe>","From":"Thomas Perale via buildroot <buildroot@buildroot.org>","Reply-To":"Thomas Perale <thomas.perale@mind.be>","Content-Type":"text/plain; charset=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"buildroot-bounces@buildroot.org","Sender":"\"buildroot\" <buildroot-bounces@buildroot.org>"},"content":"Fixes the following vulnerability:\n\n- CVE-2026-27135:\n    nghttp2 is an implementation of the Hypertext Transfer Protocol\n    version 2 in C. Prior to version 1.68.1, the nghttp2 library stops\n    reading the incoming data when user facing public API\n    `nghttp2_session_terminate_session` or\n    `nghttp2_session_terminate_session2` is called by the application.\n    They might be called internally by the library when it detects the\n    situation that is subject to connection error. Due to the missing\n    internal state validation, the library keeps reading the rest of the\n    data after one of those APIs is called. Then receiving a malformed\n    frame that causes FRAME_SIZE_ERROR causes assertion failure. nghttp2\n    v1.68.1 adds missing state validation to avoid assertion failure. No\n    known workarounds are available.\n\nFor more information, see:\n  - https://www.cve.org/CVERecord?id=CVE-2026-27135\n  - https://github.com/nghttp2/nghttp2/commit/5c7df8fa815ac1004d9ecb9d1f7595c4d37f46e1\n\nSigned-off-by: Thomas Perale <thomas.perale@mind.be>\n---\n ...lidations-to-avoid-assertion-failure.patch | 105 ++++++++++++++++++\n package/nghttp2/nghttp2.mk                    |   3 +\n 2 files changed, 108 insertions(+)\n create mode 100644 package/nghttp2/0001-Fix-missing-iframe-state-validations-to-avoid-assertion-failure.patch","diff":"diff --git a/package/nghttp2/0001-Fix-missing-iframe-state-validations-to-avoid-assertion-failure.patch b/package/nghttp2/0001-Fix-missing-iframe-state-validations-to-avoid-assertion-failure.patch\nnew file mode 100644\nindex 0000000000..ef8b9a5a5d\n--- /dev/null\n+++ b/package/nghttp2/0001-Fix-missing-iframe-state-validations-to-avoid-assertion-failure.patch\n@@ -0,0 +1,105 @@\n+From 5c7df8fa815ac1004d9ecb9d1f7595c4d37f46e1 Mon Sep 17 00:00:00 2001\n+From: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>\n+Date: Wed, 18 Feb 2026 18:04:30 +0900\n+Subject: [PATCH] Fix missing iframe->state validations to avoid assertion\n+ failure\n+\n+CVE: CVE-2026-27135\n+Upstream: https://github.com/nghttp2/nghttp2/commit/5c7df8fa815ac1004d9ecb9d1f7595c4d37f46e1\n+Signed-off-by: Thomas Perale <thomas.perale@mind.be>\n+---\n+ lib/nghttp2_session.c | 32 ++++++++++++++++++++++++++++++++\n+ 1 file changed, 32 insertions(+)\n+\n+diff --git a/lib/nghttp2_session.c b/lib/nghttp2_session.c\n+index bcea547343..0fbcc930b9 100644\n+--- a/lib/nghttp2_session.c\n++++ b/lib/nghttp2_session.c\n+@@ -5573,6 +5573,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,\n+           return rv;\n+         }\n+ \n++        if (iframe->state == NGHTTP2_IB_IGN_ALL) {\n++          return (nghttp2_ssize)inlen;\n++        }\n++\n+         on_begin_frame_called = 1;\n+ \n+         rv = session_process_headers_frame(session);\n+@@ -6041,6 +6045,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,\n+           if (nghttp2_is_fatal(rv)) {\n+             return rv;\n+           }\n++\n++          if (iframe->state == NGHTTP2_IB_IGN_ALL) {\n++            return (nghttp2_ssize)inlen;\n++          }\n+         }\n+       }\n+ \n+@@ -6293,6 +6301,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,\n+           return rv;\n+         }\n+ \n++        if (iframe->state == NGHTTP2_IB_IGN_ALL) {\n++          return (nghttp2_ssize)inlen;\n++        }\n++\n+         session_inbound_frame_reset(session);\n+ \n+         break;\n+@@ -6599,6 +6611,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,\n+         if (nghttp2_is_fatal(rv)) {\n+           return rv;\n+         }\n++\n++        if (iframe->state == NGHTTP2_IB_IGN_ALL) {\n++          return (nghttp2_ssize)inlen;\n++        }\n+       } else {\n+         iframe->state = NGHTTP2_IB_IGN_HEADER_BLOCK;\n+       }\n+@@ -6775,6 +6791,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,\n+             rv = session->callbacks.on_data_chunk_recv_callback(\n+               session, iframe->frame.hd.flags, iframe->frame.hd.stream_id,\n+               in - readlen, (size_t)data_readlen, session->user_data);\n++            if (iframe->state == NGHTTP2_IB_IGN_ALL) {\n++              return (nghttp2_ssize)inlen;\n++            }\n++\n+             if (rv == NGHTTP2_ERR_PAUSE) {\n+               return (nghttp2_ssize)(in - first);\n+             }\n+@@ -6861,6 +6881,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,\n+           return rv;\n+         }\n+ \n++        if (iframe->state == NGHTTP2_IB_IGN_ALL) {\n++          return (nghttp2_ssize)inlen;\n++        }\n++\n+         if (rv != 0) {\n+           busy = 1;\n+ \n+@@ -6879,6 +6903,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,\n+         return rv;\n+       }\n+ \n++      if (iframe->state == NGHTTP2_IB_IGN_ALL) {\n++        return (nghttp2_ssize)inlen;\n++      }\n++\n+       session_inbound_frame_reset(session);\n+ \n+       break;\n+@@ -6907,6 +6935,10 @@ nghttp2_ssize nghttp2_session_mem_recv2(nghttp2_session *session,\n+         return rv;\n+       }\n+ \n++      if (iframe->state == NGHTTP2_IB_IGN_ALL) {\n++        return (nghttp2_ssize)inlen;\n++      }\n++\n+       session_inbound_frame_reset(session);\n+ \n+       break;\ndiff --git a/package/nghttp2/nghttp2.mk b/package/nghttp2/nghttp2.mk\nindex 98f837e28e..9e051d24ed 100644\n--- a/package/nghttp2/nghttp2.mk\n+++ b/package/nghttp2/nghttp2.mk\n@@ -14,6 +14,9 @@ NGHTTP2_CPE_ID_VENDOR = nghttp2\n NGHTTP2_DEPENDENCIES = host-pkgconf\n NGHTTP2_CONF_OPTS = --enable-lib-only\n \n+# 0001-Fix-missing-iframe-state-validations-to-avoid-assertion-failure.patch\n+NGHTTP2_IGNORE_CVES += CVE-2026-27135\n+\n define NGHTTP2_INSTALL_CLEAN_HOOK\n \t# Remove fetch-ocsp-response script unused by library\n \t$(Q)$(RM) -rf $(TARGET_DIR)/usr/share/nghttp2\n","prefixes":["1/1"]}