☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]

CVE-2026-56248

CVE-2026-56248 Denial of Service in Cap-go
📅 PUBLISHED: 2026-06-23 12:12 UTC 🔄 UPDATED: 2026-10-11 17:42 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix ⏳ Vendor-claimed fix: v12.128.12 — source: VulnCheck. UNVERIFIED · pending independent confirmation. how verification works →
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.49%
👁️
0.49% probability
12.2× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
Country: United States License: Commercial
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS SEVERITY SCALE
9.0–10.0 CRITICAL
7.0–8.9 HIGH
4.0–6.9 MEDIUM
0.1–3.9 LOW
0.0 NONE
8.7
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2026-56248 is an unauthenticated denial-of-service (DoS) vulnerability in the Cap-go capgo-backend application, affecting versions prior to 12.128.12. The vulnerability resides in the audit_logs table's Row-Level Security (RLS) policy when accessed via the Supabase PostgREST API. An attacker can exploit this by sending unfiltered queries to the public.audit_logs endpoint using the public anon key, causing the PostgreSQL query planner to execute costly logic before RLS rejection. This consistently triggers statement timeouts (PostgREST error 57014) and, under concurrency, exhausts database resources, leading to cascading HTTP 500 failures on unrelated endpoints (e.g., /orgs). The result is an application-layer denial of service.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Supply Chain & Package Security

This vulnerability affects the capgo-backend package, which is part of the Cap-go ecosystem. The package is likely distributed via npm or similar registries. Organizations using Cap-go should verify their dependency version and update to 12.128.12 or later to mitigate this issue. No known supply chain compromise has been reported, but the unauthenticated nature of the attack increases the risk of exploitation in public-facing deployments.

CVSS Breakdown & Threat Level

  • CVSS Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
  • Base Score: 7.5 (High)
  • Attack Vector: Network (AV:N)
  • Attack Complexity: Low (AC:L)
  • Privileges Required: None (PR:N)
  • User Interaction: None (UI:N)
  • Scope: Unchanged (S:U)
  • Confidentiality Impact: None (C:N)
  • Integrity Impact: None (I:N)
  • Availability Impact: High (A:H)

Threat Level: High. The vulnerability is remotely exploitable without authentication, requires no user interaction, and can cause a complete denial of service to the application.

Deep Dive & Mechanics

The vulnerability is rooted in the interaction between Supabase's PostgREST API and PostgreSQL's Row-Level Security (RLS) policies. The audit_logs table has an RLS policy that is intended to restrict access to authorized users. However, the PostgreSQL query planner executes costly logic (e.g., joins, aggregations, or complex filtering) before the RLS policy rejects the query. When an unauthenticated request is made to the public.audit_logs endpoint using the public anon key, the database still processes the query's expensive operations before applying the RLS filter. This results in statement timeouts (PostgREST error 57014) for each request.

Under concurrency (multiple simultaneous requests), the database resources (CPU, memory, connection pool) are exhausted, causing cascading failures on other endpoints (e.g., /orgs). This leads to HTTP 500 errors across the application, effectively denying service to legitimate users.

Key Technical Details:

  • Affected Component: public.audit_logs endpoint via Supabase PostgREST API.
  • Attack Vector: Unauthenticated HTTP requests with the public anon key.
  • Root Cause: Inefficient RLS policy design that allows costly query execution before access control.
  • Impact: Database resource exhaustion and application-layer DoS.

Vulnerable vs. Patched Code

Vulnerable Code (Pre-12.128.12): The RLS policy on the audit_logs table likely uses a function or subquery that performs expensive operations before checking the user's role. For example:

CREATE POLICY audit_logs_policy ON public.audit_logs
  FOR SELECT
  USING (
    -- Expensive logic executed before RLS rejection
    (SELECT COUNT(*) FROM some_large_table) > 0
    AND auth.role() = 'authenticated'
  );

Patched Code (12.128.12+): The fix restructures the RLS policy to perform cheap checks first, preventing costly operations for unauthorized users. For example:

CREATE POLICY audit_logs_policy ON public.audit_logs
  FOR SELECT
  USING (
    auth.role() = 'authenticated'
    AND (SELECT COUNT(*) FROM some_large_table) > 0
  );

Additionally, the patch may introduce query timeouts or rate limiting at the API gateway level.

Exploitation & Lab Setup

Red Team (Exploitation)

Prerequisites:

  • Target running capgo-backend version < 12.128.12.
  • Public anon key (often exposed in client-side code or API documentation).

Exploitation Steps:

  1. Identify the target's Supabase PostgREST endpoint (e.g., https://target.supabase.co/rest/v1/audit_logs).
  2. Obtain the public anon key (e.g., from a JavaScript bundle or API docs).
  3. Send a simple GET request to the endpoint:
    curl -X GET "https://target.supabase.co/rest/v1/audit_logs" \
      -H "apikey: YOUR_ANON_KEY" \
      -H "Authorization: Bearer YOUR_ANON_KEY"
    
  4. Observe the response time (should be high) and eventual timeout (error 57014).
  5. For DoS, launch concurrent requests using a tool like ab or wrk:
    ab -n 100 -c 10 "https://target.supabase.co/rest/v1/audit_logs?apikey=YOUR_ANON_KEY"
    
  6. Monitor the target's /orgs endpoint for HTTP 500 errors.

Expected Outcome: Database resource exhaustion, cascading failures on other endpoints, and application unavailability.

Blue Team (Defense & Detection)

Detection:

  • Monitor for high response times on the audit_logs endpoint.
  • Alert on repeated PostgREST error 57014 (statement timeout).
  • Track concurrent requests to audit_logs from a single IP or user agent.

Mitigation:

  • Apply the patch (upgrade to 12.128.12+).
  • Implement rate limiting on the audit_logs endpoint.
  • Use a Web Application Firewall (WAF) to block anomalous traffic.
  • Restrict the public anon key's permissions to only necessary tables.

Indicators of Compromise (IOCs)

  • Network:

    • High volume of requests to /rest/v1/audit_logs with the public anon key.
    • HTTP 500 responses on unrelated endpoints (e.g., /orgs).
    • PostgREST error 57014 in API responses.
  • Logs:

    • PostgreSQL logs showing statement timeouts on audit_logs queries.
    • Supabase logs indicating repeated RLS policy evaluations.
  • System:

    • Elevated database CPU and memory usage.
    • Connection pool exhaustion.

Detection Engineering

YARA Rule

rule CVE_2026_56248_DoS_Detection {
    meta:
        description = "Detects exploitation attempts for CVE-2026-56248 via audit_logs endpoint"
        author = "Valters IT"
        date = "2025-04-10"
        reference = "CVE-2026-56248"
    strings:
        $endpoint = "/rest/v1/audit_logs"
        $anon_key = "apikey" nocase
        $error_57014 = "57014"
    condition:
        $endpoint and $anon_key and $error_57014
}

Sigma Rule

title: CVE-2026-56248 - Unauthenticated DoS via audit_logs Endpoint
id: 8a9b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d
status: experimental
description: Detects repeated statement timeouts on the audit_logs endpoint, indicating exploitation of CVE-2026-56248.
author: Valters IT
date: 2025-04-10
logsource:
    category: application
    product: supabase
detection:
    selection:
        endpoint: "/rest/v1/audit_logs"
        response_code: 57014
    condition: selection
falsepositives:
    - Legitimate high-load scenarios
level: high

Suricata Rule

alert http any any -> any any (msg:"CVE-2026-56248 - Unauthenticated DoS via audit_logs"; flow:to_server; content:"/rest/v1/audit_logs"; http_uri; content:"apikey"; http_header; classtype:attempted-dos; sid:1000001; rev:1;)

Remediation & Mitigation

Immediate Actions:

  1. Upgrade capgo-backend to version 12.128.12 or later.
  2. If immediate upgrade is not possible, implement a WAF rule to block requests to /rest/v1/audit_logs from unauthenticated sources.
  3. Apply rate limiting on the audit_logs endpoint (e.g., 10 requests per minute per IP).

Long-Term Measures:

  • Review all RLS policies for expensive operations that execute before access control.
  • Implement query timeouts at the database level to prevent resource exhaustion.
  • Use a CDN or API gateway to absorb DoS traffic.
  • Monitor database performance metrics and set alerts for anomalies.

Valters IT Signature: This report was generated by Valters IT DevSecOps AI. For questions, contact security@valters-it.com.

◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-56248/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.