VULNARCHIVE

GCVE-1988-2026-0167

[0day-rubbish] NoMachine Terminal Server 10.0.57 two vulnerabilities

Description (en)

0day Rubbish Research Team is publicly disclosing two vulnerabilities in NoMachine Terminal Server 10.0.57.

Vulnerability 1 — Pre-authentication heap memory corruption (out-of-bounds write to double-free) (CVSS 9.8, 
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H, CWE-787)

NoMachine Terminal Server is a closed-source remote-desktop gateway used by enterprises to deliver virtual desktops and 
remote sessions over HTTPS. The nxwebrunner CGI RequestCollector::parsePOST contains an unbounded quote-scan loop and 
an unbounded name-copy loop; a single unauthenticated multipart/form-data POST with a filename attribute reads past the 
body terminator and overflows heap chunk metadata. The cleanup path frees the corrupted chunk, producing a double-free 
abort and an RCE-capable heap-overflow primitive (verified: 9/10 trigger requests crashed).

Authentication: unauthenticated / pre-auth

Vulnerability 2 — Pre-authentication stack buffer overflow with return-address control (CVSS 9.8, 
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H, CWE-787)

In the same nxwebrunner CGI, RequestCollector::parsePOST copies attacker-controlled multipart name and value fields and 
then executes sprintf(stack_buf, "%s=%s&", name, value) into a 1032-byte stack buffer. When name + value + 2 exceeds 
1032, the write overwrites saved registers and the return address. The binary is non-PIE with stack canaries disabled, 
so the attacker controls the return address (verified in core dumps); stable RCE currently requires a leak primitive, 
but the pre-auth crash is deterministic.

Authentication: unauthenticated / pre-auth

Full technical analyses and reproducible proofs-of-concept:
  https://0day-rubbish.com/blog/nomachine-terminal-server-preauth-heap-corruption
  https://0day-rubbish.com/blog/nomachine-terminal-server-preauth-stack-overflow

Project archive (ongoing disclosure series):
  https://github.com/Exploit-Garbage/0day-Rubbish

Vendor has been notified. CVE IDs are pending.

--
0day Rubbish Research Team
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/

References

Raw JSON
{
  "containers": {
    "cna": {
      "affected": [
        {
          "product": "Terminal Server",
          "vendor": "Nomachine",
          "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 two vulnerabilities in NoMachine Terminal Server 10.0.57.\n\nVulnerability 1 — Pre-authentication heap memory corruption (out-of-bounds write to double-free) (CVSS 9.8, \nCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H, CWE-787)\n\nNoMachine Terminal Server is a closed-source remote-desktop gateway used by enterprises to deliver virtual desktops and \nremote sessions over HTTPS. The nxwebrunner CGI RequestCollector::parsePOST contains an unbounded quote-scan loop and \nan unbounded name-copy loop; a single unauthenticated multipart/form-data POST with a filename attribute reads past the \nbody terminator and overflows heap chunk metadata. The cleanup path frees the corrupted chunk, producing a double-free \nabort and an RCE-capable heap-overflow primitive (verified: 9/10 trigger requests crashed).\n\nAuthentication: unauthenticated / pre-auth\n\nVulnerability 2 — Pre-authentication stack buffer overflow with return-address control (CVSS 9.8, \nCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H, CWE-787)\n\nIn the same nxwebrunner CGI, RequestCollector::parsePOST copies attacker-controlled multipart name and value fields and \nthen executes sprintf(stack_buf, \"%s=%s&\", name, value) into a 1032-byte stack buffer. When name + value + 2 exceeds \n1032, the write overwrites saved registers and the return address. The binary is non-PIE with stack canaries disabled, \nso the attacker controls the return address (verified in core dumps); stable RCE currently requires a leak primitive, \nbut the pre-auth crash is deterministic.\n\nAuthentication: unauthenticated / pre-auth\n\nFull technical analyses and reproducible proofs-of-concept:\n  https://0day-rubbish.com/blog/nomachine-terminal-server-preauth-heap-corruption\n  https://0day-rubbish.com/blog/nomachine-terminal-server-preauth-stack-overflow\n\nProject archive (ongoing disclosure series):\n  https://github.com/Exploit-Garbage/0day-Rubbish\n\nVendor has been notified. CVE IDs are pending.\n\n--\n0day Rubbish Research Team\ndisclosure () 0day-rubbish com\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/"
        }
      ],
      "problemTypes": [
        {
          "descriptions": [
            {
              "cweId": "CWE-787",
              "description": "CWE-787",
              "lang": "en",
              "type": "CWE"
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-09-11T11:56:39Z",
        "orgId": "4e2abfbf-4a2a-4b76-a4e0-d77c18ba156c",
        "shortName": "VULNARCHIVE"
      },
      "references": [
        {
          "tags": [
            "technical-description"
          ],
          "url": "https://vuln.freearchive.org/archive/full-disclosure/2026/Sep/8"
        },
        {
          "tags": [
            "technical-description"
          ],
          "url": "https://seclists.org/fulldisclosure/2026/Sep/8"
        },
        {
          "url": "https://0day-rubbish.com"
        },
        {
          "url": "https://0day-rubbish.com/blog/nomachine-terminal-server-preauth-heap-corruption"
        },
        {
          "url": "https://0day-rubbish.com/blog/nomachine-terminal-server-preauth-stack-overflow"
        },
        {
          "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/Sep/8"
        ],
        "discovery": "EXTERNAL"
      },
      "title": "[0day-rubbish] NoMachine Terminal Server 10.0.57 two vulnerabilities",
      "x_gcve": [
        {
          "recordType": "advisory",
          "relationships": [],
          "vulnId": "GCVE-1988-2026-0167",
          "x_vulnarchive": {
            "archiveUrl": "https://vuln.freearchive.org/archive/full-disclosure/2026/Sep/8",
            "automated": true,
            "contentSha256": "947019dcef07e6da69699de40cb1846fc86a6de7f2b7fde9d3f888ddd42496c8",
            "evidenceScore": 9,
            "messageId": "",
            "originalUrl": "https://seclists.org/fulldisclosure/2026/Sep/8",
            "policy": "vulnarchive-1",
            "sourceFormat": "text/html",
            "sourcePublishedAt": "2026-08-31T15:11:19Z"
          }
        }
      ]
    }
  },
  "cveMetadata": {
    "assignerOrgId": "4e2abfbf-4a2a-4b76-a4e0-d77c18ba156c",
    "assignerShortName": "VULNARCHIVE",
    "datePublished": "2026-09-07T13:35:56Z",
    "dateUpdated": "2026-09-11T11:56:39Z",
    "state": "PUBLISHED",
    "vulnId": "GCVE-1988-2026-0167"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2"
}