Aprende qué es un programa de divulgación de vulnerabilidades, por qué líderes como Katie Moussouris defendieron su caso de negocio y cómo los equipos pequeños pueden definir alcance, hacer triage y fijar plazos.

La mayoría de los equipos ya reciben comentarios relacionados con seguridad. Simplemente no tienen un lugar seguro donde aterrizar.
Un programa de divulgación de vulnerabilidades da a los investigadores y a los clientes una vía clara, legal y respetuosa para reportar problemas antes de que se conviertan en titulares. Sin una política, los reportes aparecen en el peor momento, por el canal equivocado y con expectativas poco claras. Un investigador bienintencionado puede enviar un email a una dirección personal, publicar públicamente para llamar la atención o seguir insistiendo hasta que alguien responda. Con un programa, todos saben dónde enviar los reportes, qué pruebas están permitidas y qué hará el equipo a continuación.
Detectar problemas temprano importa porque los costos se acumulan rápidamente una vez que se explota un fallo. Un pequeño error de autenticación detectado en una semana tranquila puede arreglarse en un día. Ese mismo fallo descubierto después de ser explotado puede desencadenar parches de emergencia, respuesta a incidentes, carga en soporte al cliente y un daño de confianza a largo plazo.
Una forma práctica de pensar en VDPs frente a bug bounties:
Katie Moussouris ayudó a popularizar un planteamiento de negocio sencillo que facilitó que las empresas aceptaran los bug bounties: los investigadores de seguridad no son “el enemigo”. Pueden ser una aportación gestionada y de suma positiva para la calidad. La misma lógica aplica a los VDPs. No estás invitando problemas, estás creando una vía controlada para problemas que ya existen.
Para un equipo pequeño que entrega rápido (por ejemplo, una app web con front end en React y una API), la ventaja suele ser inmediata: menos escaladas sorpresa, prioridades de arreglo más claras y una reputación de tomar los reportes de seguridad en serio.
Un programa de divulgación de vulnerabilidades (VDP) es una forma pública y predecible para que las personas te reporten problemas de seguridad y para que tu equipo responda de forma segura. No es lo mismo que pagar recompensas. El objetivo es arreglar los problemas antes de que dañen a los usuarios.
Suelen participar tres grupos: investigadores de seguridad que buscan activamente problemas, clientes que notan comportamientos sospechosos y empleados o contratistas que detectan fallos en su trabajo diario. Todos necesitan la misma vía de reporte simple.
Los reportes normalmente llegan por una dirección de email dedicada, un formulario web o una entrada en el sistema de tickets. Para un equipo pequeño, lo que importa es que la bandeja esté asignada, monitorizada y separada del soporte general.
Un buen reporte te da suficiente detalle para reproducir rápido: qué se encontró, por qué importa, pasos para reproducir, qué sistema o endpoint afecta y prueba del impacto. Sugerencias de solución son bienvenidas pero opcionales.
Cuando llega el reporte, haces algunos compromisos por escrito, normalmente en una política de divulgación responsable. Empieza pequeño y promete solo lo que puedes cumplir. Como mínimo: acusarás recibo, harás un triage básico y mantendrás al reportero informado.
Entre bastidores, el flujo es directo: acusar recibo, confirmar el problema, evaluar la severidad, asignar un responsable, arreglarlo y comunicar el estado hasta que esté resuelto. Incluso si no puedes arreglarlo de inmediato, actualizaciones regulares construyen confianza y reducen insistencias repetidas.
Un VDP es la base. Publicas una vía segura de reporte, explicas qué pruebas están permitidas y te comprometes a responder. No se requiere dinero. El “trato” es claridad y buena fe por ambas partes.
Un bug bounty añade recompensas. Puedes gestionarlo directamente (email más un método de pago) o a través de una plataforma que ayude con el alcance a investigadores, el manejo de reportes y los pagos. La contrapartida es más atención, más volumen y más presión por moverse rápido.
Los bounties tienen sentido cuando tu equipo puede manejar la carga. Si tu producto cambia a diario, tus registros son débiles o nadie se encarga del triage de seguridad, un bounty puede crear una cola que no puedas atender. Empieza con un VDP cuando necesites una entrada predecible. Considera un bounty cuando tengas una superficie estable, exposición suficiente para atraer hallazgos reales, capacidad para triage y arreglo en días o semanas, y un presupuesto y método de pago claros.
Para las recompensas, mantenlo simple: rangos fijos por severidad (baja a crítica), con pequeños bonos por reportes especialmente claros y reproducibles con prueba de impacto.
Los pagos son solo una parte del caso de negocio. La ganancia mayor es la advertencia temprana y el menor riesgo: menos incidentes sorpresa, mejores hábitos de seguridad en ingeniería y un proceso documentado que puedes mostrar en revisiones con clientes.
Un buen programa de divulgación empieza con una promesa: revisarás reportes sobre las cosas que realmente puedes verificar y arreglar. Si el alcance es demasiado amplio, los reportes se acumulan, los investigadores se frustran y pierdes la confianza que intentabas ganar.
Empieza con activos que posees de extremo a extremo. Para la mayoría de equipos pequeños, eso significa la app web en producción y cualquier API pública que usen los clientes. Deja fuera herramientas internas, prototipos antiguos y servicios de terceros hasta que lo básico funcione.
Sé específico sobre lo que está dentro y fuera del alcance. Unos pocos ejemplos concretos reducen idas y venidas:
Luego, indica qué pruebas están permitidas para que nadie dañe accidentalmente a los usuarios. Mantén los límites simples: no escaneos masivos, respeta límites de tasa, nada de pruebas de denegación de servicio y no acceder a datos de otras personas. Si quieres permitir cuentas de prueba limitadas, dilo.
Finalmente, decide cómo manejas sistemas no productivos. Staging puede ayudar con la reproducción, pero suele ser ruidoso y menos monitorizado. Muchos equipos excluyen staging al principio y aceptan solo hallazgos en producción, luego añaden staging cuando los registros son estables y hay una forma segura de probar.
Ejemplo: un pequeño equipo SaaS que ejecuta apps en Koder.ai puede empezar con “app en producción + API pública en nuestro dominio principal” y excluir explícitamente instalaciones autohospedadas de clientes hasta que el equipo tenga una forma clara de reproducir y desplegar correcciones.
Unas buenas reglas hacen dos cosas a la vez: mantienen a los usuarios reales a salvo y dan a los investigadores la confianza de que no se meterán en problemas por reportar de buena fe. Usa lenguaje llano y específico. Si un probador no sabe qué está permitido, dejará de probar o correrá riesgos.
Empieza con límites de prueba seguros. El objetivo no es parar la investigación, sino prevenir daño mientras el problema aún es desconocido. Reglas típicas incluyen: no ingeniería social (phishing, llamadas, tickets falsos), nada de denegación de servicio ni stress testing, no ataques físicos ni amenazas, no escaneo fuera del alcance y detenerse inmediatamente si se toca datos reales de usuarios.
Después explica cómo reportar y qué es “útil”. Una plantilla simple acelera el triage: dónde ocurre (URL/pantalla, entorno, tipo de cuenta), pasos numerados para reproducir, impacto, evidencia (capturas, video corto, request/response) y datos de contacto.
Sé claro sobre privacidad. Pide a los investigadores que minimicen el acceso a datos, eviten descargar conjuntos de datos y redacted información sensible en capturas (emails, tokens, datos personales). Si deben probar acceso, pide la muestra más pequeña posible.
Finalmente, establece expectativas sobre duplicados y reportes parciales. Puedes decir que acreditarás (o recompensarás) el primer reporte claro que demuestre impacto y que los reportes incompletos pueden cerrarse si no se reproducen. Una línea corta como “Si no estás seguro, envía lo que tengas y te guiaremos” mantiene la puerta abierta sin prometer resultados.
Un programa de divulgación falla rápido cuando los reportes quedan en una bandeja compartida sin propietario. El triage es el hábito de convertir “hemos recibido un reporte” en una decisión clara: ¿es real, qué gravedad tiene, quién lo arregla y qué le decimos al reportero?
Empieza con una rúbrica de severidad pequeña que todo el equipo pueda aplicar con consistencia:
Asigna la primera respuesta a una persona (responsable de seguridad, ingeniero on-call o fundador), más un respaldo para fines de semana y vacaciones. Esa decisión única evita que “alguien más lo hará” se convierta en la norma.
Para reducir falsos positivos y “teatro de seguridad”, pide una cosa concreta: una prueba reproducible. Puede ser pasos, un video corto o un request/response mínimo. Si no puedes reproducirlo, dilo, explica lo que intentaste y formula una pregunta dirigida. Trata la salida de escáneres como una pista, no como veredicto.
Si un reporte toca servicios de terceros (almacenamiento en la nube, proveedor de identidad, analítica), separa lo que controlas de lo que no. Confirma tu configuración primero y luego contacta al proveedor si hace falta. Mantén al reportero actualizado sobre lo que se puede compartir.
Documenta cada reporte en una plantilla interna simple: resumen, superficie afectada, severidad y por qué, notas de reproducción, responsable y estado actual. Notas consistentes hacen que el siguiente reporte sea más rápido que el primero.
Los plazos son la diferencia entre un programa que genera confianza y uno que se ignora. Elige objetivos que realmente puedas cumplir con tu equipo actual, publícalos y síguelos.
Un conjunto de compromisos que muchos equipos pequeños pueden asumir:
Si no puedes cumplir estos números, amplíalos ahora en lugar de fallarlos después. Mejor decir “30 días” y entregar en 20 que prometer “7 días” y luego quedar en silencio.
Los reportes parecen urgentes para los investigadores. Incluso cuando no tienes una solución, las actualizaciones regulares reducen la frustración y evitan escaladas públicas. Usa una cadencia predecible e incluye: estado actual (triage, arreglando, en pruebas), el siguiente paso y la fecha de la próxima actualización.
Acordad una fecha de divulgación una vez que confirméis que el problema es válido. Si necesitáis más tiempo, pedidlo pronto y explicad por qué (arreglo complejo, restricciones de despliegue). Si el problema está siendo explotado activamente, priorizad la protección del usuario y estad listos para comunicar antes, incluso si la corrección completa aún está en marcha.
Una vez que un reporte está confirmado y clasificado, el objetivo es simple: proteger a los usuarios rápido. Publica un parche seguro o una mitigación aunque no tengas escrito perfecto sobre la causa raíz. Una corrección pequeña hoy suele ser mejor que una refactorización grande dentro de un mes.
Las mitigaciones a corto plazo compran tiempo cuando una corrección completa es arriesgada o lenta. Opciones comunes: desactivar una función detrás de un flag, endurecer límites de tasa, bloquear un patrón de peticiones malicioso, rotar secretos expuestos o añadir logging y alertas. Las mitigaciones no son la meta final, pero reducen el daño mientras trabajas en la reparación real.
Antes de cerrar el reporte, valida la corrección como si fuera una mini-release: reproduce el problema, confirma que ya no funciona tras la corrección, añade una prueba de regresión cuando sea posible, revisa efectos secundarios en permisos cercanos y pide una segunda revisión si puedes.
La comunicación importa tanto como el parche. Dí al reportero qué confirmaste, qué cambiaste (en términos sencillos) y cuándo se desplegará. Si necesitas más tiempo, explica por qué y da la fecha de la próxima actualización. Para los usuarios, sé breve y honesto: qué se vio afectado, qué hiciste y si necesitan hacer algo (cambiar contraseña, rotar claves, actualizar la app).
Publica un aviso corto cuando el fallo afecte a muchos usuarios, sea probable que se redescubra o requiera acción del usuario. Incluye un resumen breve, severidad, componentes afectados, fecha del arreglo y crédito al reportero si así lo desea. En plataformas como Koder.ai, donde las apps se despliegan y hospedan, los avisos también ayudan a los equipos que usan exportes o dominios personalizados a entender si necesitan volver a desplegar.
La mayoría de los equipos pequeños no fallan por falta de buena intención. Fallan porque el programa es más grande que su capacidad, o porque es lo bastante confuso como para que cada reporte se convierta en un debate.
Una regla práctica: diseña tu programa de divulgación para la semana que estás teniendo, no para la semana que desearías tener.
Errores comunes y la solución más sencilla que suele funcionar:
Ejemplo: un investigador reporta un endpoint de staging expuesto. Si tus reglas no mencionan staging, el equipo puede discutir durante días. Si staging está incluido o explícitamente fuera de alcance, puedes responder rápido, encaminarlo correctamente y mantener la conversación tranquila.
Un VDP mínimo viable tiene más que ver con comportamiento predecible que con papeleo perfecto. La gente necesita saber qué puede probar, cómo reportar y cuándo recibirá respuesta.
Mantén la lista corta:
Si entregas rápido (por ejemplo, una plataforma como Koder.ai que despliega web, backend y apps móviles), esto evita que los reportes se pierdan entre equipos y ciclos de lanzamiento.
Un equipo SaaS de tres personas recibe un email titulado: “Posible secuestro de cuenta vía restablecimiento de contraseña.” El investigador dice que puede restablecer la contraseña de una víctima si conoce el email de la víctima, porque el enlace de restablecimiento sigue siendo válido incluso después de que el usuario solicita uno nuevo.
El equipo responde rápido para confirmar recepción y pide dos cosas: pasos exactos para reproducir y si el investigador probó solo con sus propias cuentas. También recuerda al investigador que no acceda a datos reales de clientes.
Para confirmar el impacto sin tocar usuarios en producción, el equipo recrea el flujo en staging con cuentas ficticias. Generan dos emails de restablecimiento para la misma cuenta y luego comprueban si el token más antiguo sigue funcionando. Sí funciona y pueden establecer una nueva contraseña sin ninguna verificación adicional. Capturan logs del servidor y sellos de tiempo, pero evitan copiar cualquier contenido de email que pueda reutilizarse maliciosamente.
Lo etiquetan como severidad Alta: conduce a un secuestro de cuenta con un camino realista. Según su política, fijan un plazo de 72 horas para una mitigación y 7 días para una corrección completa.
Mantienen al reportero informado en cada paso:
Tras cerrar, evitan repeticiones añadiendo una prueba automatizada para tokens de restablecimiento de un solo uso, monitorizando volúmenes inusuales de restablecimientos y actualizando su checklist interno: “Cualquier token de inicio o restablecimiento debe ser de un solo uso, de corta duración y invalidarse al emitirse uno nuevo.”
Empieza con un VDP que puedas ejecutar semana a semana. Una bandeja sencilla, un alcance claro y una rutina de triage consistente superan a una política elegante que queda sin uso. Una vez que el flujo esté estable y la cadencia de respuesta fiable, añade un programa de recompensas para las áreas donde quieras pruebas más profundas.
Mide unos pocos números para ver progreso sin convertir esto en un trabajo a tiempo completo: tiempo hasta acusar recibo, tiempo hasta triage, tiempo hasta arreglar (o hasta una mitigación segura), tasa de reapertura y cuántos reportes son realmente accionables.
Haz un retro ligero después de cada reporte significativo: qué te retrasó, qué confundió al reportero, qué decisión tardó demasiado y qué cambiarás la próxima vez.
Si tu equipo entrega rápido, incorpora el “despliegue seguro” en el plan. Apunta a cambios pequeños y reversibles. Si tienes snapshots y rollback, úsalos para que una corrección de seguridad no se convierta en una larga indisponibilidad.
Un ritmo mensual práctico:
Si construyes sobre Koder.ai (Koder.ai), el despliegue y el hosting forman parte del flujo y la exportación del código fuente está disponible cuando la necesitas. Eso puede facilitar publicar correcciones de seguridad con rapidez y recuperar de forma segura si un cambio tiene efectos secundarios.
Un VDP ofrece a la gente una forma clara, legal y predecible de reportar problemas de seguridad. Reduce la probabilidad de que los reportes aparezcan como publicaciones públicas, mensajes directos aleatorios o sondeos repetidos.
El beneficio principal es velocidad y control: te enteras de los problemas antes, puedes arreglarlos con calma y generas confianza respondiendo de forma consistente.
Empieza cuando puedas hacer tres cosas de forma fiable:
Si todavía no puedes, reduce el alcance y establece plazos más amplios en lugar de omitir un VDP por completo.
Una política básica de VDP debería incluir:
Por defecto: empieza con los activos que controlas de extremo a extremo, normalmente tu app web en producción y la API pública.
Excluye cualquier cosa que no puedas verificar o arreglar rápido (prototipos viejos, herramientas internas, servicios de terceros que no controlas). Puedes ampliar el alcance más tarde cuando el flujo esté estable.
Reglas básicas habituales:
Límites claros protegen a los usuarios y también a los investigadores que actúan de buena fe.
Pide un reporte fácil de reproducir:
Las sugerencias de solución ayudan pero son opcionales; lo que importa es la reproducibilidad.
Elige un responsable (más un suplente) y sigue un flujo simple:
Un VDP falla cuando los reportes quedan en un inbox compartido sin un responsable claro.
Usa una pequeña rúbrica ligada al impacto:
Si dudas, empieza más alto durante el triage y ajusta después al confirmar el impacto real.
Un valor por defecto práctico para equipos pequeños:
Si no puedes cumplirlos, amplíalos ahora y luego supéralos con creces.
Añade un programa de recompensas (bug bounty) cuando puedas manejar más volumen y tengas:
Un VDP es la base; los bounties atraen más atención y presión, así que añádelos solo cuando puedas seguir el ritmo.
Mantenla corta y promete solo lo que puedas cumplir de forma consistente.