Cada error es importante: cómo ejecutar el programa Bug Bounty en una empresa

Experiencia Timeweb



Cualquier empresa necesita una perspectiva externa sobre el estado de la seguridad de la información de los servicios y productos. Este problema se puede resolver de diferentes formas, una de las cuales es la participación en los programas Bug Bounty.



El programa Bug Bounty como nueva fuerza en la búsqueda de errores



Bug Bounty es un programa que ofrece recompensas monetarias u otros beneficios por encontrar errores, exploits y vulnerabilidades en el software. Los programas Bug Bounty son implementados por muchas empresas, incluidas Facebook, Google, Reddit, Apple, Microsoft, etc. Una



empresa puede lanzar un programa de este tipo por sí misma, organizando todos los procesos e interacciones por sí misma. La segunda opción es recurrir a plataformas especiales de Bug Bounty: llegamos a un acuerdo y el ejército de cazadores de errores comienza a trabajar.



Timeweb lanzó su programa Bug Bounty hace aproximadamente un año. En ese momento, la empresa no contaba con especialistas con experiencia en esta área, todo había que hacerlo por ensayo y error. En Internet, casi nadie comparte recomendaciones sobre cómo construir este proceso, por lo que las bicicletas a menudo se inventan y el conocimiento generalmente se transfiere en conversaciones con colegas en la máquina de café.



En este artículo te diremos cómo organizar el lanzamiento del programa Bug Bounty, si nunca lo has hecho, a qué debes prestar atención y de qué otra manera puedes verificar el estado del sistema de seguridad de la información.



¡Echale un vistazo!



¿Por qué lanzamos el programa Bug Bounty?



Nuestra tarea era elevar el sistema de seguridad de la información a un nivel nuevo y de mayor calidad y no gastar demasiado dinero. Es importante tener en cuenta que Timeweb es una empresa madura con una infraestructura compleja y un gran conjunto de servicios críticos, por lo que no era nada obvio para nosotros entonces en qué orden probar los servicios y corregir las vulnerabilidades, y por qué empezar primero.



Hay varias formas de verificar el sistema de seguridad de la información. Antes de lanzar el programa Bug Bounty, intentamos considerar y analizar varias opciones. Entre ellos, la auditoría externa es probablemente la solución más común al problema. Gracias a la auditoría, puede encontrar problemas complejos y no estándar, pero incluso después de pagar una gran cantidad, no puede estar seguro de que obtendrá lo que realmente necesita.



Otra forma es formar al equipo y desarrollar las competencias de los empleados. Aquí debe comprender que los recursos del equipo aún son limitados y, por supuesto, es imposible encontrar todos los errores posibles por su cuenta.



En lo que respecta a la verificación del sistema de seguridad de la información, los tickets y las solicitudes de asistencia técnica de los clientes también ayudan si es posible procesar eficientemente los comentarios y mensajes de los usuarios.



Paralelamente, hablamos con colegas y recopilamos opiniones de expertos sobre cómo se estructura el proceso de búsqueda de errores en otras empresas. Gracias a las recomendaciones, decidimos prestar atención al programa Bug Bounty.



Lanzamiento del programa Bug Bounty



¿Qué es importante considerar al principio?



Hay muchos tipos diferentes de programas y plataformas Bug Bounty.

En la primera etapa, elegimos entre programas públicos y privados, decidiendo enfocarnos en este último. El acceso no está limitado en el programa público: todos pueden buscar errores. En un programa privado, por invitación. En ambos casos, los errores se revelan solo por acuerdo de las partes. Decidimos que es demasiado pronto para abrir un programa público: antes que nada, debemos estar seguros de que nuestros servicios y productos no contienen vulnerabilidades críticas.



En cuanto a la propia plataforma Bug Bounty, analizamos las opciones existentes y elegimos la más adecuada para nosotros, óptima en cuanto a número de cazadores de errores y coste de los servicios.



Aquí hay una lista de las plataformas Bug Bounty más famosas del mercado:





También debemos mencionar la plataforma Open Bug Bounty , una plataforma Bug Bounty sin fines de lucro que une a los entusiastas de la seguridad de la información y populariza la piratería ética. Los investigadores pueden informar de un error encontrado en el trabajo de cualquier software, por lo que la empresa proporciona una recompensa (pagos en efectivo, mercadería, descuentos o sus propios productos). Timeweb, por ejemplo, ofrece alojamiento gratuito para los cazadores de errores. Tenga en cuenta que de acuerdo con la política Open Bug Bounty, solo puede informar errores que no implican una intervención activa, por ejemplo, no puede informar RCE y SQL.



En primer lugar, construimos el trabajo dentro de la empresa: determinamos cómo los departamentos deben interactuar entre sí, quién es responsable de corregir errores, quién monitorea el alcance y las respuestas a los informes.



Antes de iniciar el programa, le recomendamos que se asegure de que hizo todo lo posible y encontró todos los errores posibles por su cuenta. También es importante conocer el interior y el exterior del producto que planea dar a los cazadores de errores para el trabajo: qué problemas hay ahora, cuáles; si aparecen errores sistemáticos. Esta información le permitirá formar el alcance correcto, de manera sucinta, pero completa, para proporcionar datos de entrada y describir la solicitud para los cazadores de errores.



Se ha seleccionado la plataforma, se ha realizado la preparación - ¡comenzamos a llenar los conos para trabajar!



Formamos una scop



Vamos a contaros lo que entendimos durante el año de existencia del programa



Scopes, cumplimentado en la plataforma Bug Bounty, una especie de oferta, un acuerdo entre la empresa y la comunidad de baghunters. La siguiente información debe incluirse en el alcance:



  • indicar el propósito: la presencia de efectos nocivos o consecuencias destructivas que nos gustaría comprobar
  • información sobre errores que ya son conocidos, irrelevantes o poco interesantes para la empresa (no hay recompensa por encontrarlos)
  • reglas y límites para la búsqueda de vulnerabilidades que se deben seguir
  • tamaño de los premios.


Cuanto más tiempo dedique a la determinación del alcance, mejor. Intente completar todos los elementos con cuidado y en detalle, para que en el futuro pueda resolver todas las incidencias en función de la información especificada.



Un ejemplo de secciones con alcance con el contenido de puntos en el ejemplo de nuestro programa actual:





¿Cómo eliges cuál comprobar primero? Le recomendamos que incluya en el programa un servicio o aspecto que probablemente necesite ser verificado más. Es imposible comprender de inmediato qué es exactamente lo que necesita buscar, solo puede elegir una dirección, es importante encontrar los puntos más problemáticos. Con cada nuevo informe y cada nuevo programa, aumentamos nuestra experiencia y entendimos más claramente hacia dónde ir a continuación.



Hasta ahora, no todos nuestros servicios y productos figuran en la plataforma Bug Bounty. Esto se hizo deliberadamente, ya que algunos de los servicios, por ejemplo, se crearon sobre la base de soluciones de código abierto: equipos de terceros están comprometidos con su desarrollo y soporte, por lo que creemos que no tiene sentido exhibirlos dentro de nuestra plataforma Bug Bounty, ya que nuestro equipo solo monitorea la relevancia de estos servicios.



Vale la pena considerar si puede cambiar el producto incluido en el programa Bug Bounty: ¿hay un equipo que pueda desarrollarlo? ¿Permiten los matices de la arquitectura?



Por nuestra parte, durante los programas Bug Bounty, investigamos constantemente todos los servicios y la red por nuestra cuenta. Esto nos permitió ahorrar dinero: arreglamos los errores encontrados y actualizamos el alcance.



Un componente importante del programa es determinar el nivel de criticidad de la vulnerabilidad encontrada y establecer el tamaño de la recompensa. Intente capturar una relación transparente entre la gravedad del error y el tamaño de la recompensa. ¡Cuanto más transparente, menos preguntas para usted! Es una buena práctica vincular el tamaño del premio a la escala CVSS(un estándar abierto para evaluar la criticidad de la vulnerabilidad). Además, las plataformas de Bug Bounty suelen mostrar manuales e instrucciones sobre cómo determinar la cantidad de recompensa. Los administradores del sitio pueden ayudarlo con esto. Para navegar el nivel de pago por el trabajo de los cazadores de errores, puede ir al portal HeadHunter y analizar los salarios indicados. Si los piratas informáticos ya no están activos, podría valer la pena aumentar la recompensa.



En Timeweb, evaluamos de forma independiente la gravedad de la situación según el impacto en el negocio. Nuestra escala de gravedad del impacto empresarial incluye 4 niveles:



  • baja (recibir información no crítica sobre otros usuarios, por ejemplo, el nombre del inicio de sesión o la capacidad de cambiar avatares; así como violación de la integridad y disponibilidad de esta información)
  • medium ( , , ; )
  • high ( “” ; : , , , ; )
  • critical ( ; ).


Además de la información proporcionada anteriormente, analizamos el tipo de vulnerabilidad (RCE, XSS, inyección SQL) y la importancia del servidor que fue pirateado o al que se logró acceder.



Así, para establecer el nivel de gravedad del bug encontrado, analizamos el tipo de vulnerabilidad, la importancia del servidor y el grado de impacto en la empresa. Con base en estos criterios, determinamos el nivel para cada vulnerabilidad encontrada, lo que determina la cantidad de remuneración para el cazador de errores. Sin embargo, agregamos que es imposible tenerlo todo en cuenta y, a menudo, al determinar el nivel de criticidad de un error encontrado, no se puede prescindir de la subjetividad.



En las tablas se ofrece una descripción más detallada del proceso de evaluación de la gravedad de la vulnerabilidad:





Tabla de puntuación de servidor / servicio





Cronología de Bug Bounty: ¿Cómo fue?



Programa n. ° 1



Dejar ir: panel de alojamiento de Timeweb.ru Scop



: Scop se compiló sobre la base de ejemplos de otras empresas. Spoiler: ¡No lo hagas! Pero teníamos que empezar por algún lado.



Resultados: Durante la semana recibimos 20 informes, principalmente indicando vulnerabilidades críticas, y ... gastamos todo el dinero que depositamos en la cuenta (varios miles de dólares). Durante estos 7 días, vimos patrones repetidos de problemas: múltiples problemas con el filtrado de entrada y visualización de datos, varias violaciones de la lógica comercial de la aplicación, así como algunos otros riesgos para OWASP Top Ten. Decidimos suspender el programa, y ​​al mes siguiente solo estábamos arreglando los errores encontrados y analizándolos.



Tan pronto como analizamos estos 20 informes, entendimos qué hacer a continuación: dónde excavar durante el desarrollo, cómo trabajar correctamente con la seguridad.



Programa # 2



Lo abandonamos: Panel de alojamiento Timeweb.ru (nuevamente)



Scop : Arreglamos Scop basándonos en los informes recibidos anteriormente: eliminamos las vulnerabilidades reparadas y nos enfocamos en lo que nos interesa.



Resultados: Esta vez recibimos muchos informes críticos, aunque más específicos y específicos. Todas las tareas de Bug Bounty se identificaron como urgentes. Gracias al segundo programa, hemos ajustado los procesos de desarrollo y las correcciones de errores.



Programa No. 3



Lo abandonamos por desgarro: panel VDS Timeweb.ru , verifique



Resultados del sitio oficial : Se recibieron alrededor de 40 informes con errores de diversa gravedad.



Dado que nuestros productos son similares en funcionalidad, a veces heredan no solo funciones, sino también errores entre sí. Resultó que el nuevo panel contenía errores que ya se habían encontrado en programas anteriores de Bug Bounty. Tales errores se registraron en el alcance como un duplicado, por lo que no tuvimos que pagar por ellos nuevamente.



Se encontraron muchos problemas con formularios y vulnerabilidades XSS en el sitio.



Programa # 4



Alcances: El objetivo principal del cuarto programa era encontrar la inyección SQL.



Resultados:Antes de lanzar el programa, estudiamos de forma independiente cómo funciona y realizamos una investigación sobre nuestro producto nosotros mismos: solo encontramos 1-2 vulnerabilidades no críticas. Dos semanas después del lanzamiento de este programa por la noche, recibimos un informe largamente esperado: un cazador de errores demostró un vector de ataque con un efecto destructivo en una base de datos de facturación utilizando SQLi ciego. Pudimos cerrar rápidamente esta vulnerabilidad en 5 minutos: estaba en la versión global anterior del kernel, que todavía se usa como plug-ins para varias acciones en las últimas versiones globales de paneles de control (alojamiento virtual, VDS, webmasters). Estábamos encantados de haber podido detectar un problema tan grave y solucionarlo a tiempo. Entre otras cosas, verificamos minuciosamente todas las demás secciones de código similares por analogía.



Programa # 5



Se lo damos a la merced: Alojamiento virtual Timeweb



El alojamiento virtual es, a grandes rasgos, un servidor físico dividido entre cientos de clientes. Los clientes alojan sus aplicaciones web y directorios de trabajo en este servidor, tienen acceso SSH y FTP al servidor. Cada uno de nuestros clientes tiene sus propios clientes. En dicho servidor, se están ejecutando nuestros scripts de servicio de servicio, servicios y otras personalizaciones, que interactúan con otros servicios de servicio y bases de datos.



Alcance:El objetivo principal para los cazadores de errores aquí era simple: encontrar vectores para aumentar los privilegios al root. También esperábamos una búsqueda de vectores de influencia sobre otros usuarios y sus recursos, una búsqueda de vectores de influencia en nuestros scripts de servicio y una búsqueda de vectores de ataque en otros servidores, tanto de hosting virtual como de servicios, a los que habría una hipotética accesibilidad.



Resultados: Hemos asignado un servidor especial sin clientes para cazadores de errores, similar en funcionalidad a los servidores de producción. Por el momento, los cazadores de errores solo han encontrado 10 errores. Dos informes mostraron vectores de ataque con escalada de privilegios a la raíz, pero no pudieron llegar a otros servidores. Estos problemas se solucionaron de inmediato.



Antes de lanzar el quinto programa, nos sumergimos en actualizar servidores y software, lidiar con las debilidades, desplegar servicios de servicio en una red local inaccesible para la red externa. Gracias a este programa, refactorizamos los sistemas internos del servidor. Esto nos permitió notar errores incluso antes de que nos escribieran sobre ellos.



¿Y a dónde te llevó?



Acerca de los resultados del programa Bug Bounty



Durante casi un año del programa Bug Bounty, recibimos 72 informes. De estos, 36 informes no cumplen con las reglas de nuestro alcance. Sin embargo, los cazadores de errores encontraron 7 vulnerabilidades críticas, 9 altas y 10 errores de gravedad media y baja.



Para obtener tal resultado, gastamos más de $ 15,000 en remuneración para los cazadores de errores (excluyendo las tarifas de la plataforma). La recompensa más pequeña fue de $ 50 (por una vulnerabilidad que le permite recibir información sobre el método de pago de cualquier factura a través de IDOR). La recompensa más alta pagada hasta ahora es de $ 1,500. Remuneración promedio: aproximadamente $ 423.



En cuanto a los resultados de calidad:



preservamos el tono de los músculos IB



Dado que el programa Bug Bounty implica una búsqueda constante y continua de errores, nuestro equipo de seguridad de la información está en alerta 24/7.



Podemos decir que los cazadores de errores simulan las acciones de los piratas informáticos. Crean una actividad "dañina" sancionada todos los días, lo que nos obliga a mantener los ojos abiertos y la guardia. Manteniéndose al



día con la tendencia, los



Baghunters utilizan nuevos servicios, utilidades desconocidas y técnicas modernas de piratería. Gracias a esto, nuestros especialistas pueden actualizar sus competencias y conocimientos.



mejorar el servicio y los productos



La seguridad de la información en general y los procesos de Bug Bounty en particular siempre tienen como objetivo mejorar y desarrollar servicios y productos para el cliente.



involucrar a una comunidad de expertos



En la implementación de la seguridad de la información, no solo participan nuestros administradores internos, sino también una comunidad completa de expertos con diversas experiencias y conocimientos.



A menudo preguntamos a los cazadores de errores cómo reproducir el error encontrado e incluso cómo solucionarlo. Los especialistas estuvieron listos para comunicarse directamente en Telegram, grabar video, por lo cual estamos muy agradecidos.



Observamos la disciplina Al



trabajar con plataformas de Bug Bounty, somos responsables de cerrar los errores no solo para nosotros y los clientes, sino también para los cazadores de errores, que están esperando comentarios. La interacción se lleva a cabo de acuerdo con la normativa establecida, debemos actualizar periódicamente la información de los informes actuales.



En 3 días, tuvimos que responder al bughunter a su informe: si el error encontró un error, cuál es su nivel de gravedad. Por supuesto, podríamos dar una respuesta en una semana, pero este comportamiento no será compatible con los piratas informáticos y puede alienar a los cazadores de errores.



Entendemos mejor a los usuarios. Los



Baghunters son los mismos usuarios y clientes que nos brindan una determinada experiencia de usuario en términos de seguridad de la información.



¿Hay vida después de Bug Bounty?



Seguimos trabajando con un programa privado Bug Bounty con una plataforma probada. Nos gustaría construir de manera eficiente todos los procesos internos para cerrar y corregir errores. Tan pronto como entendamos que los cazadores de errores con los que estamos interactuando actualmente se han vuelto menos activos, intentaremos movernos a otros sitios de Bug Bounty, incluidos los más grandes, para recibir aún más informes y encontrar todos los problemas posibles.



Otra área de desarrollo para nosotros fue la implementación de los principios del desarrollo seguro. Normalmente, los desarrolladores realizan programación funcional y la seguridad pasa a un segundo plano. Es importante hacer de la revisión de seguridad del código una parte clave de cualquier revisión de código.



El equipo de Timeweb está tratando de implementar herramientas nuevas y modernas para auditar la seguridad de la información de los servicios. Aprendimos sobre algunos de los recursos a través de la cooperación con cazadores de errores.



Poco a poco, involucramos al personal de soporte técnico en la resolución de problemas de seguridad de la información: capacitamos a los colegas y fortalecemos al equipo.



Estamos listos para hablar sobre el programa Bug Bounty por tiempo indefinido. Quizás todavía tenga preguntas para nuestros expertos: escriba en los comentarios, qué más es interesante y útil para leer. Intentaremos responder todas las preguntas a continuación o explicar con más detalle en los siguientes artículos.



All Articles