Skip to content
Heist/ feed
Back to feed
Medium

Checkmate: Regular Expression Denial of Service (ReDoS) via User-Controlled Regex in Monitor Advanced Matching

Type: advisorySources: OSV

Checkmate is an open-source, self-hosted tool designed to track and monitor server hardware, uptime, response times, and incidents in real-time with beautiful visualizations. From 3.5.1 until 3.9.2, an authenticated admin or superadmin can set matchMethod to regex and place a malicious expression in the expectedValue field for advanced HTTP monitor matching. server/src/api/validation/monitorValidation.ts accepts the expression, and server/src/service/network/AdvancedMatcher.ts synchronously evaluates it against an attacker-controlled HTTP response body on the Node.js main event loop without a timeout or worker isolation, allowing catastrophic backtracking to freeze API endpoints, monitor checks, and WebSocket connections for all users. This issue is fixed in version 3.9.2.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-70656
Confirmed fixed CVEs
Not specified
Updated in this feed
2 Nov 2026, 20:09 UTC · Revision 1

Source evidence

Checkmate: Regular Expression Denial of Service (ReDoS) via User-Controlled Regex in Monitor Advanced Matching

core-osv · Original source

Published 21 Aug 2026, 17:59 UTC

Checkmate is an open-source, self-hosted tool designed to track and monitor server hardware, uptime, response times, and incidents in real-time with beautiful visualizations. From 3.5.1 until 3.9.2, an authenticated admin or superadmin can set matchMethod to regex and place a malicious expression in the expectedValue field for advanced HTTP monitor matching. server/src/api/validation/monitorValidation.ts accepts the expression, and server/src/service/network/AdvancedMatcher.ts synchronously evaluates it against an attacker-controlled HTTP response body on the Node.js main event loop without a timeout or worker isolation, allowing catastrophic backtracking to freeze API endpoints, monitor checks, and WebSocket connections for all users. This issue is fixed in version 3.9.2.

osv:CVE-2026-70656
Complete source record
{
  "id": "385e49ef6dc1fba41e23f039c09a98ef91a008ce67104e9fbc8ed5df51e93b3d",
  "url": "https://osv.dev/vulnerability/CVE-2026-70656",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Checkmate: Regular Expression Denial of Service (ReDoS) via User-Controlled Regex in Monitor Advanced Matching",
    "summary": "Checkmate is an open-source, self-hosted tool designed to track and monitor server hardware, uptime, response times, and incidents in real-time with beautiful visualizations. From 3.5.1 until 3.9.2, an authenticated admin or superadmin can set matchMethod to regex and place a malicious expression in the expectedValue field for advanced HTTP monitor matching. server/src/api/validation/monitorValidation.ts accepts the expression, and server/src/service/network/AdvancedMatcher.ts synchronously evaluates it against an attacker-controlled HTTP response body on the Node.js main event loop without a timeout or worker isolation, allowing catastrophic backtracking to freeze API endpoints, monitor checks, and WebSocket connections for all users. This issue is fixed in version 3.9.2.",
    "evidence": "osv:CVE-2026-70656",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-70656",
      "aliases": [
        "CVE-2026-70656",
        "GHSA-4c6j-p2cv-wf56"
      ],
      "metrics": [
        {
          "type": "CVSS_V3",
          "score": "CVSS:3.1/AV:N/AC:L/PR:H/UI:N/S:U/C:N/I:N/A:H"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/bluewave-labs/checkmate",
              "type": "GIT",
              "events": [
                {
                  "introduced": "c2170267e8d4653e04040f40f220966208f8dc21"
                },
                {
                  "fixed": "d368ec5bd7af1cd81628c47a89d1d830cd415590"
                },
                {
                  "fixed": "0df71d6356c87c747e0b796b0c34e33f2a5203fa"
                },
                {
                  "fixed": "adba25269c455878bf8065bc28cfe5d74e58692f"
                },
                {
                  "fixed": "d5ec2936ad77ab773529057b442a6eb55dd578eb"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "3.5.1"
                      },
                      {
                        "fixed": "3.9.2"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "0df71d6356c87c747e0b796b0c34e33f2a5203fa"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "adba25269c455878bf8065bc28cfe5d74e58692f"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "d5ec2936ad77ab773529057b442a6eb55dd578eb"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "d368ec5bd7af1cd81628c47a89d1d830cd415590"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "v3.9.2"
                  }
                ]
              }
            }
          ],
          "versions": [
            "v3.9.1",
            "v3.7.1",
            "v3.6.1",
            "v3.5.1"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-70656.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:23.189644713Z",
      "provider": "osv",
      "references": [
        "https://github.com/bluewave-labs/Checkmate/releases/tag/v3.9.2",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/70xxx/CVE-2026-70656.json",
        "https://github.com/bluewave-labs/Checkmate/security/advisories/GHSA-4c6j-p2cv-wf56",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-70656",
        "https://github.com/bluewave-labs/Checkmate/commit/0df71d6356c87c747e0b796b0c34e33f2a5203fa",
        "https://github.com/bluewave-labs/Checkmate/commit/adba25269c455878bf8065bc28cfe5d74e58692f",
        "https://github.com/bluewave-labs/Checkmate/commit/d5ec2936ad77ab773529057b442a6eb55dd578eb"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-1333"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/70xxx/CVE-2026-70656.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-70656",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 489641,
  "published_at": "2026-08-21T17:59:28.639+00:00"
}