CVE-2025-15222
📋 TL;DR
This vulnerability in Dromara Sa-Token allows remote attackers to execute arbitrary code through insecure deserialization in the SaSerializerTemplateForJdkUseBase64.java component. It affects all systems running Sa-Token up to version 1.44.0 that use the vulnerable serializer. The attack requires specific conditions but can lead to complete system compromise.
💻 Affected Systems
- Dromara Sa-Token
⚠️ Manual Verification Required
This CVE does not have specific version information in our database, so automatic vulnerability detection cannot determine if your system is affected.
Why? The CVE database entry doesn't specify which versions are vulnerable (no version ranges provided by the vendor/NVD).
🔒 Custom verification scripts are available for registered users. Sign up free to download automated test scripts.
- Review the CVE details at NVD
- Check vendor security advisories for your specific version
- Test if the vulnerability is exploitable in your environment
- Consider updating to the latest version as a precaution
⚠️ Risk & Real-World Impact
Worst Case
Remote code execution leading to full system compromise, data theft, and lateral movement within the network.
Likely Case
Denial of service or limited code execution depending on attacker skill and system configuration.
If Mitigated
Attack fails due to input validation, network segmentation, or lack of required dependencies.
🎯 Exploit Status
Exploit requires specific conditions and knowledge of the target system. Public PoC exists but requires adaptation.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: Not available
Vendor Advisory: Not available
Restart Required: Yes
Instructions:
1. Monitor Dromara Sa-Token GitHub for security updates. 2. Consider migrating to alternative authentication libraries if no patch is forthcoming. 3. Apply workarounds immediately.
🔧 Temporary Workarounds
Replace vulnerable serializer
allReplace SaSerializerTemplateForJdkUseBase64 with a secure serializer implementation
Modify Sa-Token configuration to use a different serializer class
Input validation filter
allImplement strict input validation for all deserialization endpoints
Add input validation filters before ObjectInputStream.readObject calls
🧯 If You Can't Patch
- Implement network segmentation to isolate vulnerable systems
- Deploy WAF rules to block suspicious deserialization patterns
🔍 How to Verify
Check if Vulnerable:
Check if Sa-Token version is ≤1.44.0 and if SaSerializerTemplateForJdkUseBase64 is in use
Check Version:
Check pom.xml or build.gradle for sa-token dependency version
Verify Fix Applied:
Verify serializer has been replaced and test with known exploit payloads
📡 Detection & Monitoring
Log Indicators:
- Java deserialization errors
- Unexpected ClassNotFoundException
- Suspicious ObjectInputStream usage
Network Indicators:
- Base64 encoded serialized objects in HTTP requests
- Unusual outbound connections after deserialization
SIEM Query:
source="application.log" AND "ObjectInputStream" AND "readObject" AND error