GCVE Workshop - 22 September 2026 (14:00-18:00), Luxembourg Before The Vulnopticon Conference - Registration

GCVE-1988-2026-0037

Vulnerability from gna-1988 – Published: 2026-09-07 13:20 – Updated: 2026-09-09 10:11
VLAI
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.
Impacted products
Vendor Product Version CPE status
Sonicwall SonicWall SMA 1000 Affected: unknown
guessed Create a notification for this product.

{
  "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"
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

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…

Detection rules are retrieved from Rulezet.

Loading…

Loading…

Loading…