Turms Server
CVE-2025-66910
MEDIUM
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain privileged local host access
-
ExploitDump or debug the Turms JVM process memory
-
ExecutionRead cached rawPassword in AdminInfo
-
ImpactRecover plaintext admin credentials
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V6 - Authentication Credential storage protection
|
| Exploitation Conditions | Requires local access to the host running Turms Server v0.10.0-SNAPSHOT or earlier with privileges sufficient to read the JVM process memory (via memory dump, heap analysis, or debugger attachment). The specific condition that creates exposure is that BaseAdminService caches a successfully authenticated administrator's raw password in the rawPassword field of AdminInfo in memory as a performance optimization - so at least one administrator must have logged in during the process lifetime for a credential to be present. Limiting factors that reduce realistic risk: no remote attack vector, a required pre-existing high-privilege local foothold, no user interaction of the victim, and exposure limited to the credentials of admins who have authenticated since the server started. |
| Impact | This is a genuine but constrained, lower-priority issue - not a drop-everything flaw despite the Confidentiality/Integrity 'High' ratings. The CVSS vector (AV:L/AC:L/PR:H/UI:N, base 6.0) is internally consistent with the description: exploitation requires local access to the host and high privileges, since reading another process's memory via a dump, heap analysis, or debugger attachment presupposes an attacker who already has substantial control of the system. EPSS and SSVC data were not provided in the input, so exploitation-probability and automatability signals are unavailable. The vulnerability is NOT in CISA KEV, so there is no evidence of active exploitation; however a public exploit/report does exist (Xzzz111 report on GitHub), so publicly available exploit code exists. The key tension is that an attacker who meets the PR:H/AV:L prerequisite (root or equivalent on the host) can usually already read arbitrary secrets anyway - this flaw mainly adds value by exposing plaintext admin passwords that would otherwise be protected by bcrypt and could be reused on other systems. Net: legitimate defense-in-depth defect, but real-world urgency is low absent remote exploitability. |
| Exploit ScenarioDerived | An attacker who has already obtained high-privilege local access to a host running Turms Server attaches a debugger or captures a heap/process memory dump of the running JVM, then reads the rawPassword field in cached AdminInfo objects to recover administrator credentials in cleartext, defeating the bcrypt-at-rest protection. A public report demonstrating the issue exists. The recovered plaintext passwords are most dangerous when reused across other administrative interfaces or systems. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 05, 2026
Turms Server (turms-im:turms) v0.10.0-SNAPSHOT and earlier retains administrator passwords in cleartext in the rawPassword field of AdminInfo objects cached by BaseAdminService, so a locally positioned attacker who can read the JVM process memory - via memory dump, heap analysis, or debugger attachment - can recover admin credentials and completely bypass the intended bcrypt protection. Per our independent assessment the vector is CVSS:3.1/AV:L/AC:L/PR:H/UI:N/S:U/C:H/I:N/A:N, meaning exploitation requires an existing high-privilege local foothold on the host, victims need not interact, and only the credentials of administrators who have authenticated since the server process started are exposed. Publicly available exploit code exists, but no CISA KEV listing or other confirmation of active exploitation was identified at time of analysis.
RemediationAI
No vendor-released patch identified at time of analysis; the durable fix is an upstream code change that removes the rawPassword caching entirely and re-validates credentials against the bcrypt hash on each authentication (or caches only a non-reversible token/verifier instead of the plaintext), so affected operators should track the Turms repository at https://github.com/turms-im/turms for a corrected release and the PoC at https://github.com/Xzzz111/public_cve_report/blob/main/CVE-2025-66910_report.md for technical detail. Until a fix lands, apply compensating controls that target the local memory-read prerequisite: run the Turms JVM as a dedicated unprivileged service account so that reading its heap requires an additional privilege escalation, and virtualize or tightly restrict host access so that only trusted, audited operators have shell access (trade-off: this does not stop a privileged or root-level attacker, and it constrains legitimate troubleshooting). Reduce the chance of memory artifacts leaking off-host by disabling JVM core dumps for the service (ulimit -c 0 and a restrictive /proc/sys/kernel/core_pattern) and restrict heap-dump tooling - for example by starting the JVM with -XX:+DisableAttachMechanism and limiting sudo rights to jcmd/jmap (trade-off: this breaks legitimate profiling, APM agents, and journalctl-style post-incident memory forensics). Because the cached credential is only useful to an attacker while it is valid, rotate all administrator passwords and restart the service after any suspected memory disclosure, and ensure the JVM process does not run with world-readable heap dumps or verbose logging that could serialize AdminInfo objects. If a full fix cannot be deployed, consider fronting administrative access with an external identity provider or reverse proxy that enforces strong authentication, accepting the added operational complexity and the dependency on that additional component.
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Turms is a Java-based instant-messaging server, and the flaw is a CWE-256 (Plaintext Storage of a Password) design issue in its administrator authentication path rather than a memory-safety or injection bug. BaseAdminService (see turms-server-common/src/main/java/im/turms/server/common/domain/admin/service/BaseAdminService.java, around line 237) caches a successfully authenticated administrator's raw password inside the AdminInfo business object (the rawPassword field is defined at AdminInfo.java line 34) as an optimization to avoid repeated bcrypt verification. bcrypt remains in place for stored hashes, but because the plaintext is deliberately copied into the heap for the lifetime of the JVM process, the strong hashing is effectively neutralized for any actor able to inspect that process memory - for example with jmap/jcmd heap dumps, a JVM core dump, or a debugger attached to the process. The CPE cpe:2.3:a:turms-im:turms:0.10.0-snapshot:*:*:*:*:*:*:* pins the affected build, and the vulnerability class also raises secondary exposure concerns wherever these AdminInfo objects are serialized, logged, or persisted, although the confirmed impact boundary in the assessment is local memory disclosure.
Know when Turms gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:L/AC:L/PR:H/UI:N/S:U/C:H/I:H/A:N
Reading another process's memory requires local, high-privilege access (AV:L/PR:H); impact is cleartext credential disclosure, so C:H with no direct integrity or availability effect.
Primary rating from Vendor (mitre).
CVSS VectorVendor: mitre
DescriptionCVE.org
Turms Server v0.10.0-SNAPSHOT and earlier contains a plaintext password storage vulnerability in the administrator authentication system. The BaseAdminService class caches administrator passwords in plaintext within AdminInfo objects to optimize authentication performance. Upon successful login, raw passwords are stored unencrypted in memory in the rawPassword field. Attackers with local system access can extract these passwords through memory dumps, heap analysis, or debugger attachment, bypassing bcrypt protection.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
Affected Products (CPE)CVE.org
Memory exhaustion denial of service in Turms AI-Serving (v0.10.0-SNAPSHOT and earlier) allows remote attackers to crash
Authenticated users on Turms IM Server v0.10.0-SNAPSHOT and earlier can exploit a broken access control flaw (CWE-284) i
Cross-site request forgery in Turms Admin API through v0.10.0-SNAPSHOT allows remote attackers to cause an authenticated
Improper file type validation in the Turms AI-Serving module (v0.10.0-SNAPSHOT and earlier) allows unauthenticated remot
NVD
CVE.org
EPSS
GitHub
VulDB
Exploit-DB