Programmer’s Digest #208
10/21/2026-10/28/2026 Brotli Flaw Triggers Patching Across Microsoft, Node.js, Python Packages; Exploitation of Two PHP2Shell Flaws; Critical Flaw in Python’s Popular Pillow Image Library And More.
1. Node2Shell: Brotli Flaw Triggers Patching Across Microsoft, Node.js, Python Packages
A critical out-of-bounds write flaw in Google’s Brotli compression library, tracked as CVE-2026-111497 and dubbed Node2Shell, has prompted patches from Microsoft, Node.js and two Python packages. Bun, Envoy and Istio were also updated.
The bug affects Brotli 1.0.3 through 1.2.0 and carries a CVSS v4 score of 9.2. Fixes are in versions 1.0.10, 1.1.1 and 1.2.1. Specially crafted input can overflow a decoder buffer, causing crashes, memory leaks or, potentially, unauthenticated code execution. OpenAI Codex Security researchers found it during red-teaming. The root cause had been fixed in Brotli’s source in February, but no release followed.
Imperva demonstrated code execution on the official Node.js 24.22.0 Linux arm64 image, though not on every attempt, and has not published its exploit. Attacks require malicious Brotli data to reach the decoder, such as through compressed request bodies, untrusted server responses or files.
No in-the-wild exploitation has been reported. A public proof-of-concept works only against a deliberately weakened build, and some researchers argue the flaw enables only denial of service.
Microsoft’s October 25 updates cover .NET, Visual Studio and PowerShell. The Python packages Brotli and brotlicffi are patched. DuckDB, Apache Arrow, p7zip and others remain unpatched. Affected services must be restarted and container images rebuilt.
2. CISA Confirms Active Exploitation of Two PHP2Shell Flaws Enabling Remote Code Execution
CISA confirmed active exploitation of the recently patched PHP2Shell flaws, adding them to its KEV catalog. Both are rated 9.2 on the CVSS scale and allow unauthenticated remote code execution:
- CVE-2026-109618: out-of-memory corruption flaw
- CVE-2026-109619: stale internal request-state flaw
The listing follows Adel Karimi of Perplexity confirming successful remote code execution against honeypot systems on October 24. He noted the result applies to a favorable single-worker mod_php setup and does not measure exploit reliability elsewhere.
Fixes arrived October 21 in PHP 8.5.12, 8.4.27, 8.3.36, and 8.2.35. Federal agencies must patch by October 29.
PHP runs roughly 70% of websites, and Censys estimates over 32.51 million PHP services still run affected versions. Dozens of vendors and agencies, including Dell, Citrix, Siemens, IBM, Drupal, and WordPress, have issued advisories.
Separately, the PHP Foundation released Windows builds 8.5.12-1, 8.4.27-1, 8.3.36-1, and 8.2.35-1 to fix CVE-2026-111497 (“Broccoli2Shell”), an out-of-bounds write in the Brotli decoder that can enable privilege escalation and remote code execution. It is reachable through the cURL extension only when automatic HTTP response decompression is enabled, which is off by default. Brotli 1.0.10, 1.1.1, and 1.2.1 contain the fix.
3. Critical Flaw in Python’s Popular Pillow Image Library Allows Code Execution via a Crafted Image
Pillow, Python’s most widely used image library, has a flaw that lets attackers run operating system commands on a server through a crafted filename. The bug, CVE-2026-112900, affects EPS handling: Pillow passes the filename to Ghostscript without checking it, and Ghostscript can treat an attacker-chosen name as instructions. It needs the gs program installed and affects versions 2.6.0 to 12.3.0.
Pillow 13.0.0, released October 16, is a large security release. It also fixes two critical-rated bugs: a stale-data memory flaw and JPEG decoding overflows, one of which allows code execution via a crafted FlashPix file. A TIFF overflow dating to 2013 affects saving to in-memory buffers. No attacks are known.
What to do: upgrade, rebuild bundled containers, and note that Pillow 13 requires Python 3.11 or newer.
pip install -U "Pillow>=13.0.0"Until then: keep gs off hosts handling untrusted uploads, avoid draft() and thumbnail() on untrusted JPEGs, and treat in-memory TIFF saves of user images as risky.
4. Gheist Hackers Abuse GitHub Tokens to Steal Repository Secrets
A campaign dubbed “Gheist,” active since September 15, uses stolen GitHub tokens to plant workflows that print a repository’s secrets into its own log, download the log through the API, and delete the run within seconds. Wiz researchers recovered over 13,500 branches from more than 850 compromised accounts, including enterprise private repositories.
Each attack creates a “ci-sync-” branch with an unsigned commit that appears to come from the token’s owner. In enterprises, attackers cycled through tokens, cloned private repositories, and later used cloud credentials to enumerate AWS Secrets Manager.
Payloads keep evolving. One variant captures secrets from all deployment environments, often production credentials. On October 19, another began targeting self-hosted runners for tokens, private keys, cloud credentials, and Kubernetes tokens, though that job is buggy.
GitHub’s July 28 control, which holds suspicious workflow runs in public repositories until a collaborator approves them, has blocked every observed public attack. It doesn’t cover private repositories or GitHub Enterprise Server.
5. Tailscale Warns of SSH Flaws Allowing Root Privilege Escalation
Tailscale is racing to patch 11 unpatched vulnerabilities, collectively named Tailworm, that could allow credential theft, server crashes, and root-level code execution.
Cyberdione Labs found the flaws while auditing Tailscale 1.104.2 and the self-hosted headscale v0.29.5 control server. Founder Erica Windisch confirmed each was reproduced on unmodified, released software, and the researchers published the details, arguing that quick public awareness will speed remediation. The most critical bug sits in Tailscale’s SSH server. Through Unix-socket forwarding, an authorized attacker could gain root code execution on a target. Other flaws affect experimental app connectors (cloud metadata, internal network, and Kubernetes access), the DERP relay client (memory exhaustion), tailscale serve (administrative-API access and authorization bypasses), and headscale (an unauthenticated crash loop that blocks device onboarding).
Tailscale called the issues “serious,” noting exploitation depends on permissions and configuration. VP of Engineering Mike Shaver said the company does not recommend disabling Tailscale SSH entirely. Instead, Tailscale advises reviewing SSH access policies, limiting access to necessary users and devices, and disabling SSH forwarding by setting TS_SSH_DISABLE_FORWARDING=1 in the tailscaled environment and restarting the service, which mitigates several of the more serious findings.
Developers aim to release a fixed version by the end of Tuesday, October 27, and urge users to prepare to apply the patched client when available.
6. Critical x402 SDK Flaw Could Let Malicious APIs Drain AI Agents’ Token Balances
AI agents using the x402 SDKs could be tricked into signing a payment for their entire token balance, security firm V12 said on October 22. The default client set no spending limit until August 18 releases added one. Only agents that signed payments automatically, in apps with no limits, were at risk.
This was one of three critical flaws among 25 V12 found, all fixed on August 18. Another let a facilitator accept a Solana token approval, which moves no tokens, as valid payment; only the TypeScript SDK was affected. The third let a malicious server get an agent to sign a login message for a different website.
V12 found them through code review and local tests. No attacks have been reported. However, the x402 Foundation published no security advisory, and npm audit and PyPI showed no warnings, so developers may not know to upgrade.
The fixes cap payments at $1 by default, restrict clients to recognized US dollar stablecoins, add the missing Solana check, and require login messages to match the site contacted. Upgrade to 2.23.0 or later. Teams that can’t upgrade can register a payment policy that blocks large amounts.