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
La potencia de OpenText Fortify + Secure Code Warrior
OpenText Fortify y Secure Code Warrior unen sus fuerzas para ayudar a las empresas a reducir riesgos, transformar a los desarrolladores en campeones de la seguridad y fomentar la confianza de los clientes. Más información aquí.
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.
Recursos para empezar
10 predicciones clave: Secure Code Warrior sobre la influencia de la IA y el diseño seguro en 2025
Las organizaciones se enfrentan a decisiones difíciles sobre el uso de la IA para apoyar la productividad a largo plazo, la sostenibilidad y el retorno de la inversión en seguridad. En los últimos años nos ha quedado claro que la IA nunca sustituirá por completo el papel del desarrollador. Desde las asociaciones entre IA y desarrolladores hasta las crecientes presiones (y confusión) en torno a las expectativas de seguridad por diseño, echemos un vistazo más de cerca a lo que podemos esperar durante el próximo año.
OWASP Top 10 para aplicaciones LLM: Novedades, cambios y cómo mantenerse seguro
Manténgase a la vanguardia de la seguridad de las aplicaciones LLM con las últimas actualizaciones del Top 10 de OWASP. Descubra qué hay de nuevo, qué ha cambiado y cómo Secure Code Warrior le equipa con recursos de aprendizaje actualizados para mitigar los riesgos en la IA Generativa.
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.