VULNARCHIVE

GCVE-1988-2026-0120

Security advisory: Pre-authentication RCE in nanoDLP stable build #10729 (Nano3Dtech)

Description (en)

0day Rubbish Research Team is publicly disclosing a vulnerability in nanoDLP stable build #10729 (Nano3Dtech). The 
research is published and a proof-of-concept is available.

Pre-authentication RCE (CVSS 9.8, pre-authentication)

nanoDLP exposes an unauthenticated remote code execution vulnerability. The Guest (unauthenticated) endpoint POST 
/formula evaluates user-supplied JavaScript in an embedded Otto JS sandbox, which exposes a live nanoDLP domain object 
via nanodlpContext(). The Config object is a cross-request shared live pointer; Config.ShieldUnpause is writable, and 
Config.Save() persists it to db/machine.json without sanitization. An attacker injects [[Exec <cmd>]] into 
ShieldUnpause, then the also-unauthenticated GET /printer/unpause triggers the print engine to execute the G-code, 
reaching os/exec with shell semantics as root. Dynamically verified with uid=0(root).

Impact: Full read of the host filesystem and configuration as root, arbitrary OS command execution, and full control of 
the print server and host. The injected G-code is persisted and re-executes on every unpause.

Advisory: https://0day-rubbish.com/blog/nanodlp-unauth-gcode-injection-rce

PoC and full analysis: https://github.com/Exploit-Garbage/0day-Rubbish

-- 
0day Rubbish Research Team
https://0day-rubbish.com
_______________________________________________
Sent through the Full Disclosure mailing list
https://nmap.org/mailman/listinfo/fulldisclosure
Web Archives & RSS: https://seclists.org/fulldisclosure/

References

Raw JSON
{
  "containers": {
    "cna": {
      "affected": [
        {
          "product": "advisory Pre-authentication",
          "vendor": "Security",
          "versions": [
            {
              "status": "affected",
              "version": "unknown"
            }
          ]
        }
      ],
      "credits": [
        {
          "lang": "en",
          "type": "finder",
          "value": "disclosure via Fulldisclosure"
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "value": "0day Rubbish Research Team is publicly disclosing a vulnerability in nanoDLP stable build #10729 (Nano3Dtech). The \nresearch is published and a proof-of-concept is available.\n\nPre-authentication RCE (CVSS 9.8, pre-authentication)\n\nnanoDLP exposes an unauthenticated remote code execution vulnerability. The Guest (unauthenticated) endpoint POST \n/formula evaluates user-supplied JavaScript in an embedded Otto JS sandbox, which exposes a live nanoDLP domain object \nvia nanodlpContext(). The Config object is a cross-request shared live pointer; Config.ShieldUnpause is writable, and \nConfig.Save() persists it to db/machine.json without sanitization. An attacker injects [[Exec <cmd>]] into \nShieldUnpause, then the also-unauthenticated GET /printer/unpause triggers the print engine to execute the G-code, \nreaching os/exec with shell semantics as root. Dynamically verified with uid=0(root).\n\nImpact: Full read of the host filesystem and configuration as root, arbitrary OS command execution, and full control of \nthe print server and host. The injected G-code is persisted and re-executes on every unpause.\n\nAdvisory: https://0day-rubbish.com/blog/nanodlp-unauth-gcode-injection-rce\n\nPoC and full analysis: https://github.com/Exploit-Garbage/0day-Rubbish\n\n-- \n0day Rubbish Research Team\nhttps://0day-rubbish.com\n_______________________________________________\nSent through the Full Disclosure mailing list\nhttps://nmap.org/mailman/listinfo/fulldisclosure\nWeb Archives & RSS: https://seclists.org/fulldisclosure/"
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-11T11:51:02Z",
        "orgId": "4e2abfbf-4a2a-4b76-a4e0-d77c18ba156c",
        "shortName": "VULNARCHIVE"
      },
      "references": [
        {
          "tags": [
            "technical-description",
            "exploit"
          ],
          "url": "https://vuln.freearchive.org/archive/full-disclosure/2026/Aug/57"
        },
        {
          "tags": [
            "technical-description"
          ],
          "url": "https://seclists.org/fulldisclosure/2026/Aug/57"
        },
        {
          "url": "https://0day-rubbish.com"
        },
        {
          "url": "https://0day-rubbish.com/blog/nanodlp-unauth-gcode-injection-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/57"
        ],
        "discovery": "EXTERNAL"
      },
      "title": "Security advisory: Pre-authentication RCE in nanoDLP stable build #10729 (Nano3Dtech)",
      "x_gcve": [
        {
          "recordType": "advisory",
          "relationships": [],
          "vulnId": "GCVE-1988-2026-0120",
          "x_vulnarchive": {
            "archiveUrl": "https://vuln.freearchive.org/archive/full-disclosure/2026/Aug/57",
            "automated": true,
            "contentSha256": "311e7dc120b27dccd2a21cc671849c884ae669888482809cc8e55f1638e05953",
            "evidenceScore": 9,
            "messageId": "",
            "originalUrl": "https://seclists.org/fulldisclosure/2026/Aug/57",
            "policy": "vulnarchive-1",
            "sourceFormat": "text/html",
            "sourcePublishedAt": "2026-08-18T06:03:51Z"
          }
        }
      ]
    }
  },
  "cveMetadata": {
    "assignerOrgId": "4e2abfbf-4a2a-4b76-a4e0-d77c18ba156c",
    "assignerShortName": "VULNARCHIVE",
    "datePublished": "2026-09-07T13:20:22Z",
    "dateUpdated": "2026-09-11T11:51:02Z",
    "state": "PUBLISHED",
    "vulnId": "GCVE-1988-2026-0120"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2"
}