CVE-2025-3930: Strapi insufficient session expiration in JWT authentication

CVE-2025-3930 · Severity: medium · CVSS 4 · Published 2025-10-16

Strapi is an open-source headless CMS platform used to build content management systems and APIs. The platform uses JWT tokens for user authentication, but these tokens are not invalidated when a user logs out or their account is deactivated. An attacker who obtains a token can use it for up to 30 days (or longer if renewed), potentially gaining unauthorized access to content and administrative functions. This is particularly dangerous because there is a publicly accessible token renewal endpoint that allows indefinite token lifetime extension.

Technologies: @strapi/strapi (npm). Vendors: npm.

Quick answers

Is CVE-2025-3930 exploited in the wild?
No. Junglewise Threat Intelligence has no report of CVE-2025-3930 being exploited in the wild.
How severe is CVE-2025-3930?
Medium severity, with a CVSS score of 4, published 16 October 2025.
Which products and versions are affected?
@strapi/strapi (npm) SEMVER:introduced=0,fixed=5.24.1.
Is there a fix for CVE-2025-3930?
Yes. @strapi/strapi (npm): upgrade to 5.24.1 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.
How is CVE-2025-3930 attacked?
It is attacked over the network.
Am I affected by CVE-2025-3930?
Check whether you run @strapi/strapi (npm) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

How to fix

  • @strapi/strapi (npm): upgrade to 5.24.1 or later
    npm install @strapi/strapi@5.24.1

Technical details

Strapi uses JSON Web Tokens (JWT) for authentication but fails to invalidate tokens upon user logout or account deactivation (CWE-613: Insufficient Session Expiration). An attacker who steals or intercepts a JWT token can reuse it for authentication until the token naturally expires—by default 30 days, but configurable. The vulnerability is exacerbated by the presence of an unauthenticated `/admin/renew-token` endpoint that allows attackers to renew expiring tokens indefinitely, extending their window of unauthorized access. An attacker with a stolen token gains access to the same resources and administrative functions as the legitimate user. The vulnerability affects all versions prior to 5.24.1, which includes a fix for this issue.

Affected products

  • Strapi Strapi All versions prior to 5.24.1

Identifiers

  • CVE-2025-3930
  • GHSA-4r8w-3jww-m2rp

Timeline

  • 2025-10-16: disclosed
  • 2025-10-16: patched: Fixed in version 5.24.1

References

This page as Markdown. Free to reuse under CC BY 4.0 with a link back.