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.
Published: 2026-09-16
Score: 6.3 Medium
EPSS: < 1% Very Low
KEV: No
Impact: Sensitive Data Exposure
Action: Patch
AI Analysis

Impact

MPP.Plug.injects a Payment‑Receipt header and a Cache‑Control: private directive before the wrapped application runs. If the downstream application later writes its own Cache‑Control header (e.g., public, max‑age=3600), the Plug’s private header is silently replaced, and the plug’s Payment‑Receipt header remains. A shared HTTP cache or CDN can then store the paid 200 response and the receipt, subsequently serving it to clients that never paid, exposing confidential payment information and content. In addition, non‑2xx responses can still carry the receipt, inadvertently communicating a successful purchase for failed requests.

Affected Systems

The vulnerability exists in ZenHive’s MPP plug for all releases from 0.1.0 up to but not including 0.16.2. This includes any project that mounts MPP.Plug in front of a protected application.

Risk and Exploitability

The CVSS score of 6.3 indicates a moderate risk. EPSS data is unavailable and the CVE is not listed in CISA’s KEV catalog, suggesting no widely used exploit is known. The likely attack vector is configuration or request manipulation: an attacker who can trigger a paid response or cause the application to set a public Cache‑Control header could lead a shared cache to store and redistribute that response. The exploit does not require code execution or privileged access, merely the ability to request or influence the paid resource’s caching policy.

Generated by OpenCVE AI on September 16, 2026 at 14:03 UTC.

Remediation

Vendor Workaround

In the application mounted behind MPP.Plug, stop setting Cache-Control on paid routes so the library's private survives to the response, or set a directive that is itself safe for a shared cache (private, or no-store). Where the application must set its own caching policy, configure the CDN or reverse proxy not to cache responses carrying a Payment-Receipt header.


OpenCVE Recommended Actions

  • Upgrade ZenHive mpp to version 0.16.2 or newer, which removes the ability to override the private Cache‑Control directive.
  • Modify your application code to avoid setting a Cache‑Control header on paid routes that would override MPP.Plug’s private directive; prefer a caching directive safe for shared caches such as private or no‑store.
  • Configure your CDN or reverse proxy to treat responses containing a Payment‑Receipt header as non‑cacheable, or to explicitly deny caching for any response that includes the header.
  • Ensure that no Payment‑Receipt header is sent on non‑2xx responses, to prevent accidental disclosure of purchase status for failed requests.

Generated by OpenCVE AI on September 16, 2026 at 14:03 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Wed, 16 Sep 2026 15:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Wed, 16 Sep 2026 14:00:00 +0000

Type Values Removed Values Added
First Time appeared Zenhive
Zenhive mpp
Vendors & Products Zenhive
Zenhive mpp

Wed, 16 Sep 2026 08:30:00 +0000

Type Values Removed Values Added
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.
Title mpp writes Payment-Receipt and Cache-Control before the wrapped application runs, letting a consumer's own Cache-Control expose paid responses to shared caches
First Time appeared Zenhive
Zenhive mpp
Weaknesses CWE-524
CPEs cpe:2.3:a:ZenHive:mpp:*:*:*:*:*:*:*:*
Vendors & Products Zenhive
Zenhive mpp
References
Metrics cvssV4_0

{'score': 6.3, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:L/SI:N/SA:N'}


cve-icon MITRE

Status: PUBLISHED

Assigner: EEF

Published:

Updated: 2026-09-16T14:50:44.399Z

Reserved: 2026-09-11T19:00:02.549Z

Link: CVE-2026-89186

cve-icon Vulnrichment

Updated: 2026-09-16T14:50:40.806Z

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-09-16T09:17:07.527

Modified: 2026-09-16T20:38:33.883

Link: CVE-2026-89186

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-16T14:15:09Z

Weaknesses
  • CWE-524

    Use of Cache Containing Sensitive Information