CVE-2026-31949
NixOS vulnerability analysis and mitigation

Overview

CVE-2026-31949 is a Denial of Service (DoS) vulnerability in LibreChat, an open-source ChatGPT-like application, affecting all versions up to and including 0.8.2. An authenticated attacker can crash the Node.js server process by sending a malformed DELETE request to the /api/convos endpoint, causing complete service unavailability for all users. The vulnerability was published on March 13, 2026, and patched in version 0.8.3-rc1. It carries a CVSS v3.1 base score of 6.5 (Medium) (GitHub Advisory).

Technical details

The root cause is missing input validation in the DELETE /api/convos route handler (api/server/routes/convos.js, line 88), classified as CWE-248 (Uncaught Exception). The handler attempts to destructure req.body.arg without first verifying that req.body or req.body.arg exists; when arg is absent or null, a TypeError is thrown synchronously. Because Express 4 does not automatically catch errors from async route handlers, this TypeError escapes the Express error handling middleware and is instead caught by the global uncaughtException handler in api/server/index.js (~line 416), which calls process.exit(1), terminating the entire Node.js process. Notably, other routes in the same file (e.g., POST /api/convos/update and POST /api/convos/archive) correctly use optional chaining (req.body.arg ?? {}) to avoid this issue (GitHub Advisory).

Impact

Successful exploitation results in a complete crash of the LibreChat Node.js server process via process.exit(1), causing total service unavailability for all users until the process is manually restarted. All in-flight requests are terminated upon crash, though no data corruption or confidentiality breach occurs. There is no integrity or confidentiality impact; the sole consequence is high availability impact affecting the entire LibreChat deployment (GitHub Advisory).

Exploitability

A proof-of-concept exploit is publicly available in the GitHub Security Advisory, consisting of simple curl commands requiring only a valid JWT token. The attack requires low privileges (any authenticated user) and no user interaction, and can be triggered repeatedly with a single HTTP request. The EPSS score is approximately 0.039%, and there is no evidence of active in-the-wild exploitation or CISA KEV catalog listing as of the time of publication (GitHub Advisory).

Exploitation steps

  1. Obtain Authentication: Register or obtain credentials for any user account on the target LibreChat instance to acquire a valid JWT token.
  2. Identify Target Endpoint: Confirm the target is running LibreChat version 0.8.2 or earlier by checking version indicators in the UI or API responses.
  3. Craft Malformed Request: Prepare a DELETE request to /api/convos with an empty JSON body ({}) or a body containing {"arg": null}, omitting the required arg object.
  4. Send the Request: Execute the request with the valid JWT token:
curl -X DELETE https://example.com/api/convos \
  -H "Authorization: Bearer <valid_jwt_token>" \
  -H "Content-Type: application/json" \
  -d '{}'
  1. Trigger Server Crash: The missing req.body.arg causes a synchronous TypeError during destructuring, which escapes Express middleware and is caught by the global uncaughtException handler, which calls process.exit(1), crashing the entire Node.js process.
  2. Repeat for Sustained DoS: Since the server must be manually restarted, the attacker can re-send the request after each restart to maintain denial of service (GitHub Advisory).

Indicators of compromise

  • Logs: Node.js process logs showing TypeError: Cannot destructure property 'conversationId' of 'req.body.arg' as it is undefined followed by process.exit(1) or sudden process termination entries in application logs.
  • Logs: Access logs recording DELETE requests to /api/convos with a Content-Type: application/json header and an empty or null body from a single authenticated user in rapid succession.
  • Network: Repeated DELETE HTTP requests to the /api/convos endpoint with minimal or empty JSON payloads ({} or {"arg": null}) from the same source IP.
  • Process: Unexpected termination and restart of the LibreChat Node.js process, particularly if occurring multiple times in a short window, indicating repeated exploitation attempts (GitHub Advisory).

Mitigation and workarounds

The primary remediation is to upgrade LibreChat to version 0.8.3-rc1 or later, which fixes the vulnerability. As a workaround prior to patching, operators can add input validation before the destructuring step in api/server/routes/convos.js to check that req.body and req.body.arg exist, returning a 400 error if not, or use optional chaining (req.body.arg ?? {}) consistent with other routes in the same file. Additionally, implementing rate limiting on the DELETE /api/convos endpoint and adding a global unhandledRejection handler can reduce the impact of exploitation attempts (GitHub Advisory).

Additional resources


SourceThis report was generated using AI

Related NixOS vulnerabilities:

CVE ID

Severity

Score

Technologies

Component name

CISA KEV exploit

Has fix

Published date

CVE-2026-86738CRITICAL9.3
  • NixOS logoNixOS
  • snipe-it
NoYesSep 08, 2026
CVE-2026-86734HIGH7.1
  • NixOS logoNixOS
  • snipe-it
NoYesSep 08, 2026
CVE-2026-86735MEDIUM5.9
  • NixOS logoNixOS
  • snipe-it
NoYesSep 08, 2026
CVE-2026-86737MEDIUM5.3
  • NixOS logoNixOS
  • snipe-it
NoYesSep 08, 2026
CVE-2026-86736MEDIUM5.3
  • NixOS logoNixOS
  • snipe-it
NoYesSep 08, 2026

Free Vulnerability Assessment

Benchmark your Cloud Security Posture

Evaluate your cloud security practices across 9 security domains to benchmark your risk level and identify gaps in your defenses.

Request assessment

Get a personalized demo

Ready to see Wiz in action?

"Best User Experience I have ever seen, provides full visibility to cloud workloads."
David EstlickCISO
"Wiz provides a single pane of glass to see what is going on in our cloud environments."
Adam FletcherChief Security Officer
"We know that if Wiz identifies something as critical, it actually is."
Greg PoniatowskiHead of Threat and Vulnerability Management