Sa-Token CVE-2025-15117
LOWSeverity by source
CVSS:4.0/AV:N/AC:H/AT:N/PR:L/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Network-reachable but needs low-priv auth (PR:L) and hard-to-meet conditions (AC:H); vendor-assigned impact is availability-only, so C:N/I:N/A:L.
Primary rating from Vendor (vuldb).
CVSS VectorVendor: vuldb
Lifecycle Timeline
2DescriptionCVE.org
A weakness has been identified in Dromara Sa-Token up to 1.44.0. This affects the function ObjectInputStream.readObject of the file SaJdkSerializer.java. Executing manipulation can lead to deserialization. The attack may be launched remotely. This attack is characterized by high complexity. It is indicated that the exploitability is difficult. The vendor was contacted early about this disclosure but did not respond in any way.
AnalysisAI
Deserialization weakness in Dromara Sa-Token through version 1.44.0 allows a low-privileged authenticated remote attacker to trigger unsafe object deserialization through the SaJdkSerializer component's ObjectInputStream.readObject call, but only under a narrow set of preconditions. Exploitation requires an application that has explicitly enabled Sa-Token's JDK serialization backend and exposes a code path where attacker-controlled bytes reach readObject; per the assessed vector (CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:L) the impact is limited to availability with no confidentiality or integrity effect, and high attack complexity plus vendor-described difficult exploitability mean this is a low real-world risk despite the deserialization tag. No public exploit has been identified at time of analysis, the issue does not appear in CISA KEV, and the maintainers did not respond to early disclosure, so no vendor patch is confirmed.
Technical ContextAI
Sa-Token is a Java authentication and authorization framework whose session/token state can be persisted through pluggable serialization backends. The vulnerable code path is SaJdkSerializer.java, which uses Java's native ObjectInputStream.readObject to reconstruct objects from byte streams. Java native deserialization is a classic CWE-20 (improper input validation) sink because readObject trusts the type metadata embedded in the stream and will instantiate arbitrary classes on the caller's classpath, enabling gadget-chain abuse when untrusted bytes are supplied. The CVE affects Sa-Token releases up to and including 1.44.0 and specifically the JDK serializer implementation, meaning deployments configured with an alternative (for example JSON-based) serializer are outside the attack surface. The CVSS 4.0 vector AV:N/AC:H/AT:N/PR:L/UI:N/VC:N/VI:N/VA:L reflects remote reachability but high attack complexity, no attack preconditions beyond that, low privileges required, no user interaction, and availability-only impact, which is consistent with an assessed CVSS 3.1 vector of AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:N/A:L. CWE-20 is used here rather than a dedicated deserialization CWE, indicating the root cause is framed as missing validation of the deserialized input before it reaches ObjectInputStream.
Affected ProductsAI
Dromara Sa-Token versions up to and including 1.44.0 are affected, with the flaw isolated to the SaJdkSerializer.java class in the JDK-serialization backend; no CPE identifiers were supplied in the available intelligence. The most directly relevant published reference is a GitHub repository tracking the CVE at https://github.com/Yohane-Mashiro/Sa-Token-cve, alongside the VulDB entries https://vuldb.com/?id.338495, https://vuldb.com/?ctiid.338495, and the submitter record https://vuldb.com/?submit.711750; these are third-party tracking pages rather than a vendor advisory, since the maintainers did not respond to disclosure. Any application embedding Sa-Token <= 1.44.0 and configured to use JDK serialization for token/session persistence should be treated as in scope, while installations that never invoke SaJdkSerializer or that use a non-JDK serializer backend are not affected.
RemediationAI
No vendor-released patch has been identified at time of analysis, as the Sa-Token maintainers neither responded to the disclosure nor published a fixed version; the primary action is therefore to stop using the vulnerable code path rather than to wait for an upgrade. The most effective mitigation is to reconfigure Sa-Token to a non-JDK serialization backend (for example a JSON-based serializer) so that SaJdkSerializer is never invoked; the trade-off is that existing persisted sessions or tokens serialized in JDK format may become unreadable and could require a migration or forced re-authentication window. Where the JDK serializer cannot be swapped out, restrict every endpoint that can feed bytes into ObjectInputStream to trusted, authenticated principals, and introduce strict input validation, signature verification, or an ObjectInputFilter that allow-lists expected classes before readObject executes; class allow-listing can break legitimate deserialization of unexpected but valid types and needs testing. Because the assessed impact is availability-only (VA:L) with high attack complexity and PR:L, network segmentation and rate limiting around any exposed session-handling endpoints provide limited additional value compared with serializer replacement. Monitor for denial-of-service style failures or deserialization exceptions as an indicator of attempted abuse, and track the GitHub CVE repository and VulDB entries for a future maintainer fix; if an upgrade is eventually published, apply it as the definitive remediation over any of the above compensating controls.
Oracle Java SE 7 Update 6 and earlier contains multiple sandbox bypass vulnerabilities via the ClassFinder and forName m
Remote code execution in IBM Sterling B2B Integrator, Sterling Integrator, and Tivoli Common Reporting allows unauthenti
Java Runtime Environment sandbox bypass via incorrect image channel verification in 2D component allows remote unauthent
Oracle Java SE JDK/JRE 7 and 6 Update 27 and earlier allows remote code execution with complete system compromise throug
JBoss Seam 2 in Red Hat JBoss EAP 4.3.0 fails to sanitize JBoss Expression Language inputs, allowing remote attackers to
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 update 4 and earlier, 6 up
Multiple vulnerabilities in Oracle Java 7 before Update 11 allow remote attackers to execute arbitrary code by (1) using
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 2 and earlier, 6 Up
The WLS Security component in Oracle WebLogic Server 10.3.6.0, 12.1.2.0, 12.1.3.0, and 12.2.1.0 allows remote attackers
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 7 and earlier allow
Remote unauthenticated attackers can execute arbitrary code on Adobe ColdFusion servers through Java deserialization fla
The ExceptionDelegator component in Apache Struts before 2.2.3.1 interprets parameter values as OGNL expressions during
Same weakness CWE-20 – Improper Input Validation
View allSame technique Deserialization
View allShare
External POC / Exploit Code
Leaving vuln.today