Los codificadores conquistan la infraestructura de seguridad como serie de código: Protección insuficiente de la capa de transporte
Si usted es un desarrollador que busca aprender más sobre los pasos que puede tomar para comenzar a desplegar una infraestructura segura como código (IaC) en su organización, entonces ha llegado al lugar correcto. Este es el siguiente capítulo de nuestra serie de IaC, diseñada para que te pongas al día en las mejores prácticas de seguridad de IaC.
Antes de empezar, ¿cómo te fue con el desafío de la última entrega? Si dominas la criptografía insegura, veamos cómo te va con la protección insuficiente de la capa de transporte antes de entrar en detalles:
¿Quieres saber más y conseguir una puntuación perfecta? Sigue leyendo:
En nuestro último artículo, hablamos de la importancia de tener una criptografía segura para proteger cualquier dato importante o personal almacenado por aplicaciones y programas. Si tienes una encriptación fuerte, actúa como una perfecta última línea de defensa. Incluso si un atacante es capaz de robar esos datos, si están fuertemente encriptados, entonces la información encerrada dentro de esos archivos sigue estando protegida.
Sin embargo, la protección de los datos en reposo es sólo una parte de una defensa completa de los datos. Siempre que los usuarios válidos necesiten acceder a los datos protegidos, hay que enviárselos. A veces, las aplicaciones también compartirán datos con otros programas como parte de una carga de trabajo general. A menos que la capa de transporte esté protegida, la hace vulnerable tanto al fisgoneo externo como a la visualización interna no autorizada. Por lo tanto, tener una protección insuficiente de la capa de transporte puede causar graves problemas.
Es un problema común. La organización de seguridad OWASP incluso mantiene una página completa sobre la insuficiente protección de la capa de transporte.
¿Por qué es peligrosa una protección insuficiente de la capa de transporte?
Si no proteges suficientemente tus capas de transporte, es relativamente fácil para los hackers expertos interceptar la información que fluye entre tus usuarios y tus aplicaciones utilizando técnicas como los ataques man-in-the-middle. Probablemente el aspecto más peligroso de este tipo de fisgoneo es que es casi completamente invisible para cualquier plataforma o escáner de ciberseguridad interno porque ocurre fuera de su red y de su control.
Por ejemplo, en un entorno Docker desplegando un servicio Nginx:
services:
nginx:
image: localhost:5000/scw_nginx
build: ./nginx
secrets:
- nginx_cert
- nginx_key
volumes:
- type: bind
source: ./nginx/nginx.conf
target: /etc/nginx/nginx.conf
read_only: yes
ports:
- 80:8443
networks:
- frontend
deploy:
restart_policy: *default-restart_policy
resources: *default-resources_policy
La configuración del servicio Nginx no cifrará ni protegerá la conexión, lo que hará que toda la información intercambiada a través del enlace sea vulnerable a diversos ataques o al espionaje.
server {
server_name scw-dev-blog.org;
listen 8443;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+AESGCM:EDH+AESGCM;
ssl_prefer_server_ciphers on;
ssl_certificate /run/secrets/nginx_cert;
ssl_certificate_key /run/secrets/nginx_key;
access_log /dev/stdout;
error_log /dev/stderr;
location / {
proxy_pass http://wordpress:8080;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
A menudo, la primera señal de que alguien podría estar fisgoneando a través de sus capas de transporte es cuando se utiliza un gran número de contraseñas de usuario robadas en ataques posteriores. Si otros datos, como la información de los clientes, los registros financieros o los secretos importantes de la empresa, son robados a través de una capa de transporte insegura, es posible que nunca se dé cuenta de que ha sido comprometida.
Y no es sólo la capa de transporte entre usuarios y aplicaciones la que requiere protección. En el backend, muchas aplicaciones se comunican entre sí y con servidores más avanzados en la cadena del flujo de trabajo. Aunque estas comunicaciones internas no suelen ser vulnerables al espionaje externo, pueden exponer los datos a usuarios que pueden tener permiso para entrar en la red pero no están autorizados a ver cierta información altamente protegida o sensible.
Asegurar adecuadamente las capas de transporte para una protección total de los datos
La protección de las capas de transporte se realiza mejor mientras se crean las aplicaciones. Este proceso empieza por tener una infraestructura backend segura. En el caso de los sitios web, todo debe hacerse utilizando HTTPS. Nunca mezcles la infraestructura HTTP y HTTPS. Incluso deberías configurar tus sitios para que dirijan automáticamente las peticiones HTTP no seguras a la infraestructura HTTPS.
En el ejemplo anterior, un método adecuado para proteger la capa de transporte sería:
server {
server_name scw-dev-blog.org;
listen 8443 ssl;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+AESGCM:EDH+AESGCM;
ssl_prefer_server_ciphers on;
ssl_certificate /run/secrets/nginx_cert;
ssl_certificate_key /run/secrets/nginx_key;
access_log /dev/stdout;
error_log /dev/stderr;
location / {
proxy_pass http://wordpress:8080;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
En ese ejemplo, todas las conexiones con el servicio Nginx están fuertemente encriptadas. La sección del servidor de la configuración de Nginx solo incluye listen 8443 ssl para forzar que SSL proteja las conexiones.
Para proteger sus datos de las amenazas internas, los desarrolladores deben emplear un protocolo de cifrado de capa de transporte fuerte como TLS 1.2. Una vez que se haya implantado TLS 1.2 o su equivalente, los protocolos más débiles como SSL v2 deberían eliminarse por completo de la infraestructura y prohibirse automáticamente su uso.
Y tenga siempre en cuenta que la seguridad de una aplicación no es completa hasta que tanto los datos en reposo como las capas de transporte están suficientemente protegidos. De este modo, podrá garantizar una protección completa de extremo a extremo para los datos, tanto a nivel interno como cuando fluyan hacia usuarios externos autorizados.
Consulte las páginas del 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 estragos de otros fallos de seguridad. También puede probar una demostración de la plataforma de formación Secure Code Warrior para mantener todos sus conocimientos de ciberseguridad perfeccionados y actualizados.
A veces, las aplicaciones también comparten datos con otros programas como parte de una carga de trabajo global. A menos que la capa de transporte esté protegida, la hace vulnerable tanto al fisgoneo externo como a la visualización interna no autorizada.
Matias Madou, Ph.D. es experto en seguridad, investigador y CTO y cofundador de Secure Code Warrior. Matias obtuvo su doctorado en Seguridad de Aplicaciones en la Universidad de Gante, centrándose en soluciones de análisis estático. Más tarde se incorporó a Fortify en EE.UU., donde se dio cuenta de que no bastaba con detectar problemas de código sin ayudar a los desarrolladores a escribir código seguro. Esto le inspiró para desarrollar productos que ayuden a los desarrolladores, alivien la carga de la seguridad y superen las expectativas de los clientes. Cuando no está en su escritorio como parte de Team Awesome, le gusta estar en el escenario presentando en conferencias como RSA Conference, BlackHat y DefCon.
Secure Code Warrior está a disposición de su organización para ayudarle a proteger el código a lo largo de todo el ciclo de vida de desarrollo de software y crear una cultura en la que la ciberseguridad sea una prioridad. Tanto si es director de AppSec, desarrollador, CISO o cualquier persona implicada en la seguridad, podemos ayudar a su organización a reducir los riesgos asociados a un código inseguro.
Reservar una demostraciónMatias Madou, Ph.D. es experto en seguridad, investigador y CTO y cofundador de Secure Code Warrior. Matias obtuvo su doctorado en Seguridad de Aplicaciones en la Universidad de Gante, centrándose en soluciones de análisis estático. Más tarde se incorporó a Fortify en EE.UU., donde se dio cuenta de que no bastaba con detectar problemas de código sin ayudar a los desarrolladores a escribir código seguro. Esto le inspiró para desarrollar productos que ayuden a los desarrolladores, alivien la carga de la seguridad y superen las expectativas de los clientes. Cuando no está en su escritorio como parte de Team Awesome, le gusta estar en el escenario presentando en conferencias como RSA Conference, BlackHat y DefCon.
Matías es un investigador y desarrollador con más de 15 años de experiencia práctica en seguridad de software. Ha desarrollado soluciones para empresas como Fortify Software y su propia empresa Sensei Security. A lo largo de su carrera, Matías ha dirigido múltiples proyectos de investigación sobre seguridad de aplicaciones que han dado lugar a productos comerciales y cuenta con más de 10 patentes en su haber. Cuando está lejos de su escritorio, Matias ha servido como instructor para la formación de seguridad de aplicaciones avanzadas courses y regularmente habla en conferencias mundiales como la Conferencia RSA, Black Hat, DefCon, BSIMM, OWASP AppSec y BruCon.
Matías es doctor en Ingeniería Informática por la Universidad de Gante, donde estudió la seguridad de las aplicaciones mediante la ofuscación de programas para ocultar el funcionamiento interno de una aplicación.
Si usted es un desarrollador que busca aprender más sobre los pasos que puede tomar para comenzar a desplegar una infraestructura segura como código (IaC) en su organización, entonces ha llegado al lugar correcto. Este es el siguiente capítulo de nuestra serie de IaC, diseñada para que te pongas al día en las mejores prácticas de seguridad de IaC.
Antes de empezar, ¿cómo te fue con el desafío de la última entrega? Si dominas la criptografía insegura, veamos cómo te va con la protección insuficiente de la capa de transporte antes de entrar en detalles:
¿Quieres saber más y conseguir una puntuación perfecta? Sigue leyendo:
En nuestro último artículo, hablamos de la importancia de tener una criptografía segura para proteger cualquier dato importante o personal almacenado por aplicaciones y programas. Si tienes una encriptación fuerte, actúa como una perfecta última línea de defensa. Incluso si un atacante es capaz de robar esos datos, si están fuertemente encriptados, entonces la información encerrada dentro de esos archivos sigue estando protegida.
Sin embargo, la protección de los datos en reposo es sólo una parte de una defensa completa de los datos. Siempre que los usuarios válidos necesiten acceder a los datos protegidos, hay que enviárselos. A veces, las aplicaciones también compartirán datos con otros programas como parte de una carga de trabajo general. A menos que la capa de transporte esté protegida, la hace vulnerable tanto al fisgoneo externo como a la visualización interna no autorizada. Por lo tanto, tener una protección insuficiente de la capa de transporte puede causar graves problemas.
Es un problema común. La organización de seguridad OWASP incluso mantiene una página completa sobre la insuficiente protección de la capa de transporte.
¿Por qué es peligrosa una protección insuficiente de la capa de transporte?
Si no proteges suficientemente tus capas de transporte, es relativamente fácil para los hackers expertos interceptar la información que fluye entre tus usuarios y tus aplicaciones utilizando técnicas como los ataques man-in-the-middle. Probablemente el aspecto más peligroso de este tipo de fisgoneo es que es casi completamente invisible para cualquier plataforma o escáner de ciberseguridad interno porque ocurre fuera de su red y de su control.
Por ejemplo, en un entorno Docker desplegando un servicio Nginx:
services:
nginx:
image: localhost:5000/scw_nginx
build: ./nginx
secrets:
- nginx_cert
- nginx_key
volumes:
- type: bind
source: ./nginx/nginx.conf
target: /etc/nginx/nginx.conf
read_only: yes
ports:
- 80:8443
networks:
- frontend
deploy:
restart_policy: *default-restart_policy
resources: *default-resources_policy
La configuración del servicio Nginx no cifrará ni protegerá la conexión, lo que hará que toda la información intercambiada a través del enlace sea vulnerable a diversos ataques o al espionaje.
server {
server_name scw-dev-blog.org;
listen 8443;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+AESGCM:EDH+AESGCM;
ssl_prefer_server_ciphers on;
ssl_certificate /run/secrets/nginx_cert;
ssl_certificate_key /run/secrets/nginx_key;
access_log /dev/stdout;
error_log /dev/stderr;
location / {
proxy_pass http://wordpress:8080;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
A menudo, la primera señal de que alguien podría estar fisgoneando a través de sus capas de transporte es cuando se utiliza un gran número de contraseñas de usuario robadas en ataques posteriores. Si otros datos, como la información de los clientes, los registros financieros o los secretos importantes de la empresa, son robados a través de una capa de transporte insegura, es posible que nunca se dé cuenta de que ha sido comprometida.
Y no es sólo la capa de transporte entre usuarios y aplicaciones la que requiere protección. En el backend, muchas aplicaciones se comunican entre sí y con servidores más avanzados en la cadena del flujo de trabajo. Aunque estas comunicaciones internas no suelen ser vulnerables al espionaje externo, pueden exponer los datos a usuarios que pueden tener permiso para entrar en la red pero no están autorizados a ver cierta información altamente protegida o sensible.
Asegurar adecuadamente las capas de transporte para una protección total de los datos
La protección de las capas de transporte se realiza mejor mientras se crean las aplicaciones. Este proceso empieza por tener una infraestructura backend segura. En el caso de los sitios web, todo debe hacerse utilizando HTTPS. Nunca mezcles la infraestructura HTTP y HTTPS. Incluso deberías configurar tus sitios para que dirijan automáticamente las peticiones HTTP no seguras a la infraestructura HTTPS.
En el ejemplo anterior, un método adecuado para proteger la capa de transporte sería:
server {
server_name scw-dev-blog.org;
listen 8443 ssl;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+AESGCM:EDH+AESGCM;
ssl_prefer_server_ciphers on;
ssl_certificate /run/secrets/nginx_cert;
ssl_certificate_key /run/secrets/nginx_key;
access_log /dev/stdout;
error_log /dev/stderr;
location / {
proxy_pass http://wordpress:8080;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
En ese ejemplo, todas las conexiones con el servicio Nginx están fuertemente encriptadas. La sección del servidor de la configuración de Nginx solo incluye listen 8443 ssl para forzar que SSL proteja las conexiones.
Para proteger sus datos de las amenazas internas, los desarrolladores deben emplear un protocolo de cifrado de capa de transporte fuerte como TLS 1.2. Una vez que se haya implantado TLS 1.2 o su equivalente, los protocolos más débiles como SSL v2 deberían eliminarse por completo de la infraestructura y prohibirse automáticamente su uso.
Y tenga siempre en cuenta que la seguridad de una aplicación no es completa hasta que tanto los datos en reposo como las capas de transporte están suficientemente protegidos. De este modo, podrá garantizar una protección completa de extremo a extremo para los datos, tanto a nivel interno como cuando fluyan hacia usuarios externos autorizados.
Consulte las páginas del 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 estragos de otros fallos de seguridad. También puede probar una demostración de la plataforma de formación Secure Code Warrior para mantener todos sus conocimientos de ciberseguridad perfeccionados y actualizados.
Si usted es un desarrollador que busca aprender más sobre los pasos que puede tomar para comenzar a desplegar una infraestructura segura como código (IaC) en su organización, entonces ha llegado al lugar correcto. Este es el siguiente capítulo de nuestra serie de IaC, diseñada para que te pongas al día en las mejores prácticas de seguridad de IaC.
Antes de empezar, ¿cómo te fue con el desafío de la última entrega? Si dominas la criptografía insegura, veamos cómo te va con la protección insuficiente de la capa de transporte antes de entrar en detalles:
¿Quieres saber más y conseguir una puntuación perfecta? Sigue leyendo:
En nuestro último artículo, hablamos de la importancia de tener una criptografía segura para proteger cualquier dato importante o personal almacenado por aplicaciones y programas. Si tienes una encriptación fuerte, actúa como una perfecta última línea de defensa. Incluso si un atacante es capaz de robar esos datos, si están fuertemente encriptados, entonces la información encerrada dentro de esos archivos sigue estando protegida.
Sin embargo, la protección de los datos en reposo es sólo una parte de una defensa completa de los datos. Siempre que los usuarios válidos necesiten acceder a los datos protegidos, hay que enviárselos. A veces, las aplicaciones también compartirán datos con otros programas como parte de una carga de trabajo general. A menos que la capa de transporte esté protegida, la hace vulnerable tanto al fisgoneo externo como a la visualización interna no autorizada. Por lo tanto, tener una protección insuficiente de la capa de transporte puede causar graves problemas.
Es un problema común. La organización de seguridad OWASP incluso mantiene una página completa sobre la insuficiente protección de la capa de transporte.
¿Por qué es peligrosa una protección insuficiente de la capa de transporte?
Si no proteges suficientemente tus capas de transporte, es relativamente fácil para los hackers expertos interceptar la información que fluye entre tus usuarios y tus aplicaciones utilizando técnicas como los ataques man-in-the-middle. Probablemente el aspecto más peligroso de este tipo de fisgoneo es que es casi completamente invisible para cualquier plataforma o escáner de ciberseguridad interno porque ocurre fuera de su red y de su control.
Por ejemplo, en un entorno Docker desplegando un servicio Nginx:
services:
nginx:
image: localhost:5000/scw_nginx
build: ./nginx
secrets:
- nginx_cert
- nginx_key
volumes:
- type: bind
source: ./nginx/nginx.conf
target: /etc/nginx/nginx.conf
read_only: yes
ports:
- 80:8443
networks:
- frontend
deploy:
restart_policy: *default-restart_policy
resources: *default-resources_policy
La configuración del servicio Nginx no cifrará ni protegerá la conexión, lo que hará que toda la información intercambiada a través del enlace sea vulnerable a diversos ataques o al espionaje.
server {
server_name scw-dev-blog.org;
listen 8443;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+AESGCM:EDH+AESGCM;
ssl_prefer_server_ciphers on;
ssl_certificate /run/secrets/nginx_cert;
ssl_certificate_key /run/secrets/nginx_key;
access_log /dev/stdout;
error_log /dev/stderr;
location / {
proxy_pass http://wordpress:8080;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
A menudo, la primera señal de que alguien podría estar fisgoneando a través de sus capas de transporte es cuando se utiliza un gran número de contraseñas de usuario robadas en ataques posteriores. Si otros datos, como la información de los clientes, los registros financieros o los secretos importantes de la empresa, son robados a través de una capa de transporte insegura, es posible que nunca se dé cuenta de que ha sido comprometida.
Y no es sólo la capa de transporte entre usuarios y aplicaciones la que requiere protección. En el backend, muchas aplicaciones se comunican entre sí y con servidores más avanzados en la cadena del flujo de trabajo. Aunque estas comunicaciones internas no suelen ser vulnerables al espionaje externo, pueden exponer los datos a usuarios que pueden tener permiso para entrar en la red pero no están autorizados a ver cierta información altamente protegida o sensible.
Asegurar adecuadamente las capas de transporte para una protección total de los datos
La protección de las capas de transporte se realiza mejor mientras se crean las aplicaciones. Este proceso empieza por tener una infraestructura backend segura. En el caso de los sitios web, todo debe hacerse utilizando HTTPS. Nunca mezcles la infraestructura HTTP y HTTPS. Incluso deberías configurar tus sitios para que dirijan automáticamente las peticiones HTTP no seguras a la infraestructura HTTPS.
En el ejemplo anterior, un método adecuado para proteger la capa de transporte sería:
server {
server_name scw-dev-blog.org;
listen 8443 ssl;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+AESGCM:EDH+AESGCM;
ssl_prefer_server_ciphers on;
ssl_certificate /run/secrets/nginx_cert;
ssl_certificate_key /run/secrets/nginx_key;
access_log /dev/stdout;
error_log /dev/stderr;
location / {
proxy_pass http://wordpress:8080;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
En ese ejemplo, todas las conexiones con el servicio Nginx están fuertemente encriptadas. La sección del servidor de la configuración de Nginx solo incluye listen 8443 ssl para forzar que SSL proteja las conexiones.
Para proteger sus datos de las amenazas internas, los desarrolladores deben emplear un protocolo de cifrado de capa de transporte fuerte como TLS 1.2. Una vez que se haya implantado TLS 1.2 o su equivalente, los protocolos más débiles como SSL v2 deberían eliminarse por completo de la infraestructura y prohibirse automáticamente su uso.
Y tenga siempre en cuenta que la seguridad de una aplicación no es completa hasta que tanto los datos en reposo como las capas de transporte están suficientemente protegidos. De este modo, podrá garantizar una protección completa de extremo a extremo para los datos, tanto a nivel interno como cuando fluyan hacia usuarios externos autorizados.
Consulte las páginas del 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 estragos de otros fallos de seguridad. También puede probar una demostración de la plataforma de formación Secure Code Warrior para mantener todos sus conocimientos de ciberseguridad perfeccionados y actualizados.
Haga clic en el siguiente enlace y descargue el PDF de este recurso.
Secure Code Warrior está a disposición de su organización para ayudarle a proteger el código a lo largo de todo el ciclo de vida de desarrollo de software y crear una cultura en la que la ciberseguridad sea una prioridad. Tanto si es director de AppSec, desarrollador, CISO o cualquier persona implicada en la seguridad, podemos ayudar a su organización a reducir los riesgos asociados a un código inseguro.
Ver el informeReservar una demostraciónMatias Madou, Ph.D. es experto en seguridad, investigador y CTO y cofundador de Secure Code Warrior. Matias obtuvo su doctorado en Seguridad de Aplicaciones en la Universidad de Gante, centrándose en soluciones de análisis estático. Más tarde se incorporó a Fortify en EE.UU., donde se dio cuenta de que no bastaba con detectar problemas de código sin ayudar a los desarrolladores a escribir código seguro. Esto le inspiró para desarrollar productos que ayuden a los desarrolladores, alivien la carga de la seguridad y superen las expectativas de los clientes. Cuando no está en su escritorio como parte de Team Awesome, le gusta estar en el escenario presentando en conferencias como RSA Conference, BlackHat y DefCon.
Matías es un investigador y desarrollador con más de 15 años de experiencia práctica en seguridad de software. Ha desarrollado soluciones para empresas como Fortify Software y su propia empresa Sensei Security. A lo largo de su carrera, Matías ha dirigido múltiples proyectos de investigación sobre seguridad de aplicaciones que han dado lugar a productos comerciales y cuenta con más de 10 patentes en su haber. Cuando está lejos de su escritorio, Matias ha servido como instructor para la formación de seguridad de aplicaciones avanzadas courses y regularmente habla en conferencias mundiales como la Conferencia RSA, Black Hat, DefCon, BSIMM, OWASP AppSec y BruCon.
Matías es doctor en Ingeniería Informática por la Universidad de Gante, donde estudió la seguridad de las aplicaciones mediante la ofuscación de programas para ocultar el funcionamiento interno de una aplicación.
Si usted es un desarrollador que busca aprender más sobre los pasos que puede tomar para comenzar a desplegar una infraestructura segura como código (IaC) en su organización, entonces ha llegado al lugar correcto. Este es el siguiente capítulo de nuestra serie de IaC, diseñada para que te pongas al día en las mejores prácticas de seguridad de IaC.
Antes de empezar, ¿cómo te fue con el desafío de la última entrega? Si dominas la criptografía insegura, veamos cómo te va con la protección insuficiente de la capa de transporte antes de entrar en detalles:
¿Quieres saber más y conseguir una puntuación perfecta? Sigue leyendo:
En nuestro último artículo, hablamos de la importancia de tener una criptografía segura para proteger cualquier dato importante o personal almacenado por aplicaciones y programas. Si tienes una encriptación fuerte, actúa como una perfecta última línea de defensa. Incluso si un atacante es capaz de robar esos datos, si están fuertemente encriptados, entonces la información encerrada dentro de esos archivos sigue estando protegida.
Sin embargo, la protección de los datos en reposo es sólo una parte de una defensa completa de los datos. Siempre que los usuarios válidos necesiten acceder a los datos protegidos, hay que enviárselos. A veces, las aplicaciones también compartirán datos con otros programas como parte de una carga de trabajo general. A menos que la capa de transporte esté protegida, la hace vulnerable tanto al fisgoneo externo como a la visualización interna no autorizada. Por lo tanto, tener una protección insuficiente de la capa de transporte puede causar graves problemas.
Es un problema común. La organización de seguridad OWASP incluso mantiene una página completa sobre la insuficiente protección de la capa de transporte.
¿Por qué es peligrosa una protección insuficiente de la capa de transporte?
Si no proteges suficientemente tus capas de transporte, es relativamente fácil para los hackers expertos interceptar la información que fluye entre tus usuarios y tus aplicaciones utilizando técnicas como los ataques man-in-the-middle. Probablemente el aspecto más peligroso de este tipo de fisgoneo es que es casi completamente invisible para cualquier plataforma o escáner de ciberseguridad interno porque ocurre fuera de su red y de su control.
Por ejemplo, en un entorno Docker desplegando un servicio Nginx:
services:
nginx:
image: localhost:5000/scw_nginx
build: ./nginx
secrets:
- nginx_cert
- nginx_key
volumes:
- type: bind
source: ./nginx/nginx.conf
target: /etc/nginx/nginx.conf
read_only: yes
ports:
- 80:8443
networks:
- frontend
deploy:
restart_policy: *default-restart_policy
resources: *default-resources_policy
La configuración del servicio Nginx no cifrará ni protegerá la conexión, lo que hará que toda la información intercambiada a través del enlace sea vulnerable a diversos ataques o al espionaje.
server {
server_name scw-dev-blog.org;
listen 8443;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+AESGCM:EDH+AESGCM;
ssl_prefer_server_ciphers on;
ssl_certificate /run/secrets/nginx_cert;
ssl_certificate_key /run/secrets/nginx_key;
access_log /dev/stdout;
error_log /dev/stderr;
location / {
proxy_pass http://wordpress:8080;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
A menudo, la primera señal de que alguien podría estar fisgoneando a través de sus capas de transporte es cuando se utiliza un gran número de contraseñas de usuario robadas en ataques posteriores. Si otros datos, como la información de los clientes, los registros financieros o los secretos importantes de la empresa, son robados a través de una capa de transporte insegura, es posible que nunca se dé cuenta de que ha sido comprometida.
Y no es sólo la capa de transporte entre usuarios y aplicaciones la que requiere protección. En el backend, muchas aplicaciones se comunican entre sí y con servidores más avanzados en la cadena del flujo de trabajo. Aunque estas comunicaciones internas no suelen ser vulnerables al espionaje externo, pueden exponer los datos a usuarios que pueden tener permiso para entrar en la red pero no están autorizados a ver cierta información altamente protegida o sensible.
Asegurar adecuadamente las capas de transporte para una protección total de los datos
La protección de las capas de transporte se realiza mejor mientras se crean las aplicaciones. Este proceso empieza por tener una infraestructura backend segura. En el caso de los sitios web, todo debe hacerse utilizando HTTPS. Nunca mezcles la infraestructura HTTP y HTTPS. Incluso deberías configurar tus sitios para que dirijan automáticamente las peticiones HTTP no seguras a la infraestructura HTTPS.
En el ejemplo anterior, un método adecuado para proteger la capa de transporte sería:
server {
server_name scw-dev-blog.org;
listen 8443 ssl;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers EECDH+AESGCM:EDH+AESGCM;
ssl_prefer_server_ciphers on;
ssl_certificate /run/secrets/nginx_cert;
ssl_certificate_key /run/secrets/nginx_key;
access_log /dev/stdout;
error_log /dev/stderr;
location / {
proxy_pass http://wordpress:8080;
proxy_set_header Host $http_host;
proxy_set_header X-Forwarded-Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
En ese ejemplo, todas las conexiones con el servicio Nginx están fuertemente encriptadas. La sección del servidor de la configuración de Nginx solo incluye listen 8443 ssl para forzar que SSL proteja las conexiones.
Para proteger sus datos de las amenazas internas, los desarrolladores deben emplear un protocolo de cifrado de capa de transporte fuerte como TLS 1.2. Una vez que se haya implantado TLS 1.2 o su equivalente, los protocolos más débiles como SSL v2 deberían eliminarse por completo de la infraestructura y prohibirse automáticamente su uso.
Y tenga siempre en cuenta que la seguridad de una aplicación no es completa hasta que tanto los datos en reposo como las capas de transporte están suficientemente protegidos. De este modo, podrá garantizar una protección completa de extremo a extremo para los datos, tanto a nivel interno como cuando fluyan hacia usuarios externos autorizados.
Consulte las páginas del 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 estragos de otros fallos de seguridad. También puede probar una demostración de la plataforma de formación Secure Code Warrior para mantener todos sus conocimientos de ciberseguridad perfeccionados y actualizados.
Índice
Matias Madou, Ph.D. es experto en seguridad, investigador y CTO y cofundador de Secure Code Warrior. Matias obtuvo su doctorado en Seguridad de Aplicaciones en la Universidad de Gante, centrándose en soluciones de análisis estático. Más tarde se incorporó a Fortify en EE.UU., donde se dio cuenta de que no bastaba con detectar problemas de código sin ayudar a los desarrolladores a escribir código seguro. Esto le inspiró para desarrollar productos que ayuden a los desarrolladores, alivien la carga de la seguridad y superen las expectativas de los clientes. Cuando no está en su escritorio como parte de Team Awesome, le gusta estar en el escenario presentando en conferencias como RSA Conference, BlackHat y DefCon.
Secure Code Warrior está a disposición de su organización para ayudarle a proteger el código a lo largo de todo el ciclo de vida de desarrollo de software y crear una cultura en la que la ciberseguridad sea una prioridad. Tanto si es director de AppSec, desarrollador, CISO o cualquier persona implicada en la seguridad, podemos ayudar a su organización a reducir los riesgos asociados a un código inseguro.
Reservar una demostraciónDescargarRecursos para empezar
Evaluación comparativa de las competencias en materia de seguridad: optimización del diseño seguro en la empresa
El movimiento Secure-by-Design es el futuro del desarrollo de software seguro. Conozca los elementos clave que las empresas deben tener en cuenta cuando piensan en una iniciativa Secure-by-Design.
DigitalOcean reduce su deuda de seguridad con Secure Code Warrior
El uso por parte de DigitalOcean de la formación Secure Code Warrior ha reducido significativamente la deuda de seguridad, permitiendo a los equipos centrarse más en la innovación y la productividad. La mejora de la seguridad ha reforzado la calidad de sus productos y su ventaja competitiva. De cara al futuro, SCW Trust Score les ayudará a seguir mejorando las prácticas de seguridad y a continuar impulsando la innovación.
Recursos para empezar
La puntuación de confianza revela el valor de las iniciativas de mejora de la seguridad mediante el diseño
Nuestra investigación ha demostrado que la formación en código seguro funciona. Trust Score, que utiliza un algoritmo basado en más de 20 millones de puntos de datos de aprendizaje procedentes del trabajo de más de 250 000 alumnos en más de 600 organizaciones, revela su eficacia a la hora de reducir las vulnerabilidades y cómo hacer que la iniciativa sea aún más eficaz.
Seguridad reactiva frente a seguridad preventiva: Prevenir es mejor que curar
La idea de introducir la seguridad preventiva en el código y los sistemas heredados al mismo tiempo que en las aplicaciones más recientes puede parecer desalentadora, pero un planteamiento basado en el diseño seguro, aplicado mediante la mejora de las competencias de los desarrolladores, puede aplicar las mejores prácticas de seguridad a esos sistemas. Es la mejor oportunidad que tienen muchas organizaciones de mejorar su seguridad.
Ventajas de la evaluación comparativa de las competencias de seguridad de los desarrolladores
La creciente atención que se presta al código seguro y a los principios del diseño seguro exige que los desarrolladores reciban formación en ciberseguridad desde el principio del proceso de desarrollo de software, con herramientas como Secure Code Warrior's Trust Score, que ayudan a medir y mejorar sus progresos.
Impulsando iniciativas de seguridad por diseño para empresas con éxito significativo
Nuestro último documento de investigación, Benchmarking Security Skills: Streamlining Secure-by-Design in the Enterprise, es el resultado de un análisis profundo de iniciativas reales de Secure-by-Design a nivel empresarial y de la derivación de enfoques de mejores prácticas basados en hallazgos basados en datos.