CVE-2026-49230 is an improper validation of integrity check value vulnerability in Apache APISIX affecting the jwe-decrypt plugin. Under the default configuration, the plugin does not correctly validate an integrity check value during JWE decryption/verification processing, which can allow authentication checks that depend on the plugin’s output to be bypassed. The issue affects Apache APISIX versions 3.8.0 through 3.16.0 and is fixed in 3.17.0.
Mallory correlates every CVE against your assets, your vendors, and active adversary campaigns. Know which vulnerabilities matter for you, not just which ones are loud.
What it means. What to do now. Patch path, mitigations, and the assume-compromise checklist.
What an attacker gets, and what they’ve been doing with it.
If you can’t patch tonight, do this now.
Patch, then assume compromise.
1 valid exploit after Mallory filtered fakes, detection scripts, and README-only repos.
Repository contains a working Python proof-of-concept exploit plus a self-contained lab for CVE-2026-49230, an authentication bypass in Apache APISIX's jwe-decrypt plugin. The main exploit file is exploit.py, which forges a compact JWE token whose header contains a valid consumer kid but whose IV, ciphertext, and GCM tag are attacker-controlled garbage. It then sends two requests to a target route: one without a token to confirm the route is gated, and one with the forged Bearer token to confirm bypass if the target is vulnerable. Successful exploitation results in HTTP 200 from the upstream despite the attacker not knowing the AES secret. The vulnerability described in the repository is a logic bug in APISIX <= 3.16.0 where AES-GCM decryption failure is not properly propagated. As a result, the plugin accepts a token with a resolvable kid even when authentication tag verification fails, forwarding a nil/empty identity header upstream and still allowing the request through. The repo also documents a secondary conditional surface: vulnerable versions expose a GET /apisix/plugin/jwe/encrypt API in plugin code that can mint valid JWEs if separately exposed through APISIX public-api, though the included exploit does not use that endpoint. Repository structure: exploit.py is the primary PoC; README.md, ANALYSIS.md, and EVIDENCE.txt document root cause, version boundaries, and empirical results; lab/setup.sh provisions etcd, APISIX, a consumer, and a protected route; lab/backend.py runs a simple HTTP server that echoes whether the request reached the upstream; lab/config.yaml configures APISIX; lab/teardown.sh cleans up. This is a real exploit repository, not merely a detector, though the payload is basic and hardcoded, making maturity best classified as OPERATIONAL rather than weaponized.
Products and vendors Mallory has correlated with this vulnerability. Open in Mallory to drill down to specific CPE configurations and version ranges.
Vendor-confirmed product mapping. Mallory continuously reconciles this list against your asset inventory.
3 sources tracked across advisories and community write-ups. News coverage will land here when it surfaces.
No news coverage yet. Advisories and community discussion only.
Query your assets running an affected version, and investigate the blast radius.
Every observed campaign linking this CVE to a named adversary.
Malware families riding this exploit, with evidence and IOCs.
YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.
Cross-references every affected SKU, including bundled OEM variants.
Community discussion across Reddit, Mastodon, and other social sources.