Description
Supabase Realtime provides Broadcast, Presence, and Postgres Changes via WebSockets. Prior to version 2.103.1, the REST broadcast endpoints accept an expired JWT when the exp claim is encoded as a JSON string instead of a JSON number. The same route rejects an expired integer exp token signed with the same tenant secret. The accepted request returns 202 and emits the broadcast to subscribers. This could allow an unauthenticated attacker can broadcast realtime messages to subscribers. The attack can be performed via the Internet/only from within the supabase project. The impact of broadcasting messages to subscribers is application specific. This issue has been patched in version 2.103.1.
Published: 2026-10-22
Score: 3.1 Low
EPSS: < 1% Very Low
KEV: No
Impact: Unauthorized broadcast of realtime messages to subscribers
Action: Patch
AI Analysis

Impact

Supabase Realtime v2.103.0 or earlier incorrectly accepts expired JSON Web Tokens when the "exp" claim is encoded as a JSON string rather than a numeric value; this bypasses token expiration checks and allows any attacker to send broadcasts to connected clients. The vulnerability is an authentication bypass (CWE-613) and its primary consequence is that unauthenticated parties can inject arbitrary realtime events into the application channel.

Affected Systems

Affected systems include all deployments of the Supabase Realtime server running any version prior to 2.103.1, regardless of the tenant or projects configured within the instance. The flaw is present in the REST broadcast endpoint used for broadcast, presence, and Postgres change notifications.

Risk and Exploitability

The risk assessment notes a low CVSS score of 3.1 and no EPSS data; the vulnerability is not listed in CISA’s KEV catalog. Exploitation requires simply sending an HTTP request to the broadcast endpoint using a token whose "exp" field is a string; no authentication is required beyond supplying the expired token and the target tenant secret. The attack can originate from the internet or internally if the broadcast endpoint is exposed, making it a potential vector for targeted applications that rely on realtime delivery.

Generated by OpenCVE AI on October 22, 2026 at 18:51 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade Supabase Realtime to version 2.103.1 or newer as the vendor has applied the fix
  • Disable the REST broadcast endpoint if your application does not require it to prevent unauthenticated access
  • Configure network firewall or access controls to limit exposure of the broadcast endpoint to trusted IP addresses or internal network only

Generated by OpenCVE AI on October 22, 2026 at 18:51 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Fri, 30 Oct 2026 16:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Fri, 23 Oct 2026 00:45:00 +0000

Type Values Removed Values Added
First Time appeared Supabase
Supabase realtime
Vendors & Products Supabase
Supabase realtime

Thu, 22 Oct 2026 17:45:00 +0000

Type Values Removed Values Added
Description Supabase Realtime provides Broadcast, Presence, and Postgres Changes via WebSockets. Prior to version 2.103.1, the REST broadcast endpoints accept an expired JWT when the exp claim is encoded as a JSON string instead of a JSON number. The same route rejects an expired integer exp token signed with the same tenant secret. The accepted request returns 202 and emits the broadcast to subscribers. This could allow an unauthenticated attacker can broadcast realtime messages to subscribers. The attack can be performed via the Internet/only from within the supabase project. The impact of broadcasting messages to subscribers is application specific. This issue has been patched in version 2.103.1.
Title Supabase Realtime: Expired JWTs with string exp are accepted by REST broadcast authorization
Weaknesses CWE-613
References
Metrics cvssV3_1

{'score': 3.1, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:N'}


Subscriptions

Supabase Realtime
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-10-30T15:11:34.608Z

Reserved: 2026-06-12T16:25:43.084Z

Link: CVE-2026-54238

cve-icon Vulnrichment

Updated: 2026-10-30T15:11:29.226Z

cve-icon NVD

Status : Awaiting Analysis

Published: 2026-10-22T18:17:28.993

Modified: 2026-10-30T16:17:56.533

Link: CVE-2026-54238

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-10-22T19:00:17Z

Weaknesses
  • CWE-613

    Insufficient Session Expiration