Description
Catalyst::Plugin::Static::Simple versions through 0.38 for Perl mark responses as publicly cacheable.

The _serve_static method always sets the Cache-Control header to "public", with no means of overriding it. This advises proxies that the content may be stored in a shared cache, and may be reused in responses to requests from other users. (This includes requests with an Authorization header.)

Configuring the expires time to "0" to disable caching, as documented, is ignored.
Published: 2026-08-20
Score: 5.7 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

Catalyst::Plugin::Static::Simple for Perl sets the Cache‑Control header to "public" for every static asset served. The implementation offers no means to override this header, including when the request contains an Authorization header. Consequently, intermediaries such as shared reverse proxies or CDN edge caches may store and later serve content that was intended to be private, thereby exposing sensitive data to unintended recipients.

Affected Systems

All installations of Catalyst::Plugin::Static::Simple for Perl up to and including version 0.38 are affected. No further major versions are mentioned as affected in the advisory.

Risk and Exploitability

The CVSS score of 5.7 suggests moderate severity. The EPSS score is below 1%, and the vulnerability is not listed in the CISA KEV catalog. This vulnerability means that any content served over HTTPS or HTTP to authenticated clients could be cached by a shared intermediary, potentially leaking data to other users. Exploitation requires the attacker to have access to a shared caching proxy or observe cached responses; thus the attack vector is information‑disclosure via caching, not an active attack.

Generated by OpenCVE AI on August 28, 2026 at 19:17 UTC.

Remediation

Vendor Workaround

Apply the patch, and configure the default Cache-Control as needed. For deployments that cannot apply the patch, a method modifier of _serve_static in the Catalyst class can be used to override the Cache-Control or Expires headers as needed, for example: around _serve_static => sub { my ( $next, $c, $path, $cache_control ) = @_; $c->$next($path); my $config = $c->config->{'Plugin::Static::Simple'}; $cache_control ||= $config->{cache_control} || "public"; if ( defined $config->{expires} ) { if ( $config->{expires} <= 0 ) { $cache_control = 'no-store'; $c->res->headers->expires(0); } else { $c->res->headers->expires( time() + $config->{expires} ); } } $c->res->headers->header( 'Cache-Control' => $cache_control ); return 1; };


OpenCVE Recommended Actions

  • Apply the patch distributed by the maintenance team to enable configurable Cache‑Control headers
  • If the patch cannot be applied, add a method modifier to the Catalyst::Plugin::Static::Simple class that overrides the _serve_static method, setting a non‑public Cache‑Control header or Expires header as appropriate
  • Verify that any content that should remain private either removes the Authorization header before caching or explicitly uses "private" or "no-store" cache directives

Generated by OpenCVE AI on August 28, 2026 at 19:17 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 28 Aug 2026 15:30:00 +0000

Type Values Removed Values Added
Metrics cvssV3_1

{'score': 5.7, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:U/C:H/I:N/A:N'}

ssvc

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


Fri, 21 Aug 2026 13:30:00 +0000

Type Values Removed Values Added
First Time appeared Perl-catalyst
Perl-catalyst catalyst Plugin Static Simple
Vendors & Products Perl-catalyst
Perl-catalyst catalyst Plugin Static Simple

Thu, 20 Aug 2026 23:30:00 +0000

Type Values Removed Values Added
References

Thu, 20 Aug 2026 18:30:00 +0000

Type Values Removed Values Added
Description Catalyst::Plugin::Static::Simple versions through 0.38 for Perl mark responses as publicly cacheable. The _serve_static method always sets the Cache-Control header to "public", with no means of overriding it. This advises proxies that the content may be stored in a shared cache, and may be reused in responses to requests from other users. (This includes requests with an Authorization header.) Configuring the expires time to "0" to disable caching, as documented, is ignored.
Title Catalyst::Plugin::Static::Simple versions through 0.38 for Perl mark responses as publicly cacheable
Weaknesses CWE-524
References

Subscriptions

Perl-catalyst Catalyst Plugin Static Simple
cve-icon MITRE

Status: PUBLISHED

Assigner: CPANSec

Published:

Updated: 2026-08-28T15:07:16.802Z

Reserved: 2026-07-14T14:24:29.805Z

Link: CVE-2026-15743

cve-icon Vulnrichment

Updated: 2026-08-20T23:07:17.920Z

cve-icon NVD

Status : Deferred

Published: 2026-08-20T19:16:48.700

Modified: 2026-08-28T16:17:07.540

Link: CVE-2026-15743

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-28T19:30:16Z

Weaknesses
  • CWE-524

    Use of Cache Containing Sensitive Information