What was disclosed
On October 21, 2026 the Node.js project released fixes for CVE-2026-111497, a high-severity flaw in the Brotli decoder that ships inside Node.js. Security researchers have named it Node2Shell. A crafted Brotli stream makes the decoder write past the end of its memory buffer, which can allow remote code execution. An application is exposed when it hands Brotli data that someone else controls to the decoder built into Node.js.
The fixed releases are Node.js 22.23.4, 24.22.1, and 26.12.1. The Node.js project’s security release notice has the details.
What we checked
The PulseAI platform is built on Node.js. After the disclosure we reviewed every place where data from outside PulseAI could be decompressed:
- Incoming requests. The PulseAI API and AI assistant access do not decompress request bodies, so a compressed request never reaches the decoder.
- Outbound connections. PulseAI connects only to a fixed set of named service providers, such as the cloud and AI providers it reads spend data from, and never to an address a user supplies.
- Uploaded documents. Word documents use a different compression format and a different decoder. PDF documents were the one exception, described below.
- Reports PulseAI generates. The libraries that build PDF reports decode Brotli with their own JavaScript code, not with the decoder in Node.js.
- The website and status page. Neither pulseai.now nor status.pulseai.now decompresses anything a visitor sends.
The one affected path
When an organization uploads its AI policy to the Policy Center, PulseAI reads the text of the document so it can propose the rules the policy states. A PDF can store its text compressed with Brotli, and the library PulseAI uses to read PDFs passed that compressed text to the decoder in Node.js. A crafted PDF could therefore have put attacker-chosen data into the vulnerable code.
Only a signed-in administrator of a PulseAI customer organization can upload a policy document. No unauthenticated request, and no user in any other role, could reach this path. When we checked on October 23, 2026, the step that reads uploaded policy PDFs had not run in any PulseAI region since the vulnerability was disclosed.
What changed in PulseAI 2.12.0
PulseAI now reads Brotli-compressed text in a PDF with the PDF library’s own JavaScript decoder, which is not affected, and never passes it to the decoder in Node.js. Policy documents read exactly as they did before. The protection does not depend on which Node.js version the platform runs on, and it stays in place after Node.js itself is updated.
PulseAI 2.12.0 also updates two third-party components that received security advisories the same week: the toolkit behind AI assistant access, and the tool that builds the PulseAI web app. Our review found that neither advisory applied to PulseAI as deployed. The updates keep both components current.
What you need to do
Nothing. There is no PulseAI update to apply and no setting to change, and policy uploads work as before. If your vendor-risk or security team is collecting statements from suppliers about Node2Shell, you can point them to this page.
If you believe you have found a security issue in PulseAI, our security and responsible disclosure page explains how to report it.