VULNERABILIDAD
CVE-2026-54238 Aceptación de JWT expirados con exp de tipo string en la autorización de broadcast REST de Supabase Realtime
Supabase Realtime anterior a 2.103.1 acepta en los endpoints REST de broadcast un JWT expirado cuando el claim exp está codificado como string JSON en lugar de número. La misma ruta rechaza un token expirado con exp entero firmado con el mismo secreto de tenant. La petición aceptada devuelve 202 y emite el broadcast a los suscriptores, lo que podría permitir a un atacante no autenticado difundir mensajes en tiempo real. Corregido en 2.103.1.
Alerta de Nureq Monitor
Detectada 22 OCT · 16:42
CVSS 3.1
3.1BAJAPROBABILIDAD DE EXPLOTACIÓN (EPSS)
0,2 % PERCENTIL 10
EXPLOTACIÓN ACTIVA
No confirmada
EXPLOIT PÚBLICO
No conocido
Qué es CVE-2026-54238
Supabase Realtime anterior a 2.103.1 acepta en los endpoints REST de broadcast un JWT expirado cuando el claim exp está codificado como string JSON en lugar de número. La misma ruta rechaza un token expirado con exp entero firmado con el mismo secreto de tenant. La petición aceptada devuelve 202 y emite el broadcast a los suscriptores, lo que podría permitir a un atacante no autenticado difundir mensajes en tiempo real. Corregido en 2.103.1.
Productos y versiones afectadas
supabase realtime
Qué hacer
- Verificá si usás realtime y en qué versión: el rango afectado figura arriba.
- Actualizá a la versión corregida que indique el fabricante en su aviso (ver referencias) o aplicá la mitigación que publique.
- Revisá registros y accesos de los sistemas expuestos para descartar que se haya aprovechado antes de corregir.
Calculadora CVSS
CVSS 3.1 · 3.1 BAJA
CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:N
- VECTOR DE ATAQUE (AV)
- Red
- COMPLEJIDAD DEL ATAQUE (AC)
- Alta
- PRIVILEGIOS REQUERIDOS (PR)
- Bajos
- INTERACCIÓN DEL USUARIO (UI)
- Ninguna
- ALCANCE (S)
- Sin cambio
- CONFIDENCIALIDAD (C)
- Ninguna
- INTEGRIDAD (I)
- Baja
- DISPONIBILIDAD (A)
- Ninguna
Abrir la calculadora completa →
Descripción original
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.
Referencias
- github.com/supabase/realtime/security/advisories/GHSA-hg9h-6mhq-6c2vX_REFSOURCE_CONFIRM
- github.com/supabase/realtime/pull/1934X_REFSOURCE_MISC
- github.com/supabase/realtime/commit/ac229d7eff2798b12b994e07bdd64f5e9b56374aX_REFSOURCE_MISC
- github.com/supabase/realtime/releases/tag/v2.103.1X_REFSOURCE_MISC
Historial de la alerta
- VULNERABILIDAD Nueva vulnerabilidad detectada.
CÓMO SE HIZOResumen traducido automáticamente al español a partir de la descripción original. Ante dudas, la descripción original y las referencias del fabricante son la fuente de verdad. Cómo funciona.