Saltar al contenido

La seguridad de las apps de vibe coding en 2026

30.998apps activas
9comprobaciones pasivas
12–14 agoventana de análisis
19 ago 2026primera edición
Estudio de Reeve

Buscamos apps activas hechas con Lovable, Bolt, v0, Replit o Base44, y pasamos cada una por las mismas nueve comprobaciones que cualquiera puede lanzar gratis desde la página de inicio de Reeve. Esta página es lo que salió.

Tu app puede estar en esta muestra. Aquí no se la nombra, así que la única forma de ver dónde está es pasarle las mismas nueve comprobaciones

Solo una mirada desde fuera. Leemos lo que el navegador de un visitante ya lee: el código que la app entrega, las cabeceras que devuelve, los puntos de acceso que nombra su propio código. Sin inicios de sesión, sin adivinar contraseñas, sin descargar nada. Método ↓

Aquí no se nombra ninguna app, ni tampoco en el archivo de datos. Cada cifra lleva el método que la produjo, y el archivo del final reúne todos los agregados en una tabla por si quieres comprobar las cuentas.

Todas las apps, con nota

452 apps, cerca de una de cada 69, están en D o F
A23.62176% , nota A, 23.621 apps
B495816% , nota B, 4958 apps
C19676% , nota C, 1967 apps
D4441% , nota D, 444 apps
F8<1% , nota F, 8 apps

Seis cifras que lo cuentan todo

Estas seis cifras son el informe. Todo lo que viene después es la base sobre la que se apoya cada una, y cómo la obtuvimos.

  1. Cabeceras de seguridad1/6
    99%

    de las 30.998 apps que analizamos tenían al menos un hallazgo. La mayoría eran moderados, y a casi todas les faltan cabeceras de seguridad del navegador.

  2. Acceso a la base de datos2/6
    57%

    de las apps con Supabase a las que pudimos llegar dejaban que un desconocido leyera al menos una tabla sin iniciar sesión: 2096 de 3680.

  3. Acceso a la base de datos3/6
    394

    apps tenían una tabla legible cuyo nombre parece de datos personales: users, profiles, orders. Una petición, sin contraseña.

  4. Secretos expuestos4/6
    1de cada23

    apps envían una clave secreta en su código público: 1332 en total. Solo 3 enviaron la clave maestra de la base de datos, bastante más raro de lo que sugiere el pánico.

  5. Source maps5/6
    13%

    publican source maps: el código original de la app, legible en las herramientas de desarrollo de cualquier navegador. Son 3885 apps.

  6. Distribución de notas6/6
    76%

    obtienen una nota A. Lo básico suele aguantar, y los fallos graves se concentran en un solo sitio: la base de datos.

Los ajustes por defecto de la plataforma fallan casi en todas partes, y la mayoría de esos fallos son moderados. Lo que solo puede cambiar quien construyó la app falla mucho menos, y es lo que pone los datos de otra gente en internet abierto.

Cómo puntúan estas apps, de la A a la F

Reeve califica una app como lo haría un boletín de notas. Los descuentos se restan de cien puntos según la gravedad. Después, el hallazgo más grave pone un techo: con un hallazgo crítico la app no pasa de D, y con uno alto no pasa de C.

Cómo puntúan todas las apps que pudimos clasificar

23.621 · 76% , nota A, 23.621 apps
4958 · 16% , nota B, 4958 apps
1967 · 6% , nota C, 1967 apps
444 · 1% , nota D, 444 apps
8 · <1% , nota F, 8 apps

Son 452 apps con un agujero por el que un extraño puede entrar hoy.

La mayoría de las apps caen en A o B. La franja de D y F es pequeña. Son las apps donde un desconocido ya puede leer las filas de otra gente.

Qué comprobamos, y cuántas apps fallaron en cada comprobación

Cada comprobación hace una pregunta sobre la app desde fuera, y cada una se cuenta sobre las apps donde obtuvo respuesta. Una app a la que una comprobación no pudo llegar sale de la base de esa comprobación en vez de contarse como limpia. El escaneo dice de esas apps que no pudo comprobarlas, y esta página hace lo mismo.

Desliza a los lados para ver la proporción y el caso más grave.

Hallazgos por comprobación
ComprobaciónAppsDeProporciónLo más grave visto
Cabeceras de seguridadProtecciones del navegador que debería enviar la plataforma de hosting30.75630.98199%hasta Medio
Compartición entre sitiosLa API de la app responde a cualquier web que pregunte686730.92622%hasta Alto
Source mapsEl código original publicado junto a la app388530.98713%hasta Medio
Acceso a la base de datosTablas de la base de datos legibles sin iniciar sesión209626.2498%hasta Crítico
Secretos expuestosClaves que van en un servidor, enviadas a los navegadores133230.9984%hasta Crítico
Buckets de almacenamientoAlmacenamiento de archivos que cualquiera puede listar79227.2693%hasta Alto
Renovación del dominioRegistro a punto de caducar, o ya caducado5530.980<1%hasta Alto
Certificado SSLCertificado caducado, a punto de caducar o no fiable3230.851<1%hasta Alto
Archivos privadosArchivos de configuración y volcados dejados en rutas públicas830.749<1%hasta Crítico

Cada proporción es sobre las apps donde esa comprobación pudo responder. El punto es la peor versión de ese problema que vimos en la fila, no la típica.

Dos filas asustan más de lo que deben. Las cabeceras de seguridad son instrucciones que la plataforma de hosting envía al navegador, y que falte una deja a un tipo de ataque con un obstáculo menos delante. Una source map publicada es el código original de la app puesto junto a la versión compilada: le enseña a un atacante dónde mirar, y por sí sola no entrega nada.

Una fila también puede parecer grave porque un puñado de apps entregó algo serio mientras el resto entregaba algo corriente. El archivo de datos desglosa cada fila por tipo de clave para que se vea cuál es cuál.

Más de la mitad de las apps con Supabase comprobables filtran datos de sus tablas

Es la cifra a la que volvimos una y otra vez.

Un proyecto de Supabase está abierto a internet por diseño. La app que corre en el navegador habla directamente con la base de datos usando una clave pensada para ser pública, y lo que hay entre un desconocido y las filas es Row Level Security: una regla en cada tabla. Desactiva esa regla, o escribe una política que deje pasar a todo el mundo, y cualquier tabla del proyecto se lee con una petición y sin contraseña.

57% 2096 de 3680

8429 apps de este barrido nombran un proyecto de Supabase. Nuestra comprobación obtuvo respuesta de 3680 de ellas; el resto está detrás de backends que no sondeamos, así que no decimos nada al respecto. De esas 3680, 2096 tenían al menos una tabla que un desconocido puede leer con una sola petición y sin contraseña.

De las apps que nombran un proyecto de Supabase, menos de la mitad se pueden comprobar. Algunas mandan el tráfico de su base de datos por su propio backend, donde una comprobación desde fuera no puede seguir, así que de esas no decimos nada. La proporción de arriba es sobre las apps que respondieron.

1702 apps exponen tablas con nombres genéricos o técnicos: settings, content, logs.

394 apps exponen tablas con nombres de datos personales: users, profiles, orders, messages.

El desglose es la parte útil. Una tabla legible llamada settings o content es un error. Una tabla legible llamada users, profiles u orders son los datos personales de otra gente en internet abierto, y quien construyó la app casi seguro que los cree privados.

La comprobación nunca lee una fila. Le pregunta a la base de datos cuántas filas serían visibles y lee el recuento en una cabecera de respuesta. Con eso basta para distinguir una tabla con regla de RLS de una tabla sin ella, y la comprobación no va más allá.

Las mismas nueve comprobaciones, herramienta por herramienta

Cada app está agrupada por la herramienta con la que se publicó, y medida contra las demás apps de esa herramienta.

Desliza a los lados para ver las dos columnas de Supabase.

Por herramienta, solo en los dominios de publicación por defecto
HerramientaAppsCon hallazgosNotas D–FUsan SupabaseBase de datos legible
Lovable18.55499%2% 407 apps35%57%de 3553
Base445438100%<1% 2 apps27%muy pocas apps comprobables para publicar una proporción
Replit304299%<1% 9 apps1%muy pocas apps comprobables para publicar una proporción
v01790100%0% 0 apps1%muy pocas apps comprobables para publicar una proporción
Bolt1123100%1% 15 apps24%77%de 35

La última columna es la proporción de las apps con Supabase de esa herramienta en las que nuestra comprobación obtuvo respuesta, con esa base al lado. Un guion significa que había muy pocas apps comprobables para publicar una proporción. Trátalo como un hueco en nuestros datos, y no saques conclusiones sobre lo seguras que son esas apps.

La fila marcada enruta el tráfico de su base de datos por el backend de la propia herramienta, donde una comprobación desde fuera no puede seguirlo. Esas apps quedan sin medir aquí.

Las apps con dominio propio no se pueden atribuir a una herramienta desde fuera y quedan fuera de esta tabla.

Casi todo lo que compara esta tabla son ajustes por defecto. Nadie elige Lovable o Bolt por sus cabeceras de seguridad. Las fija la plataforma para todas las apps que aloja, así que un solo cambio ahí mueve una columna entera de esta tabla.

Dos límites antes de que nadie cite una fila. Atribuimos las apps por el dominio de publicación, así que una app que se mudó a un dominio propio queda por completo fuera de esta tabla, y esas suelen ser las más terminadas. Y una herramienta que enruta el tráfico de base de datos por su propio backend no se puede comprobar desde fuera en absoluto. Un hueco ahí significa que no pudimos medir, y no dice nada sobre lo seguras que son esas apps.

Dos clases de hallazgos, dos clases de arreglos

Los hallazgos de esta página caen en dos grupos, y cada uno pide manos distintas.

Lo que controla la plataforma

hasta Alto

Cuando a casi todas las apps alojadas en un mismo sitio les falta la misma cabecera, no son decenas de miles de personas cometiendo el mismo error. Viene con el hosting, y un solo cambio de la plataforma las arreglaría todas.

  • Cabeceras de seguridad99%
  • Source maps13%
  • Renovación del dominio<1%
  • Certificado SSL<1%

Lo que solo controlas tú

hasta Crítico

Ninguna plataforma de hosting puede saber cuáles de tus tablas deben ser públicas, ni qué clave va en un servidor. Todos los hallazgos críticos de este informe están en este lado.

  • Compartición entre sitios22%
  • Acceso a la base de datos8%
  • Secretos expuestos4%
  • Buckets de almacenamiento3%
  • Archivos privados<1%

El primer grupo es una decisión de producto tomada en una empresa. Un solo cambio en un ajuste por defecto del hosting mueve de golpe todas las apps de esa plataforma, y por eso esas filas salen tan parejas y son las más baratas de arreglar.

El segundo grupo está en manos de quien construyó la app. Ninguna plataforma de hosting puede saber cuáles de tus tablas deben ser públicas, ni qué clave va en un servidor. Todos los hallazgos críticos de este informe están en ese grupo. Las guías de seguridad por herramienta y la checklist de lanzamiento empiezan las dos ahí.

Lo que las apps de vibe coding hacen bien

También contamos lo que salió limpio, sobre las mismas apps.

96%no envían ningún secreto en su código público.

97%del almacenamiento que pudimos comprobar está cerrado a terceros.

99%sirven un certificado válido.

Una clave publicable en el frontend está donde tiene que estar. Las marcamos OK y explicamos por qué.

La última tarjeta es la que los escáneres genéricos entienden mal. Una clave publicable en el frontend (una clave anon de Supabase, una clave publicable de Stripe) está donde tiene que estar: está hecha para que se lea, y la protección vive en las reglas que hay detrás. Señalarla manda a alguien a cambiar un ajuste que ya estaba bien.

Cómo lo medimos, y dónde están los límites

De dónde salieron las apps

Tres listas, fusionadas y sin duplicados: apps que la gente publicó en X y Reddit, apps presentadas en Show HN, y apps que enumeramos desde los propios dominios de publicación de las herramientas. Los dominios de publicación son el grueso de la muestra y la única lista que escala. Las otras dos solo encuentran apps de las que alguien decidió hablar.

Los hosts muertos salieron primero, y eso lo juzgamos leyendo la página misma. Un despliegue borrado responde a menudo con un 200 OK de lo más animado.

La regla del denominador

Cada proporción de esta página es sobre las apps donde esa comprobación pudo responder, nunca sobre la muestra entera. Una comprobación que no pudo llegar a una app deja esa app fuera de su propia base, y nunca la cuenta como limpia. Las dos cifras que hay junto a cada barra son esa base, para que cualquiera vea cuál está leyendo.

56 apps devolvieron muy poco como para clasificarlas en un sentido o en otro. Quedan fuera de todas las cifras de esta página en lugar de contarse como limpias.

Las notas se cuentan sobre un número menor por la misma razón. Una app que devolvió muy poco como para clasificarla sale de todas las cifras de arriba en vez de recibir una nota a ojo.

Qué hicimos y qué no

  • Solo lecturas pasivas: las peticiones que ya hace el navegador de un visitante, más los puntos de acceso públicos que la propia app señala.
  • La comprobación de base de datos toma un recuento de filas de una cabecera de respuesta. Nunca leímos una fila, nunca descargamos un archivo, nunca iniciamos sesión y nunca adivinamos una contraseña.
  • No se nombra ninguna app, ni aquí ni en el archivo de datos. Una lista de apps emparejadas con sus debilidades es una lista de objetivos, y no guardamos ninguna en forma publicable.

Límites que conviene saber

  • La muestra se inclina hacia apps más nuevas. Una app que se ha mudado a un dominio propio no se puede atribuir a una herramienta desde fuera, y esas suelen ser las más asentadas.
  • El color de una fila marca el caso más grave que vimos, que puede ser una app entre cientos. El archivo de datos desglosa cada fila por tipo exacto de clave.
  • Esto es una ventana de tres días de agosto. Una app arreglada a la semana siguiente cuenta aquí tal como estaba el día que miramos.
  • Una comprobación externa automatizada no es una auditoría. Que no haya hallazgos no es garantía.

Usa estas cifras

Periodistas, investigadores y cualquiera que escriba sobre esto pueden reutilizar los datos citando la fuente. El archivo de abajo tiene todos los agregados de esta página en una sola tabla plana, y no nombra ninguna app.

Reeve. The State of Vibe-Coded App Security 2026. 30.998 apps en línea analizadas 12 de agosto de 2026 – 14 de agosto de 2026. reeve.page/research/vibe-coded-app-security-2026

Datos con licencia CC BY 4.0: reutilízalos libremente y acredita a Reeve con un enlace. El archivo contiene todos los agregados de esta página y no nombra ninguna app.

10

Preguntas

¿Se puede saber qué apps tenían qué problemas?

No. Solo recuentos y proporciones, nunca nombres, y el archivo de datos contiene exactamente lo que muestra la página. Una lista de apps emparejadas con sus debilidades es una lista de objetivos, y no la vamos a producir.

Puede que mi app esté en estos datos. ¿Qué hago?

Analízala tú mismo. Son las mismas nueve comprobaciones, tarda unos veinte segundos y te da tu nota y lo que un desconocido ya puede ver. Nada de esta página identifica a nadie, así que esa es la única forma de saber dónde estás.

¿De verdad es tan grave una tabla de base de datos legible?

Si cualquiera en internet puede sacar esas filas con una petición y sin contraseña, sí. Una tabla legible llamada settings es dejadez. Una tabla legible llamada users u orders es una fuga de datos que todavía no ha visto nadie.

¿Por qué las claves publicables cuentan como correctas?

La clave anon de Supabase está pensada para ser pública. La protección son las reglas de la base de datos que hay detrás, no la clave en sí. Las herramientas que señalan esas claves enseñan a la gente a saltarse el siguiente aviso, que puede ser el que importa.

¿Habrá otra edición de este informe?

Sí. Los escaneos siguen corriendo y la siguiente edición irá detrás. El archivo de datos deja constancia de la ventana de la que salieron estas cifras, para que una copia antigua no pueda pasar por actual.

¿Dónde queda tu app?

Las mismas nueve comprobaciones, en tu app, gratis. Una nota y un informe en lenguaje claro en unos 20 segundos.

Informe de seguridadyour-app.com
C

Nota · Puntuación 72/100

Claves secretasHay una clave secreta expuesta en tu códigoAlto
Protección de la base de datosLa seguridad a nivel de fila está activadaOK
Analiza tu app gratis