Hoy en día, las amenazas a la ciberseguridad están por todas partes y son constantes. A medida que más aspectos de nuestra vida se digitalizan, también aumenta el riesgo de sufrir delitos cibernéticos. Hay demasiados códigos que proteger y los datos personales son demasiado valiosos. Además, después de implementar un programa, resulta casi imposible estar al día y defender todos los aspectos de la superficie de ataque.
Hay formas de mitigar algunos de estos síntomas, y una de ellas se hace evidente cuando una organización inteligente adopta el concepto de IaC (Infraestructura como Código). Por supuesto, al igual que en otras áreas de desarrollo, hay algunos problemas de seguridad que deben superarse. Además, dado que los desarrolladores están creando el código que genera la infraestructura necesaria para alojar las aplicaciones, es muy importante que sean conscientes de la seguridad en todas las etapas del proceso.
Entonces, ¿cuál es exactamente la forma en que los desarrolladores que se enfrentan por primera vez al entorno de servidores en la nube pueden aprender la tecnología, adquirir destreza y reforzar su conciencia sobre la seguridad mientras se familiarizan con la compilación? Hemos creado la próxima serie Coders Conquer Security para abordar las vulnerabilidades comunes de IaC.Y en las próximas entradas del blog nos centraremos en los pasos que pueden dar los desarrolladores para empezar a implementar la infraestructura de seguridad en forma de código en sus organizaciones .
¿Empezamos?
Hay una fábula sobre un hombre que aparece en el Viejo Oeste americano. Es la historia de un hombre que mostraba síntomas delirantes, creyendo que unos bandidos iban a atacar y saquear su granja. Para compensar esto, instaló una puerta de entrada muy resistente, cerró todas las ventanas y guardó muchas armas al alcance de la mano, invirtiendo en todo tipo de medidas de seguridad. Una noche, se olvidó de cerrar la puerta lateral y, mientras dormía, lo robaron. Los ladrones simplemente encontraron al guardia, que se había convertido en un obstáculo, y se aprovecharon rápidamente de la situación.
Desactivar las funciones de seguridad en la infraestructura es similar. Aunque la red cuente con una infraestructura de seguridad sólida, si los elementos están desactivados, no servirá de mucho.
Antes de empezar en serio, voy a intentar un reto.
Al visitar el enlace anterior, se le redirigirá a una plataforma educativa gamificada. Aquí podrá resolver inmediatamente las vulnerabilidades de las funciones de seguridad desactivadas. (Atención: se abre en Kubernetes, pero puede seleccionar entre Docker, CloudFormation, Terraform y Ansible utilizando el menú desplegable).
¿Cómo ha estado? Si aún tiene algo que hacer, lea la siguiente información.
Las funciones de seguridad pueden desactivarse por diversos motivos. En algunas aplicaciones y marcos, pueden estar desactivadas de forma predeterminada y es necesario activarlas primero para que funcionen. Además, es posible que el administrador haya desactivado determinadas funciones de seguridad para facilitar la realización de tareas específicas sin sufrir continuos desafíos o bloqueos (por ejemplo, al configurar un bucket de AWS S3 como público). Una vez completada la tarea, es posible que se olvide de volver a activar la función desactivada. También es posible que prefiera dejar la función desactivada para facilitar el trabajo más adelante.
¿Por qué es peligroso desactivar las funciones de seguridad?
No es recomendable desactivar una o más funciones de seguridad por varias razones. Una de ellas es que estas funciones se han añadido a los recursos de infraestructura para protegerlos contra exploits, amenazas o vulnerabilidades conocidas. Si se desactivan, los recursos quedarán desprotegidos.
Los atacantes siempre intentan encontrar primero las vulnerabilidades que pueden explotarse fácilmente y pueden utilizar scripts para detectar debilidades comunes. No es diferente a lo que hace un ladrón cuando revisa todos los coches de la calle para ver si alguna puerta está abierta. Es mucho más fácil que romper una ventana. Los hackers pueden sorprenderse al descubrir que las defensas de seguridad comunes están desactivadas, pero si esto ocurre, no tardarán mucho en explotarlo.
En segundo lugar, si se configura un buen sistema de seguridad y luego se desactiva, se crea una falsa sensación de seguridad. Si el administrador no sabe que alguien ha desactivado este sistema de defensa, puede pensar que está protegido contra las amenazas habituales.
Como ejemplo de cómo un atacante puede aprovechar una función de seguridad desactivada, consideremos la función de seguridad de AWS S3 denominada «bloqueo de acceso público». El bloqueo de acceso público de Amazon S3 permite a los administradores de cuentas y a los propietarios de buckets establecer fácilmente un control centralizado para restringir el acceso público a los recursos de Amazon S3.Sin embargo, algunos administradores que tienen problemas para acceder a los buckets de S3 deciden hacerlos públicos para completar sus tareas lo antes posible. Si se olvida de activar la función de seguridad, los atacantes tendrán acceso completo a la información almacenada en esos buckets de S3, lo que no solo provocará una fuga de información, sino que también generará costes adicionales por las tarifas de transferencia de datos.
Comparemos el código real. Eche un vistazo al siguiente fragmento de CloudFormation.
Vulnerable:
Empresa Bucket:
Tipo: AWS: :S3: :Bucket
Propiedades:
Configuración de bloqueo de acceso público:
Bloqueo de ACL pública: false
Bloqueo de política pública: false
Ignorar ACL pública: false
Restricción de bucket público: false
Configuración de control de versiones:
Estado: Activado
Cifrado de bucket:
Configuración de cifrado del lado del servidor:
- Cifrado del lado del servidor por defecto:
Algoritmo SSE: «AES 256»
Seguridad:
Empresa Bucket:
Tipo: AWS: :S3: :Bucket
Propiedad:
Configuración de bloqueo de acceso público:
Bloqueo de ACL pública: true
Bloqueo de política pública: true
Ignorar ACL pública: true
Restricción de bucket público: true
Configuración de control de versiones:
Estado: Activado
Cifrado de bucket:
Configuración de cifrado del lado del servidor:
- Cifrado del lado del servidor por defecto:
Algoritmo SSE: «AES 256»
Prevención de funciones de seguridad desactivadas
Evitar que las funciones de seguridad desactivadas tengan un impacto negativo en la organización es tanto una cuestión de práctica como de política. Debe existir una política firme que establezca que las funciones de seguridad solo deben desactivarse en situaciones muy específicas. Deben registrarse los casos en los que sea necesario desactivar temporalmente una función para resolver un problema o actualizar una aplicación. Una vez completadas las tareas necesarias, debe comprobarse que la función se ha reactivado por completo.
Para simplificar las operaciones, si es necesario desactivar permanentemente las funciones de seguridad, se deben proporcionar otras funciones de protección a los datos afectados para que los hackers no puedan acceder a ellos si no se dispone de la protección básica. Si se desactivan las funciones de protección necesarias, es solo cuestión de tiempo que los atacantes encuentren una puerta abierta y se aprovechen de la situación.
Infórmese detalladamente y póngase a prueba.
Compruébelo. Secure Code Warrior. Para obtener más información sobre esta vulnerabilidad y sobre cómo proteger a su organización y a sus clientes de los daños causados por otras fallas y vulnerabilidades de seguridad, consulte la página del blog.
¿Ya ha leído la publicación y está listo para encontrar y corregir esta vulnerabilidad? Es hora de ponerse manos a la obra.Pruebe el desafío de seguridad gamificado de iAC. Perfeccione todas sus habilidades de ciberseguridad y manténgase al día Secure Code Warrior .
Esta serie es una serie semanal que aborda las ocho vulnerabilidades principales de la infraestructura como código. ¡Vuelve la semana que viene para obtener más información!