GCVE-1988-2026-0037
Vulnerability from gna-1988 – Published: 2026-09-07 13:20 – Updated: 2026-09-09 10:11
VLAI
EPSS
VEX
Title
[0day-Rubbish] SonicWall SMA 1000 — Pre-Auth Deserialization RCE (CVSS 9.8) via Struts 1 Property Injection and Auth-Filter Rewrite
Summary
Full-Disclosure List,
An unauthenticated remote code execution vulnerability chain in SonicWall SMA 1000 series appliances is being disclosed
here. The chain yields code execution as the `mgmt-server` user (uid=1011) on the management plane, with no credentials
and no prior knowledge of the appliance beyond a reachable address.
A full technical writeup with a reproducible proof-of-concept is published at:
https://0day-rubbish.com/blog/sonicwall-sma-preauth-deserialization-rce
Repository (advisory + PoC):
https://github.com/Exploit-Garbage/0day-Rubbish
-----------------------------------------------------------------
1. Summary
-----------------------------------------------------------------
A four-stage pre-auth chain combines a Struts 1 property-injection
flaw, an in-memory Jetty authentication-filter rewrite, an unauthenticated
SSO Primary-Administrator token issuance, and a Java deserialization sink.
The result is unauthenticated RCE as `mgmt-server` (uid=1011).
CVSS 3.1 base: 9.8 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)
Vector: network, low complexity, no privileges, no user interaction.
-----------------------------------------------------------------
2. Affected product
-----------------------------------------------------------------
Vendor: SonicWall
Product: SMA 1000 series (Secure Mobile Access)
Firmware: 12.4.x line (verified on a 12.4 build; other 12.x lines
may share the Struts 1 / Jetty console stack — not all
were independently tested).
Component: /Console management plane, Central Management Service (CMS),
/configUserCommunityEPC.do
-----------------------------------------------------------------
3. Vulnerability details
-----------------------------------------------------------------
Stage 1 — Authentication bypass via Struts 1 property injection
Every Struts 1 ActionForm exposes a `multipartRequestHandler`
property. By walking the bean graph
(`servletContext -> servletHandler -> filterMappings`) an
unauthenticated caller can rewrite the Jetty authentication
filter's pathSpecs to a non-existent path and force the filter
cache to rebuild. The entire `/Console` API and console actions
become reachable without authentication.
Stage 2 — Enable Central Management Service
With `/Console` unauthenticated, Central Management Service (CMS)
can be enabled from the console API, preparing the SSO token path.
Stage 3 — Unauthenticated SSO Primary Admin token
GET /Console/CentralManagement/SSO/Authorize?user=admin&roleUser=Primary+Admin
returns a Primary Administrator token without any password. The
token is exchanged for a valid JSESSIONID. The attacker is now the
Primary Administrator, fully unauthenticated.
Stage 4 — Java deserialization RCE
The `storedCommunity` field of `/configUserCommunityEPC.do` is
consumed by a setter that calls `ObjectInputStream.readObject()`
on attacker-controlled input. A `BeanComparator` + `TemplatesImpl`
gadget chain is delivered through this field. The command executes
as `mgmt-server` (uid=1011). Output is written to the webroot and
read back via an anonymous GET.
-----------------------------------------------------------------
4. Impact
-----------------------------------------------------------------
- Unauthenticated remote code execution as `mgmt-server`.
- Full compromise of the SMA 1000 management plane.
- The appliance terminates remote-access VPN sessions; compromise
of the management plane can be leveraged to pivot into the
protected internal network and to intercept or reset VPN sessions.
- No credentials, no user interaction, no prior appliance knowledge
beyond a reachable HTTPS address.
-----------------------------------------------------------------
5. Proof of concept
-----------------------------------------------------------------
A reproducible PoC is included in the repository under
`product/sonicwall/sma-12.4/preauth-deserialization-rce/exploit`.
The full chain and reproduction steps are documented in the advisory
URL above. The PoC contains no operator-identifying information and
targets placeholder hosts.
-----------------------------------------------------------------
6. Disclosure timeline
-----------------------------------------------------------------
- 2026-07-26: Technical writeup + PoC published to the project
site and repository.
- 2026-07-27: This Full-Disclosure submission.
Vendor contact: SonicWall PSIRT was notified (cc'd). A coordinated
embargo was not requested by the operator prior to publication; this
submission is made in parallel with public availability of the
writeup.
-----------------------------------------------------------------
7. Credits
-----------------------------------------------------------------
Discovered and documented by the 0day-Rubbish independent
vulnerability-research project.
-----------------------------------------------------------------
8. References
-----------------------------------------------------------------
- Advisory: https://0day-rubbish.com/blog/sonicwall-sma-preauth-deserialization-rce
- Repo: https://github.com/Exploit-Garbage/0day-Rubbish
--
0day-Rubbish
disclosure () 0day-rubbish com
https://0day-rubbish.com
_______________________________________________
Sent through the Full Disclosure mailing list
https://nmap.org/mailman/listinfo/fulldisclosure
Web Archives & RSS: https://seclists.org/fulldisclosure/
Severity
No CVSS data available.
Assigner
References
7 references
Impacted products
1 product
| Vendor | Product | Version | CPE status | |
|---|---|---|---|---|
| Sonicwall | SonicWall SMA 1000 |
Affected:
unknown
|
guessed |
{
"containers": {
"cna": {
"affected": [
{
"product": "SonicWall SMA 1000",
"vendor": "Sonicwall",
"versions": [
{
"status": "affected",
"version": "unknown"
}
]
}
],
"credits": [
{
"lang": "en",
"type": "finder",
"value": "disclosure via Fulldisclosure"
}
],
"descriptions": [
{
"lang": "en",
"value": "Full-Disclosure List,\n\nAn unauthenticated remote code execution vulnerability chain in SonicWall SMA 1000 series appliances is being disclosed \nhere. The chain yields code execution as the `mgmt-server` user (uid=1011) on the management plane, with no credentials \nand no prior knowledge of the appliance beyond a reachable address.\n\nA full technical writeup with a reproducible proof-of-concept is published at:\n\n https://0day-rubbish.com/blog/sonicwall-sma-preauth-deserialization-rce\n\nRepository (advisory + PoC):\n\n https://github.com/Exploit-Garbage/0day-Rubbish\n\n-----------------------------------------------------------------\n1. Summary\n-----------------------------------------------------------------\n\nA four-stage pre-auth chain combines a Struts 1 property-injection\nflaw, an in-memory Jetty authentication-filter rewrite, an unauthenticated\nSSO Primary-Administrator token issuance, and a Java deserialization sink.\nThe result is unauthenticated RCE as `mgmt-server` (uid=1011).\n\nCVSS 3.1 base: 9.8 (AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H)\nVector: network, low complexity, no privileges, no user interaction.\n\n-----------------------------------------------------------------\n2. Affected product\n-----------------------------------------------------------------\n\nVendor: SonicWall\nProduct: SMA 1000 series (Secure Mobile Access)\nFirmware: 12.4.x line (verified on a 12.4 build; other 12.x lines\n may share the Struts 1 / Jetty console stack \u2014 not all\n were independently tested).\nComponent: /Console management plane, Central Management Service (CMS),\n /configUserCommunityEPC.do\n\n-----------------------------------------------------------------\n3. Vulnerability details\n-----------------------------------------------------------------\n\nStage 1 \u2014 Authentication bypass via Struts 1 property injection\n Every Struts 1 ActionForm exposes a `multipartRequestHandler`\n property. By walking the bean graph\n (`servletContext -\u003e servletHandler -\u003e filterMappings`) an\n unauthenticated caller can rewrite the Jetty authentication\n filter\u0027s pathSpecs to a non-existent path and force the filter\n cache to rebuild. The entire `/Console` API and console actions\n become reachable without authentication.\n\nStage 2 \u2014 Enable Central Management Service\n With `/Console` unauthenticated, Central Management Service (CMS)\n can be enabled from the console API, preparing the SSO token path.\n\nStage 3 \u2014 Unauthenticated SSO Primary Admin token\n GET /Console/CentralManagement/SSO/Authorize?user=admin\u0026roleUser=Primary+Admin\n returns a Primary Administrator token without any password. The\n token is exchanged for a valid JSESSIONID. The attacker is now the\n Primary Administrator, fully unauthenticated.\n\nStage 4 \u2014 Java deserialization RCE\n The `storedCommunity` field of `/configUserCommunityEPC.do` is\n consumed by a setter that calls `ObjectInputStream.readObject()`\n on attacker-controlled input. A `BeanComparator` + `TemplatesImpl`\n gadget chain is delivered through this field. The command executes\n as `mgmt-server` (uid=1011). Output is written to the webroot and\n read back via an anonymous GET.\n\n-----------------------------------------------------------------\n4. Impact\n-----------------------------------------------------------------\n\n- Unauthenticated remote code execution as `mgmt-server`.\n- Full compromise of the SMA 1000 management plane.\n- The appliance terminates remote-access VPN sessions; compromise\n of the management plane can be leveraged to pivot into the\n protected internal network and to intercept or reset VPN sessions.\n- No credentials, no user interaction, no prior appliance knowledge\n beyond a reachable HTTPS address.\n\n-----------------------------------------------------------------\n5. Proof of concept\n-----------------------------------------------------------------\n\nA reproducible PoC is included in the repository under\n`product/sonicwall/sma-12.4/preauth-deserialization-rce/exploit`.\nThe full chain and reproduction steps are documented in the advisory\nURL above. The PoC contains no operator-identifying information and\ntargets placeholder hosts.\n\n-----------------------------------------------------------------\n6. Disclosure timeline\n-----------------------------------------------------------------\n\n- 2026-07-26: Technical writeup + PoC published to the project\n site and repository.\n- 2026-07-27: This Full-Disclosure submission.\n\nVendor contact: SonicWall PSIRT was notified (cc\u0027d). A coordinated\nembargo was not requested by the operator prior to publication; this\nsubmission is made in parallel with public availability of the\nwriteup.\n\n-----------------------------------------------------------------\n7. Credits\n-----------------------------------------------------------------\n\nDiscovered and documented by the 0day-Rubbish independent\nvulnerability-research project.\n\n-----------------------------------------------------------------\n8. References\n-----------------------------------------------------------------\n\n- Advisory: https://0day-rubbish.com/blog/sonicwall-sma-preauth-deserialization-rce\n- Repo: https://github.com/Exploit-Garbage/0day-Rubbish\n\n--\n0day-Rubbish\ndisclosure () 0day-rubbish com\nhttps://0day-rubbish.com\n_______________________________________________\nSent through the Full Disclosure mailing list\nhttps://nmap.org/mailman/listinfo/fulldisclosure\nWeb Archives \u0026 RSS: https://seclists.org/fulldisclosure/"
}
],
"providerMetadata": {
"dateUpdated": "2026-09-09T10:11:28Z",
"orgId": "4e2abfbf-4a2a-4b76-a4e0-d77c18ba156c",
"shortName": "VULNARCHIVE"
},
"references": [
{
"tags": [
"technical-description",
"exploit"
],
"url": "https://vuln.freearchive.org/archive/full-disclosure/2026/Aug/2"
},
{
"tags": [
"technical-description"
],
"url": "https://seclists.org/fulldisclosure/2026/Aug/2"
},
{
"url": "https://0day-rubbish.com"
},
{
"url": "https://0day-rubbish.com/blog/sonicwall-sma-preauth-deserialization-rce"
},
{
"url": "https://github.com/Exploit-Garbage/0day-Rubbish"
},
{
"url": "https://nmap.org/mailman/listinfo/fulldisclosure"
},
{
"url": "https://seclists.org/fulldisclosure/"
}
],
"source": {
"defect": [
"https://seclists.org/fulldisclosure/2026/Aug/2"
],
"discovery": "EXTERNAL"
},
"title": "[0day-Rubbish] SonicWall SMA 1000 \u2014 Pre-Auth Deserialization RCE (CVSS 9.8) via Struts 1 Property Injection and Auth-Filter Rewrite",
"x_gcve": [
{
"recordType": "advisory",
"relationships": [],
"vulnId": "GCVE-1988-2026-0037",
"x_vulnarchive": {
"archiveUrl": "https://vuln.freearchive.org/archive/full-disclosure/2026/Aug/2",
"automated": true,
"contentSha256": "78588e06d62af725c03928b8b4da89488c10191a6628c7abfa57534c7dde9d20",
"evidenceScore": 9,
"messageId": "",
"originalUrl": "https://seclists.org/fulldisclosure/2026/Aug/2",
"policy": "vulnarchive-1",
"sourceFormat": "text/html",
"sourcePublishedAt": "2026-07-27T03:58:55Z"
}
}
]
}
},
"cveMetadata": {
"assignerOrgId": "4e2abfbf-4a2a-4b76-a4e0-d77c18ba156c",
"assignerShortName": "VULNARCHIVE",
"datePublished": "2026-09-07T13:20:21Z",
"dateUpdated": "2026-09-09T10:11:28Z",
"state": "PUBLISHED",
"vulnId": "GCVE-1988-2026-0037"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
Loading…
Loading…
Experimental. This forecast is provided for visualization only and may change without notice. Do not use it for operational decisions.
Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
Loading…
The MITRE ATT&CK techniques below are AI-generated suggestions, inferred from the description of the
vulnerability by the CIRCL/vulnerability-attack-technique-classification-roberta-base
model, served locally by ML-Gateway.
They have not been verified by an analyst and are provided for guidance only.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.
Loading…
Loading…