CVE-2026-89186

Medium

Description

Use of Cache Containing Sensitive Information in ZenHive mpp allows a shared HTTP cache to store a paid response and serve it to clients that never paid. MPP.Plug.verify_credential in lib/mpp/plug.ex sets payment-receipt and cache-control: private on the connection before the wrapped application runs, and registers no register_before_send/2 callback. Plug.Conn.put_resp_header/3 replaces an existing header, so a mounting application that sets its own cache-control on the paid resource (for example public, max-age=3600) silently overrides the private the library relies on, and a CDN or reverse proxy can then store the paid 200 together with its Payment-Receipt and serve both to unpaid clients. The library-level guarantee is therefore defeatable by the application it protects. For the same reason a downstream non-2xx response still carried Payment-Receipt, issuing a receipt for a response that delivered no resource. This issue affects mpp: from 0.1.0 before 0.16.2.

SeverityMedium
CVSS6.3
Exploit probability—
ProductZenhive Mpp
PublishedSep 16, 2026
First seenSep 16, 2026
Weakness typeCWE-524CWE-524

How to fix

Update
  • ZenHive mpp0.16.2, 2fd91a5ecbd0b0ad2a4ac202b79659e8126dbc0b or later

Affected products

ProductAffected versionsFixed in
ZenHive mpp0.1.0 ≤ v < 0.16.2, 2d4d1d94aae7790ae0623063961adbeef171fa71 ≤ v < 2fd91a5ecbd0b0ad2a4ac202b79659e8126dbc0b0.16.2, 2fd91a5ecbd0b0ad2a4ac202b79659e8126dbc0b

Check your version

Choose the product and enter the version you run to see whether it falls in the affected range.

In the Intelligence 360 plan

Attack Surface Management

See the assets tied to your domains, the technologies they run and known vulnerabilities in one list.