{"id":1911,"date":"2026-10-26T16:31:13","date_gmt":"2026-10-26T15:31:13","guid":{"rendered":"https:\/\/onnetwork.agency\/?p=1911"},"modified":"2026-10-26T16:44:49","modified_gmt":"2026-10-26T15:44:49","slug":"node-js-update-security-vulnerability","status":"publish","type":"post","link":"https:\/\/onnetwork.agency\/en\/node-js-update-security-vulnerability\/","title":{"rendered":"Node.js Security Vulnerability: What the Brotli Vulnerability Means for Your Web Application"},"content":{"rendered":"<section id=\"hero-section-block_ecb6b3081ede21415df1db3a2bc78919\" class=\"hero-section alignfull position-relative\">\n    <div class=\"container hero-container flex-column\">\n        <div class=\"row align-items-center position-relative\">\n\n            <!-- Left Side \/ Text & Buttons -->\n            <div class=\"col col-md-9 col-lg-8 col-xl-7 hero-col-text\">\n\n                <div class=\"hero-content-wrapper\">\n                    \n                                            <div class=\"hero-text-area\">\n                            <h1>Node.js Security Vulnerability:<br \/>\n<span style=\"color: #ee6352;\">What the Brotli Vulnerability Means for Your Web Application<\/span><\/h1>\n                                                    <\/div>\n                    \n                                    <\/div>\n            <\/div>\n\n\n            <div class=\"hero-graphic-wrapper d-none d-lg-block\">\n                                    <figure class=\"hero-image-figure\">\n                        <img loading=\"lazy\" decoding=\"async\" width=\"1800\" height=\"1200\" src=\"https:\/\/onnetwork.agency\/wp-content\/uploads\/2026\/10\/node-js-update-sicherheitsluecke-zeichnung-transparent.png\" class=\"img-fluid hero-img\" alt=\"Node.js vulnerability: a package fills an eight-slot buffer that overflows, next to an update arrow\" srcset=\"https:\/\/onnetwork.agency\/wp-content\/uploads\/2026\/10\/node-js-update-sicherheitsluecke-zeichnung-transparent.png 1800w, https:\/\/onnetwork.agency\/wp-content\/uploads\/2026\/10\/node-js-update-sicherheitsluecke-zeichnung-transparent-300x200.png 300w, https:\/\/onnetwork.agency\/wp-content\/uploads\/2026\/10\/node-js-update-sicherheitsluecke-zeichnung-transparent-1024x683.png 1024w, https:\/\/onnetwork.agency\/wp-content\/uploads\/2026\/10\/node-js-update-sicherheitsluecke-zeichnung-transparent-768x512.png 768w, https:\/\/onnetwork.agency\/wp-content\/uploads\/2026\/10\/node-js-update-sicherheitsluecke-zeichnung-transparent-1536x1024.png 1536w\" sizes=\"auto, (max-width: 1800px) 100vw, 1800px\" \/>                    <\/figure>\n                            <\/div>\n\n        <\/div>\n    <\/div>\n<\/section>\n\n    <section id=\"authorpreview-section-block_dde02f885566e75d3c51725cf4d6f9ff-1\" class=\"authorpreview-section alignfull layout-single-link\">\n        <div class=\"container\">\n                        <div class=\"ap-single\">\n                <div class=\"ap-single-avatar-col\">\n                    <a href=\"https:\/\/onnetwork.agency\/en\/author\/k-winter\/\"\n                        class=\"ap-single-avatar-link text-decoration-none text-reset\">\n                        <img alt='Kevin Winter' src='https:\/\/secure.gravatar.com\/avatar\/c3f3213307693b06c7b950b15084240549ac8d0f5a35214d1efecfa4630db959?s=87&#038;d=mm&#038;r=g' srcset='https:\/\/secure.gravatar.com\/avatar\/c3f3213307693b06c7b950b15084240549ac8d0f5a35214d1efecfa4630db959?s=174&#038;d=mm&#038;r=g 2x' class='avatar avatar-87 photo ap-single-avatar' height='87' width='87' \/>                        <div class=\"ap-single-head\">\n                            <h3 class=\"ap-single-name h5 mb-0\">Kevin Winter<\/h3>\n                                                            <p class=\"ap-single-rolle mb-0\">Managing Director<\/p>\n                                                    <\/div>\n                    <\/a>\n                <\/div>\n\n                <div class=\"ap-single-body\">\n                                            <p class=\"ap-single-bio mb-0\">Kevin Winter is Managing Director of on:NetworkAgency and helps businesses get found online. Writes about websites, SEO, visibility on Google and AI systems, and what actually works in practice. No agency fluff.  <\/p>\n                    \n                                            <a class=\"ap-single-link mt-3\" href=\"https:\/\/onnetwork.agency\/en\/author\/k-winter\/\">\n                            All 14 articles                            <span class=\"btn-arrow\">&rarr;<\/span>\n                        <\/a>\n                                    <\/div>\n            <\/div>\n        <\/div>\n    <\/section>\n    \n\n<section id=\"blogbeitrag-block_84a8b266dc1a04f52cc71f2ed74a8f78\" class=\"blogbeitrag-section alignfull\">\n            <div class=\"container\">\n            <div class=\"row gx-xl-5\">\n                <aside class=\"col-12 col-xl-3 blogbeitrag-toc-col\">\n                    <nav class=\"blogbeitrag-toc\" aria-label=\"Table of contents\">\n                        <p class=\"blogbeitrag-toc-label\">Contents<\/p>\n                        <ol class=\"blogbeitrag-toc-nav\">\n                                                            <li>\n                                    <a class=\"blogbeitrag-toc-link active\"\n                                       href=\"#blogbeitrag-block_84a8b266dc1a04f52cc71f2ed74a8f78-1-introduction\" aria-current=\"true\">\n                                        1. Introduction                                    <\/a>\n                                <\/li>\n                                                            <li>\n                                    <a class=\"blogbeitrag-toc-link\"\n                                       href=\"#blogbeitrag-block_84a8b266dc1a04f52cc71f2ed74a8f78-2-what-is-the-brotli-vulnerability\">\n                                        2. What is the Brotli vulnerability?                                    <\/a>\n                                <\/li>\n                                                            <li>\n                                    <a class=\"blogbeitrag-toc-link\"\n                                       href=\"#blogbeitrag-block_84a8b266dc1a04f52cc71f2ed74a8f78-3-when-your-application-is-vulnerable\">\n                                        3. When Your Application Is Vulnerable                                    <\/a>\n                                <\/li>\n                                                            <li>\n                                    <a class=\"blogbeitrag-toc-link\"\n                                       href=\"#blogbeitrag-block_84a8b266dc1a04f52cc71f2ed74a8f78-4-am-i-affected\">\n                                        4. Am I Affected?                                    <\/a>\n                                <\/li>\n                                                            <li>\n                                    <a class=\"blogbeitrag-toc-link\"\n                                       href=\"#blogbeitrag-block_84a8b266dc1a04f52cc71f2ed74a8f78-5-applying-the-update-correctly\">\n                                        5. Applying the Update Correctly                                    <\/a>\n                                <\/li>\n                                                            <li>\n                                    <a class=\"blogbeitrag-toc-link\"\n                                       href=\"#blogbeitrag-block_84a8b266dc1a04f52cc71f2ed74a8f78-6-node-js-20-and-older-versions\">\n                                        6. Node.js 20 and Older Versions                                    <\/a>\n                                <\/li>\n                                                            <li>\n                                    <a class=\"blogbeitrag-toc-link\"\n                                       href=\"#blogbeitrag-block_84a8b266dc1a04f52cc71f2ed74a8f78-7-what-we-learned-ourselves\">\n                                        7. What We Learned Ourselves                                    <\/a>\n                                <\/li>\n                                                            <li>\n                                    <a class=\"blogbeitrag-toc-link\"\n                                       href=\"#blogbeitrag-block_84a8b266dc1a04f52cc71f2ed74a8f78-8-conclusion\">\n                                        8. Conclusion                                    <\/a>\n                                <\/li>\n                                                    <\/ol>\n                    <\/nav>\n                <\/aside>\n                <div class=\"col-12 col-xl-9 blogbeitrag-chapters\">\n                                            <article id=\"blogbeitrag-block_84a8b266dc1a04f52cc71f2ed74a8f78-1-introduction\" class=\"blogbeitrag-chapter\">\n                            <div class=\"row gx-xl-4\">\n                                <div class=\"col-12 col-xl-8 blogbeitrag-chapter-text\">\n                                    <p>On October 21, 2026, the Node.js project closed a critical security vulnerability. It lies in a component hardly anyone knows: the Brotli decoder, which unpacks compressed data. In the worst case, an attacker can execute their own code on your server using specially crafted data.<\/p>\n<p>Node.js runs in more places than most people think. It powers many web applications, customer portals, and shops, as well as tools like n8n, Strapi, or Uptime Kuma. Only a Node.js update can protect you. An application update alone is often not enough.<\/p>\n<p><strong>The key facts at a glance<\/strong><\/p>\n<ul>\n<li>Node.js versions 22, 24, and 26 are affected.<\/li>\n<li>Node.js 22.23.4, 24.22.1, and 26.12.1, as well as all newer versions, are secure.<\/li>\n<li>Node.js 20 and Node.js 25 will no longer receive a fix. The only solution here is to migrate. <\/li>\n<li>The vulnerability is rated 9.2 out of 10 points. As of October 23, no attacks were known. <\/li>\n<li>If you use Docker, you must rebuild or download the image and recreate the container.<\/li>\n<\/ul>\n                                <\/div>\n                                                                    <div class=\"col-12 col-xl-4 d-xl-block d-none\">\n                                        <blockquote class=\"blogbeitrag-quote\">\n                                            <p>&bdquo;Node.js runs in more places than most people think. If you know all of them, the update is quickly done.&ldquo;<\/p>\n                                        <\/blockquote>\n                                    <\/div>\n                                                            <\/div>\n                        <\/article>\n                                            <article id=\"blogbeitrag-block_84a8b266dc1a04f52cc71f2ed74a8f78-2-what-is-the-brotli-vulnerability\" class=\"blogbeitrag-chapter\">\n                            <div class=\"row gx-xl-4\">\n                                <div class=\"col-12 col-xl-8 blogbeitrag-chapter-text\">\n                                    <h2>What is the Brotli vulnerability in Node.js?<\/h2>\n<p>Brotli is a method websites use to shrink data. Node.js comes with its own decompressor for it, and that\u2019s exactly where the bug is. Officially, the vulnerability is called CVE-2026-111497.<\/p>\n<p>The decompressor does not recognize certain corrupted data as an error. It considers them incomplete and waits for more. In doing so, it continuously writes subsequent data into a buffer that is only eight bytes in size. Anything beyond that overwrites foreign memory.<\/p>\n<p>In the most harmless case, your application crashes. It gets worse if an attacker reads memory contents or executes their own code. The Node.js project classifies the vulnerability as high. The official CVE rating is 9.2 out of 10 points, placing it in the critical range.<\/p>\n<p>The bug is in Google&#8217;s own Brotli library, in versions 1.0.3 to 1.2.0. Therefore, other programs that include this library may also be affected besides Node.js.<\/p>\n                                <\/div>\n                                                            <\/div>\n                        <\/article>\n                                            <article id=\"blogbeitrag-block_84a8b266dc1a04f52cc71f2ed74a8f78-3-when-your-application-is-vulnerable\" class=\"blogbeitrag-chapter\">\n                            <div class=\"row gx-xl-4\">\n                                <div class=\"col-12 col-xl-8 blogbeitrag-chapter-text\">\n                                    <h2>When your application is vulnerable<\/h2>\n<p>The vulnerability is only dangerous if your application decompresses Brotli data coming from outside.<\/p>\n<p>Express is one of the most common frameworks for Node.js applications. From version 5 onwards, Express automatically unpacks incoming requests if they are marked as Brotli. An attacker only needs to send a specially crafted request to a form or an interface. This is not the case with Express 4, where the default setting only unpacks gzip and deflate.<\/p>\n<p>The reverse is also possible. If your application fetches data from an external website using the built-in fetch function, Node.js automatically unpacks the response. An attacker controlling such a source can inject specially crafted data through it.<\/p>\n<p>It&#8217;s difficult to tell from the outside whether your application uses one of these methods. Therefore, assume every Node.js installation is affected until it is updated.<\/p>\n                                <\/div>\n                                                            <\/div>\n                        <\/article>\n                                            <article id=\"blogbeitrag-block_84a8b266dc1a04f52cc71f2ed74a8f78-4-am-i-affected\" class=\"blogbeitrag-chapter\">\n                            <div class=\"row gx-xl-4\">\n                                <div class=\"col-12 col-xl-8 blogbeitrag-chapter-text\">\n                                    <h2>Am I affected? Here&#8217;s how to check your Node.js version <\/h2>\n<ol>\n<li><strong>Find out where Node.js is running:<\/strong> Don&#8217;t just ask yourself which of your applications are written in Node.js. Also consider automation tools like n8n, content systems like Strapi, database interfaces like NocoDB, and monitoring. Node.js is also often found in headless browsers for screenshots or PDF generation. <\/li>\n<li><strong>Check the version:<\/strong> On the server, the command <code>node -v<\/code> shows the version. In a Docker container, it&#8217;s <code>docker exec &lt;container&gt; node -v<\/code>. With a hoster, you usually find the version in the administration interface. <\/li>\n<li><strong>Compare with secure versions:<\/strong> Node.js 22.23.4, 24.22.1, and 26.12.1, as well as all newer versions within the same series, are secure.<\/li>\n<li><strong>Do not rely on the Brotli version number:<\/strong> Node.js incorporated the fix without changing the displayed Brotli version. For Node.js 24.22.1, it still shows 1.2.0. Only the Node.js version is decisive. <\/li>\n<li><strong>Inquire with providers:<\/strong> If an application runs with a service provider, a short email is sufficient: &#8220;Is our application running on a Node.js version that is secured against CVE-2026-111497?&#8221; A clear version number in the response is a good sign.<\/li>\n<\/ol>\n                                <\/div>\n                                                            <\/div>\n                        <\/article>\n                                            <article id=\"blogbeitrag-block_84a8b266dc1a04f52cc71f2ed74a8f78-5-applying-the-update-correctly\" class=\"blogbeitrag-chapter\">\n                            <div class=\"row gx-xl-4\">\n                                <div class=\"col-12 col-xl-8 blogbeitrag-chapter-text\">\n                                    <h2>The Update: What to Consider for Docker, Hosters, and Ready-Made Tools<\/h2>\n<p>On your own server, install the new Node.js version and then restart each application. Until the restart, the old code continues to run in memory.<\/p>\n<p>With Docker, it&#8217;s not enough to download a new image. The container must be recreated, otherwise it will continue to run with the old image. You should be careful with pinned versions. If your Dockerfile contains <code>node:24.21<\/code>, you will never get the update automatically. With <code>node:24<\/code> and a rebuild that freshly loads the base image, every new security version will come automatically with the next deployment.<\/p>\n<p>Ready-made tools like n8n, NocoDB, or Strapi come with their own Node.js. Here, the only solution is to update to a version from the manufacturer that already includes the new Node.js version. For n8n, as of October 26, the latest version 2.44.7 contained the secured Node.js. The older 2.21 series, on which our instances ran, no longer received an update. If you are stuck there, you need to make a larger version jump. Before doing so, create a database backup and then check if your workflows are running again.<\/p>\n<p>Expect surprises with such jumps. In our case, a new NocoDB version refused to start because it suddenly no longer accepted an old setting. The error was fixed in a few minutes, but only because we checked immediately afterward.<\/p>\n                                <\/div>\n                                                            <\/div>\n                        <\/article>\n                                            <article id=\"blogbeitrag-block_84a8b266dc1a04f52cc71f2ed74a8f78-6-node-js-20-and-older-versions\" class=\"blogbeitrag-chapter\">\n                            <div class=\"row gx-xl-4\">\n                                <div class=\"col-12 col-xl-8 blogbeitrag-chapter-text\">\n                                    <h2>What to do with Node.js 20 and other older versions?<\/h2>\n<p>Node.js 20 has not received security updates since April 30, 2026. Support for Node.js 25 ended on June 1, 2026. Both versions remain permanently open.<\/p>\n<p>Migrating to Node.js 24 is often less daunting than feared. If your application runs without compiled add-on modules, a new base image and a test run are often sufficient. For our own services on Node.js 20, the complete test suite ran without a single error after the switch.<\/p>\n<p>It becomes more difficult with ready-made tools whose manufacturers no longer update them. In that case, you can transfer the program code to a new image with an up-to-date Node.js version. This is a temporary solution. In the long run, you need a maintained tool.<\/p>\n                                <\/div>\n                                                            <\/div>\n                        <\/article>\n                                            <article id=\"blogbeitrag-block_84a8b266dc1a04f52cc71f2ed74a8f78-7-what-we-learned-ourselves\" class=\"blogbeitrag-chapter\">\n                            <div class=\"row gx-xl-4\">\n                                <div class=\"col-12 col-xl-8 blogbeitrag-chapter-text\">\n                                    <h2>What we learned from our own inventory<\/h2>\n<p>After the announcement, we scanned all our servers. We found 28 running Node.js instances on six servers. Eight of them were in ready-made tools like n8n, NocoDB, Strapi, and Uptime Kuma, which no one immediately associates with Node.js.<\/p>\n<p>One application was already secured before we even checked. Its image loads the latest Node.js 24 version with every deployment, and there had been a deployment since the update. Another application was pinned to an older version and therefore remained open. The difference was a single entry in the Dockerfile.<\/p>\n<p>Ten services were still running on Node.js 20, and one tool was even on Node.js 25. There is no fix for these versions.<\/p>\n<p>Most of our time was spent searching. Once the locations were found, the update was usually quick. Anyone who keeps an up-to-date list of their services and their versions will be finished much faster with the next vulnerability. You can read about how this looked for PHP in the guide <a href=\"https:\/\/onnetwork.agency\/en\/php2shell-wordpress\/\">PHP2Shell: What the Critical PHP Vulnerability Means for Your WordPress Site<\/a>.<\/p>\n                                <\/div>\n                                                            <\/div>\n                        <\/article>\n                                            <article id=\"blogbeitrag-block_84a8b266dc1a04f52cc71f2ed74a8f78-8-conclusion\" class=\"blogbeitrag-chapter\">\n                            <div class=\"row gx-xl-4\">\n                                <div class=\"col-12 col-xl-8 blogbeitrag-chapter-text\">\n                                    <h2>Conclusion<\/h2>\n<p>The Brotli vulnerability is serious but manageable. An update to Node.js 22.23.4, 24.22.1, or 26.12.1 closes it. <strong>The real task is to find every place where Node.js is running, even in ready-made tools like n8n, and genuinely replace the version there.<\/strong><\/p>\n<p>Would you like to know the status of your applications? Then let&#8217;s go through the list together. The update check is free and non-binding.<\/p>\n                                <\/div>\n                                                            <\/div>\n                        <\/article>\n                                    <\/div>\n            <\/div>\n        <\/div>\n    <\/section>\n\n\n<section id=\"leadmagnet-gate-block_8445bcb4ea59bdea84a66ee4e90a19ba\" class=\"leadmagnet-gate alignfull\">\n\n    <div class=\"container\">\n        <div class=\"row align-items-center gx-lg-5\">\n\n                            <div class=\"col-12 col-lg-5 leadmagnet-gate__media\"><figure class=\"lm-aeo\" role=\"img\" aria-label=\"Illustration zum Thema \u201eNode.js inventory: checklist for security updates\u201c\"><div class=\"lm-aeo__stage\"><?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<svg viewBox=\"-30 -60 970 660\" width=\"970\" height=\"660\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\"><circle cx=\"120\" cy=\"90\" r=\"150\" fill=\"#CDD5F1\"\/><circle cx=\"830\" cy=\"90\" r=\"110\" fill=\"#CDD5F1\"\/><path d=\"M380 170 C418 190, 455 196, 490 196 L490 290 C490 350, 448 394, 380 420 C312 394, 270 350, 270 290 L270 196 C305 196, 342 190, 380 170 Z\" fill=\"none\" stroke=\"#F2EFE8\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><path d=\"M380 192 C411 208, 441 213, 468 214 L468 290 C468 338, 434 374, 380 396 C326 374, 292 338, 292 290 L292 214 C319 213, 349 208, 380 192 Z\" fill=\"none\" stroke=\"#F2EFE8\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><path data-aeo=\"draw\" d=\"M336 298 L368.0 330.0 L428.0 262.0\" fill=\"none\" stroke=\"#EE6352\" stroke-width=\"14\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><circle cx=\"620\" cy=\"330\" r=\"78\" fill=\"none\" stroke=\"#F2EFE8\" stroke-width=\"14\"\/><path data-aeo=\"sweep\" d=\"M620 252 A78 78 0 1 1 552.4500185048138 291.0\" fill=\"none\" stroke=\"#EE6352\" stroke-width=\"14\" stroke-linecap=\"round\"\/><line x1=\"620.0\" y1=\"238.0\" x2=\"620.0\" y2=\"230.0\" fill=\"none\" stroke=\"#F2EFE8\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><line x1=\"666.0\" y1=\"250.32566285183165\" x2=\"670.0\" y2=\"243.39745962155615\" fill=\"none\" stroke=\"#F2EFE8\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><line x1=\"699.6743371481683\" y1=\"284.0\" x2=\"706.6025403784439\" y2=\"280.0\" fill=\"none\" stroke=\"#F2EFE8\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><line x1=\"712.0\" y1=\"330.0\" x2=\"720.0\" y2=\"330.0\" fill=\"none\" stroke=\"#F2EFE8\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><line x1=\"699.6743371481683\" y1=\"376.0\" x2=\"706.6025403784439\" y2=\"380.0\" fill=\"none\" stroke=\"#F2EFE8\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><line x1=\"666.0\" y1=\"409.6743371481683\" x2=\"670.0\" y2=\"416.60254037844385\" fill=\"none\" stroke=\"#F2EFE8\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><line x1=\"620.0\" y1=\"422.0\" x2=\"620.0\" y2=\"430.0\" fill=\"none\" stroke=\"#F2EFE8\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><line x1=\"574.0\" y1=\"409.6743371481684\" x2=\"570.0\" y2=\"416.6025403784439\" fill=\"none\" stroke=\"#F2EFE8\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><line x1=\"540.3256628518317\" y1=\"376.0\" x2=\"533.3974596215561\" y2=\"380.0\" fill=\"none\" stroke=\"#F2EFE8\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><line x1=\"528.0\" y1=\"330.0\" x2=\"520.0\" y2=\"330.0\" fill=\"none\" stroke=\"#F2EFE8\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><line x1=\"540.3256628518317\" y1=\"284.0\" x2=\"533.3974596215561\" y2=\"280.0\" fill=\"none\" stroke=\"#F2EFE8\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><line x1=\"574.0\" y1=\"250.32566285183168\" x2=\"570.0\" y2=\"243.39745962155615\" fill=\"none\" stroke=\"#F2EFE8\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><line x1=\"620\" y1=\"228\" x2=\"620\" y2=\"218\" fill=\"none\" stroke=\"#F2EFE8\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><rect x=\"606\" y=\"204\" width=\"28\" height=\"14\" rx=\"6\" fill=\"#EE6352\" stroke=\"#F2EFE8\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><text data-aeo=\"count\" data-to=\"60\" x=\"620\" y=\"342\" font-family=\"Manrope, sans-serif\" font-weight=\"800\" font-size=\"34\" fill=\"#F2EFE8\" text-anchor=\"middle\">60<\/text><rect x=\"164\" y=\"300\" width=\"80\" height=\"28\" rx=\"6\" fill=\"none\" stroke=\"#F2EFE8\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><circle cx=\"180\" cy=\"314\" r=\"4.00\" fill=\"#EE6352\" stroke=\"#F2EFE8\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><line x1=\"196\" y1=\"314\" x2=\"230.0\" y2=\"314\" fill=\"none\" stroke=\"#F2EFE8\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><rect x=\"164\" y=\"334\" width=\"80\" height=\"28\" rx=\"6\" fill=\"none\" stroke=\"#F2EFE8\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><circle cx=\"180\" cy=\"348\" r=\"4.00\" fill=\"#EE6352\" stroke=\"#F2EFE8\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><line x1=\"196\" y1=\"348\" x2=\"230.0\" y2=\"348\" fill=\"none\" stroke=\"#F2EFE8\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><rect x=\"164\" y=\"368\" width=\"80\" height=\"28\" rx=\"6\" fill=\"none\" stroke=\"#F2EFE8\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><circle cx=\"180\" cy=\"382\" r=\"4.00\" fill=\"#EE6352\" stroke=\"#F2EFE8\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><line x1=\"196\" y1=\"382\" x2=\"230.0\" y2=\"382\" fill=\"none\" stroke=\"#F2EFE8\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><path data-aeo=\"twinkle\" d=\"M516 155.0 C518.34 165.66, 518.34 165.66, 529.0 168 C518.34 170.34, 518.34 170.34, 516 181.0 C513.66 170.34, 513.66 170.34, 503.0 168 C513.66 165.66, 513.66 165.66, 516 155.0 Z\" fill=\"#EE6352\" stroke=\"#F2EFE8\" stroke-width=\"1.6\" stroke-linejoin=\"round\"\/><path data-aeo=\"twinkle\" d=\"M244 226.0 C245.8 234.2, 245.8 234.2, 254.0 236 C245.8 237.8, 245.8 237.8, 244 246.0 C242.2 237.8, 242.2 237.8, 234.0 236 C242.2 234.2, 242.2 234.2, 244 226.0 Z\" fill=\"#EE6352\" stroke=\"#F2EFE8\" stroke-width=\"1.6\" stroke-linejoin=\"round\"\/><path data-aeo=\"twinkle\" d=\"M734 443.0 C735.62 450.38, 735.62 450.38, 743.0 452 C735.62 453.62, 735.62 453.62, 734 461.0 C732.38 453.62, 732.38 453.62, 725.0 452 C732.38 450.38, 732.38 450.38, 734 443.0 Z\" fill=\"#EE6352\" stroke=\"#F2EFE8\" stroke-width=\"1.6\" stroke-linejoin=\"round\"\/><\/svg><\/div><\/figure><\/div>\n            \n            <div class=\"col-12 col-lg-7 leadmagnet-gate__body\">\n                <h2 class=\"leadmagnet-gate__headline\">Node.js inventory: checklist for security updates<\/h2>\n\n                                    <p class=\"leadmagnet-gate__text\">With the Brotli vulnerability, most of the work was finding it. With this checklist, next time you\u2019ll know within an hour where Node.js is running in your setup, and what to do. <\/p>\n                \n                <div class=\"leadmagnet-gate__form\">\n                    <div class='fluentform ff-default fluentform_wrapper_6 ffs_default_wrap'><form data-form_id=\"6\" id=\"fluentform_6\" class=\"frm-fluent-form fluent_form_6 ff-el-form-top ff_form_instance_6_1 ff-form-loading ffs_default\" data-form_instance=\"ff_form_instance_6_1\" method=\"POST\" ><fieldset  style=\"border: none!important;margin: 0!important;padding: 0!important;background-color: transparent!important;box-shadow: none!important;outline: none!important; min-inline-size: 100%;\">\n                    <legend class=\"ff_screen_reader_title\" style=\"display: block; margin: 0!important;padding: 0!important;height: 0!important;text-indent: -999999px;width: 0!important;overflow:hidden;\">lead-magnet-gate-plus<\/legend>        <div\n                style=\"display: none!important; position: absolute!important; transform: translateX(1000%)!important;\"\n                class=\"ff-el-group ff-hpsf-container\"\n        >\n            <div class=\"ff-el-input--label asterisk-right\">\n                <label for=\"ff_6_item_sf\" aria-label=\"Notify\">\n                    Notify                <\/label>\n            <\/div>\n            <div class=\"ff-el-input--content\">\n                <input type=\"text\"\n                       name=\"item_6__fluent_sf\"\n                       class=\"ff-el-form-control\"\n                       id=\"ff_6_item_sf\"\n                \/>\n            <\/div>\n        <\/div>\n                <input type=\"hidden\" id=\"__fluent_protection_token_6\" class=\"fluent-form-token-field\" name=\"__fluent_protection_token_6\">\n        <input type='hidden' name='__fluent_form_embded_post_id' value='1911' \/><input type=\"hidden\" id=\"_fluentform_6_fluentformnonce\" name=\"_fluentform_6_fluentformnonce\" value=\"dd755362d3\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/en\/wp-json\/wp\/v2\/posts\/1911\" \/><div class='ff-el-group ff-el-form-hide_label'><div class=\"ff-el-input--label ff-el-is-required asterisk-right\"><label for='ff_6_email' id='label_ff_6_email'>Email address<\/label><\/div><div class='ff-el-input--content'><input type=\"email\" name=\"email\" id=\"ff_6_email\" class=\"ff-el-form-control\" placeholder=\"Email address *\" data-name=\"email\"  aria-invalid=\"false\" aria-required=true><\/div><\/div><div class='ff-el-group ff-el-form-hide_label has-conditions'><div class=\"ff-el-input--label ff-el-is-required asterisk-right\"><label for='ff_6_names' id='label_ff_6_names'>First name<\/label><\/div><div class='ff-el-input--content'><input type=\"text\" name=\"names\" id=\"ff_6_names\" class=\"ff-el-form-control\" placeholder=\"First name *\" data-name=\"names\"  aria-invalid=\"false\" aria-required=true><\/div><\/div><div class='ff-el-group ff-el-form-hide_label has-conditions'><div class=\"ff-el-input--label asterisk-right\"><label for='ff_6_phone' id='label_ff_6_phone'>Phone<\/label><\/div><div class='ff-el-input--content'><input type=\"tel\" name=\"phone\" id=\"ff_6_phone\" class=\"ff-el-form-control ff-el-phone\" placeholder=\"Phone (optional, for a quick call)\" data-name=\"phone\" inputmode=\"tel\"  aria-invalid='false' aria-required=false><\/div><\/div><div class='ff-el-group   has-conditions  ff-el-input--content'><div class='ff-el-form-check ff-el-tc'><label aria-label='Terms and Conditions: I agree that on:NetworkAgency may store my information and contact me by email or phone to send me the download and inform me about similar content. I can revoke this consent at any time. \u2192 Privacy   Contains 1 link. Use tab navigation to review.' class='ff-el-form-check-label ff_tc_label' for='terms_19fee7bada436fdfd3eb1103e9beed84'><span class='ff_tc_checkbox'><input type=\"checkbox\" name=\"terms\" id=\"terms_19fee7bada436fdfd3eb1103e9beed84\" class=\"ff-el-form-check-input\" data-name=\"terms\"  value='on' aria-invalid='false' aria-required=true><\/span> <div class='ff_t_c'>I agree that on:NetworkAgency may store my information and contact me by email or phone to send me the download and inform me about similar content. I can revoke this consent at any time. \u2192 <a href=\"https:\/\/onnetwork.agency\/en\/privacy-policy\/\" target=\"_blank\" rel=\"noopener\">Privacy<\/a>  <\/div><\/label><\/div><\/div><input type=\"hidden\" name=\"lm_id\" value=\"1909\" data-name=\"lm_id\" ><div class='ff-form-inline-style' hidden><style>form.fluent_form_6 .ff-btn-submit:not(.ff_btn_no_style) { background-color: ; color: ; }<\/style><\/div><div class='ff-el-group ff-text-left ff_submit_btn_wrapper'><button type=\"submit\" class=\"ff-btn ff-btn-submit ff-btn-md ff_btn_style\"  aria-label=\"Download \u2192\">Download \u2192<\/button><\/div><\/fieldset><\/form><div id='fluentform_6_errors' class='ff-errors-in-stack ff_form_instance_6_1 ff-form-loading_errors ff_form_instance_6_1_errors'><\/div><\/div>            <script type=\"text\/javascript\">\n                window.fluent_form_ff_form_instance_6_1 = {\"id\":\"6\",\"ajaxUrl\":\"https:\\\/\\\/onnetwork.agency\\\/wp-admin\\\/admin-ajax.php\",\"settings\":{\"layout\":{\"labelPlacement\":\"top\",\"helpMessagePlacement\":\"with_label\",\"errorMessagePlacement\":\"inline\",\"cssClassName\":\"\"},\"restrictions\":{\"denyEmptySubmission\":{\"enabled\":false}}},\"form_instance\":\"ff_form_instance_6_1\",\"form_id_selector\":\"fluentform_6\",\"rules\":{\"email\":{\"required\":{\"value\":true,\"message\":\"Please enter your email address.\"},\"email\":{\"value\":true,\"message\":\"Please enter a valid email address.\"}},\"names\":{\"required\":{\"value\":true,\"message\":\"Please enter your first name.\"}},\"phone\":{\"required\":{\"value\":false,\"message\":\"\"}},\"terms\":{\"required\":{\"value\":true,\"message\":\"Please agree to the privacy policy.\"}}},\"debounce_time\":300,\"conditionals\":{\"names\":{\"type\":\"any\",\"status\":true,\"conditions\":[{\"field\":\"email\",\"operator\":\"!=\",\"value\":\"\"}]},\"phone\":{\"type\":\"any\",\"status\":true,\"conditions\":[{\"field\":\"email\",\"operator\":\"!=\",\"value\":\"\"}]},\"terms\":{\"type\":\"any\",\"status\":true,\"conditions\":[{\"field\":\"email\",\"operator\":\"!=\",\"value\":\"\"}]}},\"file_upload_settings\":[]};\n                            <\/script>\n                            <\/div>\n\n                <p class=\"leadmagnet-gate__privacy\">No spam. Unsubscribe anytime.<\/p>\n            <\/div>\n\n        <\/div>\n    <\/div>\n\n<\/section>\n\n\n<section id=\"faq-section-block_47fcd6ca96b91c3e1376a099e737e2dd\" class=\"faq-section alignfull overflow-hidden\">\n    <div class=\"container pt-5 pb-5\">\n        <div class=\"row align-items-start\">\n\n            <div class=\"col-12 col-lg-6 col-md-4 mb-5 mb-lg-0 faq-header-col\">\n                                    <p class=\"thema thema-blue\">Frequently Asked Questions<\/p>\n                \n                                    <div class=\"faq-text-wysiwyg\">\n                        <h2>Frequently Asked Questions about the Node.js Security Vulnerability.<\/h2>\n                    <\/div>\n                            <\/div>\n\n            <div class=\"col-12 col-lg-5 col-md-8 offset-lg-1 faq-accordion-col\">\n                                    <div class=\"faq-accordion-wrap\">\n                        <div class=\"accordion\" id=\"accordion-block_47fcd6ca96b91c3e1376a099e737e2dd\">\n                                                            <div class=\"accordion-item\">\n                                    <h3 class=\"accordion-header\" id=\"heading-block_47fcd6ca96b91c3e1376a099e737e2dd-1\">\n                                        <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\"\n                                            data-bs-target=\"#collapse-block_47fcd6ca96b91c3e1376a099e737e2dd-1\" aria-expanded=\"false\"\n                                            aria-controls=\"collapse-block_47fcd6ca96b91c3e1376a099e737e2dd-1\">\n                                            Which Node.js versions are secure?                                        <\/button>\n                                    <\/h3>\n                                    <div id=\"collapse-block_47fcd6ca96b91c3e1376a099e737e2dd-1\" class=\"accordion-collapse collapse\"\n                                        aria-labelledby=\"heading-block_47fcd6ca96b91c3e1376a099e737e2dd-1\"\n                                        data-bs-parent=\"#accordion-block_47fcd6ca96b91c3e1376a099e737e2dd\">\n                                        <div class=\"accordion-body\">\n                                            <div class=\"faq-antwort-wysiwyg\">\n                                                <p>Node.js 22.23.4, 24.22.1, and 26.12.1, as well as all newer versions of the same series. The updates were released on October 21, 2026. Node.js 20, 21, 23, and 25 will no longer receive a fix.<\/p>\n                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                                                                <div class=\"accordion-item\">\n                                    <h3 class=\"accordion-header\" id=\"heading-block_47fcd6ca96b91c3e1376a099e737e2dd-2\">\n                                        <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\"\n                                            data-bs-target=\"#collapse-block_47fcd6ca96b91c3e1376a099e737e2dd-2\" aria-expanded=\"false\"\n                                            aria-controls=\"collapse-block_47fcd6ca96b91c3e1376a099e737e2dd-2\">\n                                            How do I find out my Node.js version?                                        <\/button>\n                                    <\/h3>\n                                    <div id=\"collapse-block_47fcd6ca96b91c3e1376a099e737e2dd-2\" class=\"accordion-collapse collapse\"\n                                        aria-labelledby=\"heading-block_47fcd6ca96b91c3e1376a099e737e2dd-2\"\n                                        data-bs-parent=\"#accordion-block_47fcd6ca96b91c3e1376a099e737e2dd\">\n                                        <div class=\"accordion-body\">\n                                            <div class=\"faq-antwort-wysiwyg\">\n                                                <p>On the server, `node -v` shows the version; in a Docker container, `docker exec &lt;container&gt; node -v`. For hosted applications, ask your service provider for the exact version number.<\/p>\n                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                                                                <div class=\"accordion-item\">\n                                    <h3 class=\"accordion-header\" id=\"heading-block_47fcd6ca96b91c3e1376a099e737e2dd-3\">\n                                        <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\"\n                                            data-bs-target=\"#collapse-block_47fcd6ca96b91c3e1376a099e737e2dd-3\" aria-expanded=\"false\"\n                                            aria-controls=\"collapse-block_47fcd6ca96b91c3e1376a099e737e2dd-3\">\n                                            Is an update of my application or packages sufficient?                                        <\/button>\n                                    <\/h3>\n                                    <div id=\"collapse-block_47fcd6ca96b91c3e1376a099e737e2dd-3\" class=\"accordion-collapse collapse\"\n                                        aria-labelledby=\"heading-block_47fcd6ca96b91c3e1376a099e737e2dd-3\"\n                                        data-bs-parent=\"#accordion-block_47fcd6ca96b91c3e1376a099e737e2dd\">\n                                        <div class=\"accordion-body\">\n                                            <div class=\"faq-antwort-wysiwyg\">\n                                                <p>No, not by itself. The vulnerability is in Node.js, not in your packages. An update only helps if it brings a new Node.js version, for example, with ready-made tools like n8n.<\/p>\n                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                                                                <div class=\"accordion-item\">\n                                    <h3 class=\"accordion-header\" id=\"heading-block_47fcd6ca96b91c3e1376a099e737e2dd-4\">\n                                        <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\"\n                                            data-bs-target=\"#collapse-block_47fcd6ca96b91c3e1376a099e737e2dd-4\" aria-expanded=\"false\"\n                                            aria-controls=\"collapse-block_47fcd6ca96b91c3e1376a099e737e2dd-4\">\n                                            Is n8n affected?                                        <\/button>\n                                    <\/h3>\n                                    <div id=\"collapse-block_47fcd6ca96b91c3e1376a099e737e2dd-4\" class=\"accordion-collapse collapse\"\n                                        aria-labelledby=\"heading-block_47fcd6ca96b91c3e1376a099e737e2dd-4\"\n                                        data-bs-parent=\"#accordion-block_47fcd6ca96b91c3e1376a099e737e2dd\">\n                                        <div class=\"accordion-body\">\n                                            <div class=\"faq-antwort-wysiwyg\">\n                                                <p>Yes, n8n runs on Node.js. An n8n version whose image contains a secure Node.js version, for example, 2.44.7 from October 26, 2026, is secured. Back up the database before a major version jump.<\/p>\n                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                                                                <div class=\"accordion-item\">\n                                    <h3 class=\"accordion-header\" id=\"heading-block_47fcd6ca96b91c3e1376a099e737e2dd-5\">\n                                        <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\"\n                                            data-bs-target=\"#collapse-block_47fcd6ca96b91c3e1376a099e737e2dd-5\" aria-expanded=\"false\"\n                                            aria-controls=\"collapse-block_47fcd6ca96b91c3e1376a099e737e2dd-5\">\n                                            Is the vulnerability already being exploited?                                        <\/button>\n                                    <\/h3>\n                                    <div id=\"collapse-block_47fcd6ca96b91c3e1376a099e737e2dd-5\" class=\"accordion-collapse collapse\"\n                                        aria-labelledby=\"heading-block_47fcd6ca96b91c3e1376a099e737e2dd-5\"\n                                        data-bs-parent=\"#accordion-block_47fcd6ca96b91c3e1376a099e737e2dd\">\n                                        <div class=\"accordion-body\">\n                                            <div class=\"faq-antwort-wysiwyg\">\n                                                <p>As of October 23, 2026, the US agency CISA had no indications of attacks. This can change quickly, as the update makes public where the error lay.<\/p>\n                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                                                                <div class=\"accordion-item\">\n                                    <h3 class=\"accordion-header\" id=\"heading-block_47fcd6ca96b91c3e1376a099e737e2dd-6\">\n                                        <button class=\"accordion-button collapsed\" type=\"button\" data-bs-toggle=\"collapse\"\n                                            data-bs-target=\"#collapse-block_47fcd6ca96b91c3e1376a099e737e2dd-6\" aria-expanded=\"false\"\n                                            aria-controls=\"collapse-block_47fcd6ca96b91c3e1376a099e737e2dd-6\">\n                                            Do I need to do anything else after the update?                                        <\/button>\n                                    <\/h3>\n                                    <div id=\"collapse-block_47fcd6ca96b91c3e1376a099e737e2dd-6\" class=\"accordion-collapse collapse\"\n                                        aria-labelledby=\"heading-block_47fcd6ca96b91c3e1376a099e737e2dd-6\"\n                                        data-bs-parent=\"#accordion-block_47fcd6ca96b91c3e1376a099e737e2dd\">\n                                        <div class=\"accordion-body\">\n                                            <div class=\"faq-antwort-wysiwyg\">\n                                                <p>Yes. Restart each application and then check with `node -v` that the new version is actually running. For Docker, this applies to each container individually.<\/p>\n                                            <\/div>\n                                        <\/div>\n                                    <\/div>\n                                <\/div>\n                                                        <\/div>\n                    <\/div>\n                            <\/div>\n\n        <\/div>\n    <\/div>\n<\/section>\n\n\n\n<section id=\"text-section-block_2b1b4204faad3d540fb4eff5d955f14d\" class=\"text-section alignfull layout-tb \">\n\n            <!-- Layout: Bild, Text \/ Text, Bild (Half bleed) -->\n        <div class=\"tb-image-half\">\n                            <img loading=\"lazy\" decoding=\"async\" width=\"972\" height=\"451\" src=\"https:\/\/onnetwork.agency\/wp-content\/uploads\/2026\/04\/text-3.png\" class=\"tb-image\" alt=\"\" srcset=\"https:\/\/onnetwork.agency\/wp-content\/uploads\/2026\/04\/text-3.png 972w, https:\/\/onnetwork.agency\/wp-content\/uploads\/2026\/04\/text-3-300x139.png 300w, https:\/\/onnetwork.agency\/wp-content\/uploads\/2026\/04\/text-3-768x356.png 768w\" sizes=\"auto, (max-width: 972px) 100vw, 972px\" \/>                    <\/div>\n\n        <div class=\"container position-relative z-1\">\n            <div class=\"row\">\n\n                <div class=\"col-12 col-lg-6 tb-content \">\n\n                                            <p class=\"thema thema-blue\">Update Check<\/p>\n                    \n                                            <div class=\"tb-text-wysiwyg\">\n                            <h2>Not sure exactly where Node.js is running in your setup?<\/h2>\n<p>We will check for free which Node.js versions are in your applications and tools and whether they are secured against the Brotli vulnerability. You will receive a clear list of what needs to be done. We can also take over the updates upon request.<\/p>\n                        <\/div>\n                    \n                        <div class=\"tb-button-group d-flex flex-wrap gap-3 mt-4\">\n                        <a class=\"btn btn-primary\" href=\"https:\/\/onnetwork.agency\/en\/contact\/\"\n                    target=\"_self\">\n                    Request Free Update Check                                            <span class=\"btn-arrow\">&rarr;<\/span>\n                                    <\/a>\n                <\/div>\n                    <\/div>\n            <\/div>\n        <\/div>\n\n    \n<\/section>\n\n    <section id=\"authorpreview-section-block_dde02f885566e75d3c51725cf4d6f9ff-2\" class=\"authorpreview-section alignfull layout-single-link\">\n        <div class=\"container\">\n                        <div class=\"ap-single\">\n                <div class=\"ap-single-avatar-col\">\n                    <a href=\"https:\/\/onnetwork.agency\/en\/author\/k-winter\/\"\n                        class=\"ap-single-avatar-link text-decoration-none text-reset\">\n                        <img alt='Kevin Winter' src='https:\/\/secure.gravatar.com\/avatar\/c3f3213307693b06c7b950b15084240549ac8d0f5a35214d1efecfa4630db959?s=87&#038;d=mm&#038;r=g' srcset='https:\/\/secure.gravatar.com\/avatar\/c3f3213307693b06c7b950b15084240549ac8d0f5a35214d1efecfa4630db959?s=174&#038;d=mm&#038;r=g 2x' class='avatar avatar-87 photo ap-single-avatar' height='87' width='87' \/>                        <div class=\"ap-single-head\">\n                            <h3 class=\"ap-single-name h5 mb-0\">Kevin Winter<\/h3>\n                                                            <p class=\"ap-single-rolle mb-0\">Managing Director<\/p>\n                                                    <\/div>\n                    <\/a>\n                <\/div>\n\n                <div class=\"ap-single-body\">\n                                            <p class=\"ap-single-bio mb-0\">Kevin Winter is Managing Director of on:NetworkAgency and helps businesses get found online. Writes about websites, SEO, visibility on Google and AI systems, and what actually works in practice. No agency fluff.  <\/p>\n                    \n                                            <a class=\"ap-single-link mt-3\" href=\"https:\/\/onnetwork.agency\/en\/author\/k-winter\/\">\n                            All 14 articles                            <span class=\"btn-arrow\">&rarr;<\/span>\n                        <\/a>\n                                    <\/div>\n            <\/div>\n        <\/div>\n    <\/section>\n    \n\n    <section id=\"blogpreview-section-block_0fd755415d8e25002bd71711dc123237\"\n        class=\"blogpreview-section alignfull layout-related mt-0\">\n        <div class=\"container\">\n\n            <p class=\"thema thema-blue mb-4\">Related articles<\/p>\n\n            <div class=\"row g-4 bp-related-row\">\n                                    <div class=\"col-12 col-md-4\">\n                        <a class=\"bp-related-card h-100\" href=\"https:\/\/onnetwork.agency\/en\/managed-wordpress-hosting\/\">\n                                                            <p class=\"thema thema-simple thema-blue mb-2\">\n                                    Guide                                <\/p>\n                                                        <h3 class=\"bp-related-title h5 mb-0 pb-3\">\n                                Managed WordPress hosting: What a managed service delivers in a worst-case scenario                            <\/h3>\n                        <\/a>\n                    <\/div>\n                                    <div class=\"col-12 col-md-4\">\n                        <a class=\"bp-related-card h-100\" href=\"https:\/\/onnetwork.agency\/en\/php2shell-wordpress\/\">\n                                                            <p class=\"thema thema-simple thema-blue mb-2\">\n                                    Guide                                <\/p>\n                                                        <h3 class=\"bp-related-title h5 mb-0 pb-3\">\n                                PHP2Shell: What the PHP vulnerability means for your WordPress site                            <\/h3>\n                        <\/a>\n                    <\/div>\n                                    <div class=\"col-12 col-md-4\">\n                        <a class=\"bp-related-card h-100\" href=\"https:\/\/onnetwork.agency\/en\/ai-literacy-obligation-what-your-team-needs-to-know-now\/\">\n                                                            <p class=\"thema thema-simple thema-blue mb-2\">\n                                    Guide                                <\/p>\n                                                        <h3 class=\"bp-related-title h5 mb-0 pb-3\">\n                                AI Literacy Obligation: What your team needs to know now                            <\/h3>\n                        <\/a>\n                    <\/div>\n                            <\/div>\n\n        <\/div>\n    <\/section>\n    \n\n\n\n<section id=\"text-section-block_1f6e78a7257eba4f17560c83f1217b68\" class=\"text-section alignfull layout-tb \">\n\n            <!-- Layout: Bild, Text \/ Text, Bild (Half bleed) -->\n        <div class=\"tb-image-half\">\n                            <img loading=\"lazy\" decoding=\"async\" width=\"972\" height=\"625\" src=\"https:\/\/onnetwork.agency\/wp-content\/uploads\/2026\/04\/text-2-e1780398494731.png\" class=\"tb-image\" alt=\"\" srcset=\"https:\/\/onnetwork.agency\/wp-content\/uploads\/2026\/04\/text-2-e1780398494731.png 972w, https:\/\/onnetwork.agency\/wp-content\/uploads\/2026\/04\/text-2-e1780398494731-300x193.png 300w, https:\/\/onnetwork.agency\/wp-content\/uploads\/2026\/04\/text-2-e1780398494731-768x494.png 768w\" sizes=\"auto, (max-width: 972px) 100vw, 972px\" \/>                    <\/div>\n\n        <div class=\"container position-relative z-1\">\n            <div class=\"row\">\n\n                <div class=\"col-12 col-lg-6 tb-content \">\n\n                    \n                                            <div class=\"tb-text-wysiwyg\">\n                            <h3><span style=\"color: #6978b5;\">About this article<\/span><\/h3>\n<p>This article is part of our guide series on technology and security. Status: October 26, 2026. We will update it as soon as new findings emerge.<\/p>\n<p><strong>Sources<\/strong><\/p>\n<ul>\n<li>Node.js Project: <a href=\"https:\/\/nodejs.org\/en\/blog\/vulnerability\/october-2026-security-releases\" target=\"_blank\" rel=\"noopener nofollow\">Wednesday, October 21, 2026 Security Releases<\/a> (2026-10-21)<\/li>\n<li>NIST: <a href=\"https:\/\/nvd.nist.gov\/vuln\/detail\/CVE-2026-111497\" target=\"_blank\" rel=\"noopener nofollow\">CVE-2026-111497 Detail<\/a> (CVSS 4.0 from Google, CISA assessment from 2026-10-23)<\/li>\n<li>GitHub Advisory Database: <a href=\"https:\/\/github.com\/advisories\/GHSA-9v8h-qqgm-4m35\" target=\"_blank\" rel=\"noopener nofollow\">GHSA-9v8h-qqgm-4m35<\/a><\/li>\n<li>Node.js Project: <a href=\"https:\/\/github.com\/nodejs\/Release\" target=\"_blank\" rel=\"noopener nofollow\">Release Schedule<\/a> (End of Support Node.js 20 and 25)<\/li>\n<li>Express: <a href=\"https:\/\/github.com\/expressjs\/body-parser\" target=\"_blank\" rel=\"noopener nofollow\">body-parser<\/a> (Unpacking requests in Express 5)<\/li>\n<\/ul>\n                        <\/div>\n                    \n                                    <\/div>\n            <\/div>\n        <\/div>\n\n    \n<\/section>","protected":false},"excerpt":{"rendered":"","protected":false},"author":3,"featured_media":1915,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[122,126],"tags":[],"class_list":["post-1911","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-guide-en","category-technology-en"],"acf":[],"_links":{"self":[{"href":"https:\/\/onnetwork.agency\/en\/wp-json\/wp\/v2\/posts\/1911","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/onnetwork.agency\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/onnetwork.agency\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/onnetwork.agency\/en\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/onnetwork.agency\/en\/wp-json\/wp\/v2\/comments?post=1911"}],"version-history":[{"count":8,"href":"https:\/\/onnetwork.agency\/en\/wp-json\/wp\/v2\/posts\/1911\/revisions"}],"predecessor-version":[{"id":1928,"href":"https:\/\/onnetwork.agency\/en\/wp-json\/wp\/v2\/posts\/1911\/revisions\/1928"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/onnetwork.agency\/en\/wp-json\/wp\/v2\/media\/1915"}],"wp:attachment":[{"href":"https:\/\/onnetwork.agency\/en\/wp-json\/wp\/v2\/media?parent=1911"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/onnetwork.agency\/en\/wp-json\/wp\/v2\/categories?post=1911"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/onnetwork.agency\/en\/wp-json\/wp\/v2\/tags?post=1911"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}