Summary
CVE-2026-85391 is a critical Use of Hard-coded Credentials vulnerability (CWE-798) affecting Peppermint, an open-source, self-hosted ticket management system by Peppermint-Lab. The application’s Docker Compose deployment configuration ships with a hardcoded value for the SECRET environment variable, which is used directly as the key for signing and verifying JSON Web Tokens. Because this value is publicly known and identical across default deployments, an unauthenticated attacker can forge valid session tokens for arbitrary user accounts, including administrators.
Technical details
- Root cause: the
docker-compose.ymlshipped with Peppermint sets a static, publicly visible value for theSECRETenvironment variable (e.g.peppermint4lifein the public repository configuration). - The API’s token verification logic (
apps/api/src/lib/jwt.ts) reads thisSECRETvalue from the environment, base64-decodes it, and uses the resulting buffer directly as the HMAC key passed tojwt.verify(). - Any deployment that does not override this default at install time uses the same signing key as every other default deployment.
- Attack vector: network, no authentication or user interaction required. An attacker who knows the default secret can construct a JWT for any user ID and present it as a valid bearer token.
- Impact: full authentication bypass, enabling impersonation of any user (including admins) and access to protected API endpoints, resulting in complete loss of confidentiality, integrity, and availability for affected instances.
Affected software
- Peppermint (Peppermint-Lab), all versions through 0.5.5, when deployed with the default/unmodified
SECRETvalue from the provideddocker-compose.yml.
Severity
- CVSS 3.1 Base Score: 9.8 (CRITICAL) —
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H - CVSS 4.0 Score: 9.3 (CRITICAL) —
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Mitigation and recommended actions
- Immediate: no fixed release version has been confirmed by the vendor at time of writing. Administrators should not rely on a future patch alone.
- Workaround: replace the default
SECRETvalue indocker-compose.yml(or the equivalent environment configuration) with a long, randomly generated, unique secret before deploying, and rotate it immediately on any existing deployment that has been running with the default value. - Rotating the secret invalidates all existing sessions; force re-authentication for all users after rotation.
- Restrict direct network exposure of the Peppermint API/admin interface where possible, and monitor for unexpected authenticated API activity as an interim detection measure.
- Track the vendor’s GitHub repository and issue tracker for an official fix and upgrade to a patched release once available.
How IONIX identifies potentially affected assets
IONIX matches the following signal against data already collected when it crawled the asset; identifying the technology sends no request beyond that crawl.
- Meta tag
description:Ticket management system, self-hosted, open source

