CVE-2021-43090
📋 TL;DR
CVE-2021-43090 is an XML External Entity (XXE) vulnerability in soa-model's WSDLParser function that allows attackers to read arbitrary files, conduct server-side request forgery (SSRF), or cause denial of service by processing malicious WSDL files. This affects any application using soa-model library versions before 1.6.4 to parse WSDL documents.
💻 Affected Systems
- soa-model library
📦 What is this software?
Soa Model by Predic8
⚠️ Risk & Real-World Impact
Worst Case
Complete system compromise through file disclosure, SSRF attacks on internal services, or denial of service via XML bombs.
Likely Case
Arbitrary file read from the server filesystem, potentially exposing sensitive configuration files or credentials.
If Mitigated
Limited impact if XML parsing is disabled or external entity processing is blocked at the network/application level.
🎯 Exploit Status
XXE vulnerabilities are well-understood with many public exploit examples. Exploitation requires ability to submit WSDL files to vulnerable parser.
🛠️ Fix & Mitigation
✅ Official Fix
Patch Version: 1.6.4
Vendor Advisory: https://github.com/membrane/soa-model/releases/tag/v1.6.4
Restart Required: Yes
Instructions:
1. Update soa-model dependency to version 1.6.4 or later. 2. Update pom.xml or build.gradle to use fixed version. 3. Rebuild and redeploy application. 4. Restart affected services.
🔧 Temporary Workarounds
Disable XXE processing
allConfigure XML parser to disable external entity processing
Set XML parser properties: FEATURE_SECURE_PROCESSING = true, DISALLOW_DOCTYPE_DECL = true
Input validation
allValidate and sanitize WSDL input before parsing
🧯 If You Can't Patch
- Implement network segmentation to restrict vulnerable services from accessing sensitive internal resources
- Deploy web application firewall (WAF) with XXE protection rules
🔍 How to Verify
Check if Vulnerable:
Check application dependencies for soa-model version <1.6.4. Review code for WSDLParser usage.
Check Version:
Check Maven: mvn dependency:tree | grep soa-model. Check Gradle: gradle dependencies | grep soa-model.
Verify Fix Applied:
Verify soa-model version is 1.6.4 or later in dependencies. Test with known XXE payloads.
📡 Detection & Monitoring
Log Indicators:
- Unusual file access patterns from XML parser
- Large XML parsing errors or timeouts
- Requests with XML entities referencing local files
Network Indicators:
- Outbound connections from XML parser to internal services
- Unusual file:// or http:// references in XML payloads
SIEM Query:
source="application_logs" AND ("XXE" OR "external entity" OR "DOCTYPE" OR "ENTITY")
🔗 References
- https://github.com/membrane/soa-model/commit/19de16902468e7963cc4dc6b544574bc1ea3f251
- https://github.com/membrane/soa-model/commit/3aa295f155f621d5ea661cb9a0604013fc8fd8ff
- https://github.com/membrane/soa-model/issues/281
- https://github.com/membrane/soa-model/releases/tag/v1.6.4
- https://github.com/membrane/soa-model/commit/19de16902468e7963cc4dc6b544574bc1ea3f251
- https://github.com/membrane/soa-model/commit/3aa295f155f621d5ea661cb9a0604013fc8fd8ff
- https://github.com/membrane/soa-model/issues/281
- https://github.com/membrane/soa-model/releases/tag/v1.6.4