{"id":183985,"date":"2026-10-24T23:40:31","date_gmt":"2026-10-24T21:40:31","guid":{"rendered":"https:\/\/prohoster.info\/blog\/news\/kriticheskaya-uyazvimost-v-dekodirovshhike-brotli-zatragivayushhaya-node-js-bun-brauzery-http-klienty-i-drugie-proekty"},"modified":"2026-10-24T23:40:36","modified_gmt":"2026-10-24T21:40:36","slug":"critical-vulnerability-in-the-brotli-decoder-affecting-node-js-bun-browsers-http-clients-and-other-projects","status":"publish","type":"post","link":"https:\/\/prohoster.info\/en\/blog\/news\/critical-vulnerability-in-the-brotli-decoder-affecting-node-js-bun-browsers-http-clients-and-other-projects","title":{"rendered":"Critical vulnerability in the Brotli decoder affecting Node.JS, Bun, browsers, HTTP clients, and other projects","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>A vulnerability has been identified in the reference implementation of the Brotli data compression format decoder (CVE-2026-111497, codenamed Broccoli2Shell and HTTP2Shell), leading to a buffer overflow when processing specially crafted compressed data. According to Google, this vulnerability can be exploited for remote code execution attacks on projects using the official Brotli decoder implementation. Affected projects include: Node.js, Bun, Envoy, Istio, web browsers, proxy servers, HTTP clients, HTTP servers, archivers, UEFI firmware, JPEG XL viewers, content decoding libraries for Python, Ruby, Java, PHP, and .NET, along with their associated dependencies. <\/p>\n<p>The issue was discovered by OpenAI in February of this year and has been blocked in the Brotli codebase by discarding invalid streams during decoding. On October 22, patches Brotli 1.0.10, 1.1.1, and 1.2.1 were released explicitly stating the vulnerability had been fixed and the core issue addressed. On the same day, a prototype exploit was created that allowed remote code execution in laboratory settings using non-standard builds (standard builds crashed). Later, Imperva observed an attack on the standard Node.js 24.22.0 builds in a Linux environment on the ARM64 system.<\/p>\n<p>The vulnerability leads to out-of-bounds writes due to improper error handling when parsing blocks in the compressed stream. The DecodeBlockTypeAndLength() function only returned true or false instead of an error code, preventing the calling code from distinguishing between a stream corruption and a state requiring additional data to be passed to the function. When an incorrect block type of compressed data was indicated in the stream, the decoder did not perceive it as an error but rather as a state of insufficient data requiring further reads from the stream. However, since the allocated buffer was not sized for the additionally read data, they were written outside its bounds, where the internal state of the decoder was stored.<\/p>\n<p>Projects vulnerable to the exploit include:<\/p>\n<ul>\n<li class=\"l\"> The reference Brotli library manifests this problem starting from release 1.0.3 and has been fixed in updates 1.0.10, 1.1.1, and 1.2.1. The vulnerability affects applications and libraries using the libbrotlidec library.\n<li class=\"l\"> The JavaScript platform Node.js has fixed the issue in updates 26.12.1, 24.22.1, and 22.23.4. Applications that use the fetch() method to request third-party content may be attacked, as it automatically decodes HTTP responses with the header 'Content-Encoding: br'. The vulnerability also manifests when directly calling the methods zlib.brotliDecompress*(), createBrotliDecompress(), and brotli.decompress() to unpack third-party content or when handling HTTP requests parsed through Express 5 and body-parser 2.x libraries.\n<li class=\"l\"> Python packages brotli and brotlicffi (a fix was proposed in version 1.2.1), along with projects that use them, including popular libraries urllib3, aiohttp, httpx, and Scrapy, decode responses with the header 'Content-Encoding: br' when accessing external web resources.\n<li class=\"l\"> HTTP servers, HTTP proxies, HTTP clients, and web browsers that support Brotli compression ('Accept-Encoding: br'). Apache httpd comes with mod_brotli (disabled by default). For nginx, there is a third-party module ngx_brotli (the brotli version in dependencies has been updated to the latest). The issue in Chrome\/Chromium and Firefox has already been resolved in one of the previous updates. In the proxy-<a class=\"wpil_keyword_link\" href=\"https:\/\/prohoster.info\/en\/server\/dts-dronten\/\"   title=\"server\" data-wpil-keyword-link=\"linked\">server<\/a> Envoy vulnerability has been fixed in releases 1.40.0, 1.39.3, 1.38.6, 1.37.8, and 1.36.12.\n<li class=\"l\"> .NET runtime when using the methods BrotliDecoder, BrotliStream, and HttpClient in the application. The vulnerability has not yet been fixed.\n<li class=\"l\"> PHP extension brotli when using the function brotli_uncompress(). A fix is in preparation.\n<li class=\"l\"> Ruby package brotli when using the method Brotli.inflate. The vulnerability has not yet been fixed.\n<li class=\"l\"> Database DuckDB when importing compressed Parquet files. A fix is in preparation.\n<li class=\"l\"> Database ClickHouse. A fix is in preparation.\n<li class=\"l\"> Database YDB. The vulnerability has not yet been fixed.\n<li class=\"l\"> Apache Arrow when importing compressed Parquet files. A fix is in preparation.\n<li class=\"l\"> libjxl (Brotli is used for compressing metadata in JPEG XL).<br \/>\nA fix is in preparation.<\/p>\n<li class=\"l\"> Archivers NanaZip, 7-Zip-zstd, and p7zip when unpacking br-files. The vulnerability has not been fixed.\n<li class=\"l\"> MuPDF. The vulnerability has not been fixed.\n<li class=\"l\"> UEFI firmware based on EDK II and UEFITool, compressed using Brotli. The fix is in preparation \u2014 EDK II and UEFITool.\n<li class=\"l\"> JavaScript platform Bun. The vulnerability has been fixed in version 1.4.4.\n<li class=\"l\"> Platform for managing microservices Istio. The vulnerability has been fixed in versions 1.29.9, 1.30.6, and 1.31.2.\n<li class=\"l\"> curl and libcurl, the vulnerability occurs when there is a vulnerable version of libbrotlidec in dependencies.\n<li class=\"l\"> Parsers of the Web Open Font (WOFF) format, which uses<br \/>\nBrotli.<\/p>\n<li class=\"l\"> Brotli4j, SumatraPDF, Ghostscript, CatBoost, and YTsaurus. The vulnerability has been fixed in one of the updates.\n<\/ul>\n<p>Source: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/www.opennet.ru\/opennews\/art.shtml?num=66537\">opennet.ru<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u0441 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0441\u0436\u0430\u0442\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 Brotli \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c (CVE-2026-111497, \u043a\u043e\u0434\u043e\u0432\u044b\u0435 \u0438\u043c\u0435\u043d\u0430 Broccoli2Shell \u0438 HTTP2Shell), \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0449\u0430\u044f \u043a \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044e \u0431\u0443\u0444\u0435\u0440\u0430 \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u044c\u043d\u043e \u043e\u0444\u043e\u0440\u043c\u043b\u0435\u043d\u043d\u044b\u0445 \u0441\u0436\u0430\u0442\u044b\u0445 \u0434\u0430\u043d\u043d\u044b\u0445. \u041f\u043e \u0434\u0430\u043d\u043d\u044b\u043c Google \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u043c\u043e\u0436\u0435\u0442 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c\u0441\u044f \u0434\u043b\u044f \u0443\u0434\u0430\u043b\u0451\u043d\u043d\u043e\u0433\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u0434\u0430 \u043f\u0440\u0438 \u0430\u0442\u0430\u043a\u0435 \u043d\u0430 \u043f\u0440\u043e\u0435\u043a\u0442\u044b, \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e\u0449\u0438\u0435 \u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u0443\u044e \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u044e \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 Brotli. \u0421\u0440\u0435\u0434\u0438 \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u0435\u043c\u044b\u0445 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c\u044e \u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432: Node.js, Bun, Envoy, Istio, [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":10,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[702],"tags":[],"class_list":["post-183985","post","type-post","status-publish","format-standard","hentry","category-news"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.4 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u0441 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0441\u0436\u0430\u0442\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 Brotli \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c (CVE-2026-111497, \u043a\u043e\u0434\u043e\u0432\u044b\u0435 \u0438\u043c\u0435\u043d\u0430 Broccoli2Shell \u0438 HTTP2Shell), \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0449\u0430\u044f \u043a \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044e \u0431\u0443\u0444\u0435\u0440\u0430 \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Alexander Kovalev\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/en\/blog\/news\/critical-vulnerability-in-the-brotli-decoder-affecting-node-js-bun-browsers-http-clients-and-other-projects\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"en_US\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u0432 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0435 Brotli, \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u044e\u0449\u0430\u044f Node.JS, Bun, \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u044b, HTTP-\u043a\u043b\u0438\u0435\u043d\u0442\u044b \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u0441 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0441\u0436\u0430\u0442\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 Brotli \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c (CVE-2026-111497, \u043a\u043e\u0434\u043e\u0432\u044b\u0435 \u0438\u043c\u0435\u043d\u0430 Broccoli2Shell \u0438 HTTP2Shell), \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0449\u0430\u044f \u043a \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044e \u0431\u0443\u0444\u0435\u0440\u0430 \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/en\/blog\/news\/critical-vulnerability-in-the-brotli-decoder-affecting-node-js-bun-browsers-http-clients-and-other-projects\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2026-10-24T21:40:31+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2026-10-24T21:40:36+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Critical vulnerability in the Brotli decoder affecting Node.JS, Bun, browsers, HTTP clients, and other projects | ProHoster","description":"A vulnerability has been identified in the library containing the reference implementation of the Brotli data compression format decoder (CVE-2026-111497, codenamed Broccoli2Shell and HTTP2Shell), which leads to a buffer overflow during processing.","canonical_url":"https:\/\/prohoster.info\/en\/blog\/news\/critical-vulnerability-in-the-brotli-decoder-affecting-node-js-bun-browsers-http-clients-and-other-projects","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"en_US","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u0440\u0438\u0442\u0438\u0447\u0435\u0441\u043a\u0430\u044f \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c \u0432 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0435 Brotli, \u0437\u0430\u0442\u0440\u0430\u0433\u0438\u0432\u0430\u044e\u0449\u0430\u044f Node.JS, Bun, \u0431\u0440\u0430\u0443\u0437\u0435\u0440\u044b, HTTP-\u043a\u043b\u0438\u0435\u043d\u0442\u044b \u0438 \u0434\u0440\u0443\u0433\u0438\u0435 \u043f\u0440\u043e\u0435\u043a\u0442\u044b | ProHoster","og:description":"\u0412 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0435 \u0441 \u044d\u0442\u0430\u043b\u043e\u043d\u043d\u043e\u0439 \u0440\u0435\u0430\u043b\u0438\u0437\u0430\u0446\u0438\u0435\u0439 \u0434\u0435\u043a\u043e\u0434\u0438\u0440\u043e\u0432\u0449\u0438\u043a\u0430 \u0444\u043e\u0440\u043c\u0430\u0442\u0430 \u0441\u0436\u0430\u0442\u0438\u044f \u0434\u0430\u043d\u043d\u044b\u0445 Brotli \u0432\u044b\u044f\u0432\u043b\u0435\u043d\u0430 \u0443\u044f\u0437\u0432\u0438\u043c\u043e\u0441\u0442\u044c (CVE-2026-111497, \u043a\u043e\u0434\u043e\u0432\u044b\u0435 \u0438\u043c\u0435\u043d\u0430 Broccoli2Shell \u0438 HTTP2Shell), \u043f\u0440\u0438\u0432\u043e\u0434\u044f\u0449\u0430\u044f \u043a \u043f\u0435\u0440\u0435\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044e \u0431\u0443\u0444\u0435\u0440\u0430 \u043f\u0440\u0438 \u043e\u0431\u0440\u0430\u0431\u043e\u0442\u043a\u0435.","og:url":"https:\/\/prohoster.info\/en\/blog\/news\/critical-vulnerability-in-the-brotli-decoder-affecting-node-js-bun-browsers-http-clients-and-other-projects","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2026-10-24T21:40:31+00:00","article:modified_time":"2026-10-24T21:40:36+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":[],"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/183985","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/users\/10"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/comments?post=183985"}],"version-history":[{"count":1,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/183985\/revisions"}],"predecessor-version":[{"id":183986,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/posts\/183985\/revisions\/183986"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/media?parent=183985"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/categories?post=183985"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/en\/wp-json\/wp\/v2\/tags?post=183985"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}