Recientemente pasé por una entrevista de trabajo de la cuál aún sigo esperando noticias, el caso es que era para una posición backend con experiencia en arquitectura del software. Cuando me preguntaron acerca de mis inquietudes, enseguida salió la relacionada con la ciberseguridad a la hora de desarrollar software seguro y lo poco que creo que estamos haciendo en la industria acerca de este tipo de problemas.

Yo creo que es por falta de concienciación y por desconocimiento, por lo que voy a compartir mis dos centavos.

Imagina que sospechas que tu producto api REST tiene vulnerabilidades, o sabes que las tienes porque has tenido la mala suerte que crackers se hayan fijado en tu producto.
Cómo lo harías?. Lo que yo haría sería en primer lugar bien contratar a un equipo de ciberseguridad, o mejor dos, uno especializado en red team, y el otro blue team. Es decir, los primeros especializados en encontrar vulnerabilidades y el segundo en cerrarlas. Incluso ya puestos, pensar en el Purple team. Y luego, integrar a estos especialistas en los distintos equipos de desarrollo, nada de dejarlos en su propia isla. Se trata de que ayuden tanto a crear software seguro como a concienciar al resto del equipo sobre desarrollo defensivo y seguro.

Si no puedes contratar a especialistas para integrarlos en tus equipos de desarrollo, trataría de integrar herramientas en el pipeline que se encarguen de escanear continuamente el código en busca de vulnerabilidades, creando informes para crear reproducibilidad de dichos problemas y así poder crear la solución para cerrar la brecha.

Aquí tienes algunas herramientas populares que son ampliamente utilizadas en la industria de la seguridad cibernética:

1) OWASP ZAP (Zed Attack Proxy): Es una herramienta de código abierto que se utiliza para encontrar vulnerabilidades en aplicaciones web y API REST. ZAP puede ser utilizado tanto de manera automática como manual, y ofrece características como escaneo de seguridad, inyección de payloads, y análisis de resultados detallados.

2) Nessus: Es una herramienta de escaneo de vulnerabilidades muy conocida que puede identificar una amplia gama de problemas de seguridad, incluidos los relacionados con API REST. Ofrece escaneos automatizados y programables, así como informes detallados sobre las vulnerabilidades encontradas.

3) Burp Suite: Es una suite de herramientas de seguridad web que incluye módulos específicos para pruebas de API REST. Burp Suite permite interceptar y modificar solicitudes HTTP, así como realizar escaneos automáticos en busca de vulnerabilidades comunes como SQL injection, cross-site scripting (XSS), y más.

4) Postman: Aunque es conocido principalmente como un cliente de API, Postman también incluye características para pruebas de seguridad. Puedes utilizar Postman para automatizar pruebas de seguridad como la inyección de payloads y la detección de vulnerabilidades comunes.

5) Snyk: Es una plataforma de seguridad que se especializa en identificar y remediar vulnerabilidades en dependencias de código abierto. Si tu API REST utiliza bibliotecas o frameworks de terceros, Snyk puede ayudarte a identificar y solucionar vulnerabilidades en esas dependencias.

6) Acunetix: Es una herramienta de escaneo de vulnerabilidades web que también puede ser utilizada para encontrar problemas de seguridad en API REST. Ofrece escaneos automáticos y manual, así como informes detallados sobre las vulnerabilidades encontradas.

Hay varias herramientas en el mercado que ofrecen capacidades de escaneo automatizado de contenedores como parte de un pipeline de CI/CD. Aquí hay algunas de las opciones más populares:

1) Docker Security Scanning (DSS): Es una herramienta proporcionada por Docker que escanea imágenes de contenedor para identificar vulnerabilidades de seguridad conocidas en las bibliotecas y dependencias incluidas en la imagen. DSS se integra fácilmente con Docker Hub y Docker Trusted Registry.

2) Clair: Es una herramienta de escaneo de seguridad de código abierto desarrollada por CoreOS. Clair analiza imágenes de contenedor en busca de vulnerabilidades conocidas en las dependencias y bibliotecas utilizadas en la imagen. Puede ser integrado en pipelines de CI/CD para automatizar el escaneo de imágenes.

3) Anchore Engine: Es una plataforma de seguridad de contenedores que incluye capacidades de escaneo de imágenes. Anchore Engine analiza imágenes de contenedor en busca de vulnerabilidades conocidas y políticas de cumplimiento, permitiendo a los equipos de desarrollo garantizar la seguridad y el cumplimiento de las imágenes antes de implementarlas.

4) Twistlock: Es una plataforma de seguridad de contenedores que ofrece escaneo automatizado de imágenes de contenedor en busca de vulnerabilidades conocidas, así como detección de configuraciones incorrectas y análisis de comportamiento anómalo en tiempo de ejecución.

5) Sysdig Secure: Ofrece escaneo automatizado de imágenes de contenedor para identificar vulnerabilidades conocidas y configuraciones incorrectas. También incluye capacidades de monitoreo de seguridad en tiempo de ejecución para detectar y responder a amenazas en contenedores en producción.

6) Tenable.io Container Security: Es una plataforma de seguridad de contenedores que ofrece escaneo automatizado de imágenes de contenedor en busca de vulnerabilidades conocidas y configuraciones incorrectas. También incluye integraciones con herramientas de CI/CD para facilitar la integración en pipelines.

Para el escaneo automatizado de contenedores en entornos de Kubernetes (K8s), algunas de las herramientas mencionadas anteriormente también ofrecen soporte específico para este tipo de despliegues. Además, hay algunas herramientas diseñadas específicamente para trabajar con Kubernetes y proporcionar escaneo automatizado de imágenes de contenedor. Aquí hay algunas opciones que podrías considerar:

1) Trivy: Es una herramienta de escaneo de vulnerabilidades de contenedores de código abierto que es especialmente popular en entornos de Kubernetes. Trivy es fácil de integrar en pipelines de CI/CD y proporciona escaneo rápido de imágenes de contenedor en busca de vulnerabilidades conocidas.

2) Aqua Security: Es una plataforma de seguridad de contenedores que ofrece capacidades de escaneo automatizado de imágenes de contenedor para entornos de Kubernetes. Aqua Security también proporciona protección en tiempo de ejecución para contenedores en entornos de Kubernetes.

3) Sysdig Secure: Además de ofrecer capacidades de escaneo de imágenes de contenedor para Docker, Sysdig Secure también es compatible con Kubernetes. Proporciona escaneo automatizado de imágenes de contenedor en entornos de Kubernetes, así como monitoreo de seguridad en tiempo de ejecución.

4) Tenable.io Container Security: Ofrece capacidades de escaneo de imágenes de contenedor para entornos de Kubernetes. Tenable.io Container Security puede integrarse fácilmente en pipelines de CI/CD y proporciona escaneo automatizado de imágenes de contenedor en entornos de Kubernetes.

5) Prisma Cloud de Palo Alto Networks: Anteriormente conocido como Twistlock, Prisma Cloud ofrece capacidades de escaneo de imágenes de contenedor y seguridad en tiempo de ejecución para entornos de Kubernetes. Puede detectar y mitigar vulnerabilidades en imágenes de contenedor y proporcionar protección contra amenazas en tiempo de ejecución para contenedores en entornos de Kubernetes.

Mención especial para Falco. Falco es otra herramienta importante cuando se trata de seguridad en entornos de Kubernetes. Aunque Falco no se centra específicamente en el escaneo de imágenes de contenedor como las herramientas mencionadas anteriormente, desempeña un papel crucial en la detección de comportamientos anómalos y actividades maliciosas en tiempo real en entornos de Kubernetes.

Falco es un sistema de detección de intrusiones (IDS) y prevención de intrusiones (IPS) diseñado específicamente para entornos de contenedores y Kubernetes. Utiliza una combinación de análisis de comportamiento y reglas de seguridad definidas por el usuario para identificar y alertar sobre actividades sospechosas en tiempo de ejecución.

Aunque Falco no realiza escaneos de imágenes de contenedor, puede complementar las herramientas de escaneo de imágenes al proporcionar una capa adicional de seguridad en tiempo de ejecución. Por ejemplo, Falco puede detectar actividades sospechosas como intentos de acceso no autorizado, ejecución de comandos inusuales dentro de contenedores o acceso a recursos sensibles dentro del clúster de Kubernetes.

Integrar Falco en tu entorno de Kubernetes te permite monitorear y responder proactivamente a posibles amenazas en tiempo real, lo que ayuda a fortalecer la seguridad de tus aplicaciones y datos en contenedores. Además, Falco es altamente personalizable, lo que te permite adaptar las reglas de seguridad según tus necesidades específicas y políticas de seguridad.

Una vez que he encontrado por ejemplo vulnerabilidades, por ejemplo de tipo sql injection con una herramienta automatizada, el siguiente paso es hacer buenos tests unitarios evitando antipatrones que efectivamente exploten esa vulnerabilidad de manera que aparezca en verde, para luego ir modificando el código base hasta que dicho test o tests se pongan en rojo.

Este enfoque se conoce comúnmente como «pruebas de penetración» o «pruebas de explotación», donde se intenta explotar activamente una vulnerabilidad conocida para confirmar su existencia y comprender su impacto en el sistema.

En definitiva, paso a paso se puede hacer lo siguiente:

1) Identificar la vulnerabilidad: Utiliza una herramienta automatizada o análisis manual para identificar la vulnerabilidad, como una SQL injection.

2) Crear pruebas unitarias de explotación: Crea pruebas unitarias que intenten explotar la vulnerabilidad identificada. Estas pruebas podrían incluir, por ejemplo, solicitudes HTTP especialmente diseñadas que intenten inyectar código SQL malicioso en la API REST.

3) Verificar el resultado de las pruebas: Ejecuta las pruebas unitarias creadas y verifica si alguna de ellas tiene éxito al explotar la vulnerabilidad. Si alguna prueba pasa con éxito, significa que la vulnerabilidad está presente y puede ser explotada.

4) Modificar el código base: Modifica el código base para corregir la vulnerabilidad identificada. Esto podría implicar, por ejemplo, la implementación de consultas parametrizadas o el uso de marcos ORM para prevenir SQL injection.

5) Ejecutar las pruebas unitarias nuevamente: Después de realizar los cambios en el código base, vuelve a ejecutar las pruebas unitarias de explotación. Si las correcciones son efectivas, las pruebas unitarias deberían fallar al intentar explotar la vulnerabilidad.

6) Refinar y repetir si es necesario: Si alguna prueba unitaria sigue teniendo éxito en explotar la vulnerabilidad, repite el proceso de identificación, corrección y verificación hasta que todas las pruebas unitarias fallen, lo que indica que la vulnerabilidad ha sido completamente corregida.

Este enfoque te ayuda a confirmar que las vulnerabilidades identificadas son reales y proporciona un medio para validar la efectividad de las correcciones aplicadas. Sin embargo, es importante tener en cuenta que las pruebas de explotación deben realizarse con precaución y solo en entornos controlados para evitar dañar el sistema o comprometer la seguridad del mismo. Además, complementa este enfoque con medidas adicionales de seguridad, como la revisión de código y pruebas de seguridad continuas para garantizar una protección integral contra vulnerabilidades. Esto es algo muy importante, continuamente aparecen vulnerabilidades y hay que procurar tener un enfoque proactivo para cerrar estas vulnerabilidades y así empezar a dejar de escuchar sobre «problemas informáticos».

Un saludo.

Alonso

Aviso de responsabilidad:

No trabajo para ninguno de estos productos.

Deja un comentario