Nuestro enfoque para la gestión de vulnerabilidades
Nuestro enfoque para la gestión de vulnerabilidades de seguridad en Atlassian
En Atlassian reconocemos que, hasta cierto punto, las vulnerabilidades de seguridad forman parte inherentemente de cualquier proceso de desarrollo de software. Sin embargo, nos esforzamos constantemente por reducir tanto la gravedad de las vulnerabilidades como la frecuencia con la que estas surgen en nuestros propios productos y servicios.
Para ello, hemos establecido un enfoque polifacético para la gestión de vulnerabilidades que se basa en una combinación de procesos automatizados y manuales. Creemos que esta es la manera más eficaz de limitar la posibilidad de que las vulnerabilidades "se cuelen por las grietas" y pasen desapercibidas durante un periodo prolongado.
En este artículo, ofrecemos una síntesis de cómo gestionamos las vulnerabilidades de nuestros productos y nuestra infraestructura, y de cómo estamos desarrollando constantemente ese enfoque incorporando las últimas herramientas, los últimos métodos y las últimas ideas para garantizar que nuestra forma de gestionar las vulnerabilidades siga siendo eficaz en el futuro.
Una descripción general de nuestro proceso de identificación y resolución de vulnerabilidades
Disponemos de un proceso metódico para identificar las vulnerabilidades, hacer un seguimiento de ellas y resolverlas, sean del tipo que sean.
Descubrimiento y atribución continuos de activos
Descubrimiento continuo de activos internos: utilizamos un sistema propio para inventariar todos nuestros activos de EC2 y del equilibrador de carga de AWS mediante AWSConfig y atribuirlos al propietario correcto. Conservamos todo un año de activos, hasta un total de entre 50 y 60 millones.
Identificación de vulnerabilidades
Utilizamos una amplia gama de las mejores herramientas de detección de vulnerabilidades que se ejecutan con regularidad en nuestros productos y nuestra infraestructura para analizar e identificar automáticamente las vulnerabilidades. Esto incluye los productos de Atlassian Cloud y Data Center, las imágenes de las aplicaciones de Docker, las aplicaciones internas, las móviles y las externas; así como nuestra infraestructura, tanto la local como la que está en la nube. Estas herramientas analizan e identifican de forma automática las vulnerabilidades existentes e incluyen las siguientes:
- Análisis por host: actualmente utilizamos Assetnote para realizar análisis de seguridad continuos de nuestro perímetro externo, y Tenable.io para análisis continuos internos y externos. Estas herramientas permiten identificar puertos abiertos, servicios y aplicaciones que se ejecutan en nuestro entorno, así como las vulnerabilidades en los hosts de red.
- Análisis de imágenes de contenedores: utilizamos contenedores de Docker para implementar muchas de nuestras aplicaciones. Además, realizamos un análisis completo de la seguridad cada vez que se implementan en nuestros entornos de producción o preproducción. Para ello, empleamos una herramienta llamada Snyk. Más adelante en esta página se ofrecen más detalles al respecto.
- Análisis de dependencias de código abierto: utilizamos Snyk para identificar cualquier vulnerabilidad que pueda existir en dependencias de terceros o de código abierto. Más adelante en este artículo se ofrecen más detalles al respecto.
- Supervisión de la configuración de AWS: desplegamos e integramos Lacework en el entorno en la nube de AWS de Atlassian para ofrecer una monitorización continua de la configuración conforme a las guías de referencia establecidas para nuestros entornos de AWS.
Revisamos continuamente las últimas herramientas disponibles y las añadimos al paquete de productos y servicios que utilizamos si consideramos que mejorarán nuestras capacidades para detectar vulnerabilidades.
También disponemos de una serie de medios adicionales para identificar vulnerabilidades en combinación con los análisis automatizados que ejecutamos. Por ejemplo:
Nuestro programa de recompensas por errores: usamos Bugcrowd para organizar nuestro programa de recompensas por errores. Bugcrowd nos permite acceder a una comunidad experta y fiable formada por decenas de miles de investigadores en ciberseguridad que están continuamente probando nuestros productos y avisándonos de todas las vulnerabilidades que encuentran. Nuestro programa de recompensas por errores ha sido reconocido como el mejor del sector en 2018 y 2019.
Informes de clientes y usuarios: los usuarios de nuestros productos pueden notificar cualquier error que encuentren en cualquier momento a través del soporte de Atlassian. Colaboraremos con ellos para recopilar todos los detalles necesarios, de forma que podamos identificar internamente dicha vulnerabilidad y proceder a corregirla (proceso sujeto a validación para asegurarnos de que la vulnerabilidad sea real y no un falso positivo). Esto también incluye al personal de Atlassian, que puede generar una incidencia para informar de cualquier vulnerabilidad que observe en nuestros productos (ya sea de forma externa o interna) y dirigirla directamente al equipo de seguridad, o bien generar un ticket de asistencia.
Las pruebas de penetración externas: Recurrimos a consultoras especializadas en seguridad para realizar pruebas de penetración de caja blanca y asistidas por código en productos e infraestructuras de alto riesgo. Si deseas información más detallada, consulta "Nuestro enfoque sobre las pruebas de seguridad externas".
El equipo de seguridad de productos de Atlassian: Realizamos revisiones de código específicas, tanto manuales como asistidas por herramientas, y colaboramos estrechamente con nuestros equipos de desarrollo de productos para mejorar su capacidad de detectar las vulnerabilidades por su cuenta y resolverlas antes de que el código llegue a nosotros.
El equipo rojo de Atlassian: Tenemos un equipo rojo interno cuya función es simular el papel de los adversarios que intentan identificar y explotar las vulnerabilidades que existen en nuestros sistemas, procesos y entornos, de forma que podamos asegurarnos de que se identifiquen y solucionen cuanto antes.
Seguimiento y resolución de vulnerabilidades
Utilizamos un sistema interno de tickets y escalaciones para rastrear todas las vulnerabilidades identificadas y que pretendemos corregir. En concreto, independientemente de si una vulnerabilidad se identifica mediante alguna de nuestras herramientas de análisis o por alguna de las otras vías que hemos comentado más arriba, se crea un ticket específico para cada vulnerabilidad y se asigna al equipo de productos correspondiente para su resolución. Para cada vulnerabilidad se rastrean los objetivos de nivel de servicio (SLO) de corrección que publicamos en nuestra Política de solución de errores de seguridad.
Nuestro equipo de seguridad supervisa este proceso y colabora con los equipos de productos e infraestructura para garantizar que todas las vulnerabilidades se han identificado con exactitud y responder las preguntas relacionadas con su corrección.
En cuanto se desarrolla una corrección para una vulnerabilidad, se prueba a fondo y, en el caso de nuestros productos de Cloud, se incorpora posteriormente a nuestra canalización de CI/CD para su implementación. En el caso de los productos de Data Center, las correcciones se incluyen en una nueva versión y se implementan junto con otras correcciones de forma periódica, de conformidad con nuestra cadencia de publicación estándar. Los tickets de vulnerabilidades generados por las herramientas de análisis se cierran automáticamente si en los análisis posteriores no se detectan esas vulnerabilidades. Los tickets de vulnerabilidades detectadas manualmente los cierran los miembros del equipo de seguridad, infraestructura o productos una vez que la corrección está a disposición de los clientes.
Prevención de vulnerabilidades durante el proceso de desarrollo
Análisis de imágenes de contenedores
Atlassian implementa la mayor parte de sus aplicaciones utilizando imágenes de contenedores de Docker. Los contenedores de Docker proporcionan un entorno contenido e independiente que consta de las bibliotecas del sistema pertinentes, las herramientas, los ajustes de configuración y cualesquiera otras dependencias necesarias para que nuestros productos se puedan ejecutar, independientemente de los parámetros de configuración de cada máquina. El contenedor proporciona de forma eficaz una capa de abstracción, que desvincula el código de software de la infraestructura subyacente para que nuestros productos puedan funcionar sin problemas en diferentes máquinas.
A pesar de que los contenedores aportan grandes ventajas para nuestros desarrolladores y clientes en lo tocante a la capacidad para implementar código apto para su uso en diversos entornos, pueden ser una fuente de vulnerabilidades de seguridad si el contenido de las imágenes consta de componentes o bibliotecas obsoletos o inseguros por cualquier otro motivo.
Para hacer frente a esto, Atlassian integra un proceso de análisis de seguridad de los contenedores por eventos que supervisa las implementaciones realizadas a través de nuestra plataforma de implementación Micros para cualquier contenedor que se implemente en nuestros entornos de producción. Además, los desarrolladores pueden integrar un proceso de análisis en nuestra canalización de CI/CD para cualquier contenedor que se implemente en nuestros entornos de desarrollo. A tal efecto, utilizamos el motor de contenedor Snyk. Snyk aporta una serie de herramientas que llevan a cabo una inspección en profundidad de todas las imágenes de los contenedores que implementan nuestros desarrolladores. Dicha inspección consiste en un análisis pormenorizado de esas imágenes para identificar los diversos componentes que contienen y en determinar cuáles tienen vulnerabilidades conocidas.
Dependencias de código abierto
Aunque es importante detectar y corregir vulnerabilidades en nuestro propio código, nuestros productos y servicios también dependen de numerosas bibliotecas de terceros. Por lo tanto, resulta igual de importante que sepamos cuáles son las bibliotecas que usamos y que estas estén actualizadas con las últimas correcciones de errores de seguridad. Para ello, empleamos una herramienta llamada Snyk. Snyk proporciona un escáner capaz de identificar dependencias en cualquiera de las compilaciones de nuestro software y, luego, de comparar estas bibliotecas con una base de datos de vulnerabilidades de seguridad conocidas.
Todas las vulnerabilidades identificadas se comunican automáticamente generando un ticket formal de Jira con el equipo de productos pertinente siguiendo el proceso de gestión de vulnerabilidades que hemos expuesto más arriba en esta página.
Otras iniciativas que empleamos para ayudar a combatir las vulnerabilidades
Hasta ahora, en este artículo hemos expuesto en gran parte los pasos que adoptamos para gestionar las vulnerabilidades en el "back-end" (es decir, lo que hacemos para corregir una vulnerabilidad identificada en nuestros productos o plataformas). Sin embargo, nos esforzamos constantemente por reducir la frecuencia con la que surgen en primer lugar. Con este propósito, hemos incorporado algunas iniciativas únicas en el "front-end" de nuestro proceso de desarrollo para garantizar que nuestros productos se compilen desde cero pensando en la seguridad.
Ingenieros de seguridad de productos
Ninguna discusión sobre la gestión de vulnerabilidades estaría completa sin explicar el papel esencial que desempeñan nuestros ingenieros de seguridad de productos, tanto para corregir los errores como para diseñar las herramientas de corrección.
Nuestros ingenieros de seguridad de productos realizan la evaluación inicial de las nuevas vulnerabilidades registradas y trabajan con nuestros equipos de ingeniería de productos para dar con la mejor solución. Los ingenieros de seguridad de productos son expertos en seguridad de aplicaciones y están repartidos por todo el mundo para poder colaborar de forma más efectiva con los ingenieros de productos cuando sea necesario.
Nuestros ingenieros de seguridad desempeñan funciones de seguridad tanto proactivas como reactivas en relación con el producto que se les ha asignado, entre las que se incluyen las siguientes:
- Revisar y analizar los modelos de amenazas hasta la fecha de riesgos nuevos y emergentes.
- Revisar y analizar la seguridad de las funciones nuevas.
- Revisar código manualmente.
- Efectuar pruebas de penetración.
- Revisar la plataforma y la arquitectura.
- Hacer un seguimiento de las principales actividades relacionadas con los proyectos y orientar cuando sea preciso.
- Cribar, archivar, recompensar y garantizar la resolución oportuna de las incidencias notificadas a través de nuestro programa de recompensas por errores.
- Crear automatizaciones nuevas y hacer un mantenimiento de la automatización y las herramientas existentes para maximizar la cobertura y la eficiencia.
Puntuaciones de seguridad
Con los datos recopilados de los sistemas expuestos en este documento, podemos cotejar los equipos y productos entre sí para identificar proactivamente los aspectos que se pueden mejorar.
El resumen
Atlassian adopta un enfoque polifacético para gestionar las vulnerabilidades en todos nuestros productos y plataformas, el cual se basa en una combinación de herramientas de análisis automáticas, un programa de recompensas por errores y una serie de mecanismos de otra índole que evolucionan constantemente. Todo ello con el fin de garantizar que identifiquemos y resolvamos las vulnerabilidades que surjan con la máxima rapidez posible y que, en primer lugar, minimicemos su frecuencia.
¿Quieres profundizar?
¿Quieres profundizar?
Existen diversos recursos de otro tipo que hemos mencionado en este documento o que puedes consultar por otro lado para obtener más información sobre nuestro enfoque de gestión de vulnerabilidades, así como de la seguridad en general.
- Trust Center de Atlassian
- Política de solución de errores de seguridad de Atlassian
- Enfoque sobre las pruebas de seguridad externas
- Entrega continua
- Asesoramientos sobre seguridad
- Programas de recompensas por errores de Atlassian
- Programa de recompensas por errores de aplicaciones de Marketplace desarrolladas por Atlassian
- Programa de recompensas por errores de aplicaciones de Marketplace desarrolladas por otros proveedores
- Recompensas por errores de Opsgenie
- Recompensas por errores de Statuspage
- Recompensas por errores de Trello
- Recompensas por errores de Atlassian para todos los demás productos (Jira, Confluence, Bitbucket, etc.)
En esta página, el término "vulnerabilidades" puede usarse indistintamente con el término "errores", que es el que utilizamos en un artículo independiente acerca de nuestro enfoque en cuanto a las pruebas de seguridad.