Blog

Serie de Infraestructura como Código: Almacenamiento de contraseñas en texto plano

May 18, 2020
Dr. Matias Madou

Cuando se trata de implementar infraestructura segura como código en su propia organización, ¿cómo lo está haciendo? Puede que sea una curva de aprendizaje, pero aprender los conceptos básicos será una gran oportunidad para mejorar sus habilidades, destacar entre sus colegas y mantener más seguros los datos de los usuarios finales.

Antes de comenzar con este siguiente capítulo de nuestra última serie Coders Conquer Security, me gustaría invitarle a participar en un desafío gamificado sobre la vulnerabilidad de almacenamiento de datos confidenciales; juegue ahora y elija entre Kubernetes, Terraform, Ansible, Docker o CloudFormation:

¿Qué le ha parecido? Si necesita reforzar sus conocimientos, siga leyendo:

La clave de la mayor parte de la seguridad informática actual reside en las contraseñas. Incluso si se emplean otros métodos de seguridad, como la autenticación de dos factores o la biometría, la mayoría de las organizaciones siguen utilizando la seguridad basada en contraseñas como un elemento de su protección. Para muchas empresas, las contraseñas son el único método utilizado.

Usamos tanto las contraseñas que incluso tenemos reglas sobre cómo crearlas. Se supone que esto las hace menos vulnerables a ataques de fuerza bruta o incluso a adivinanzas. Por supuesto, algunas personas siguen usando contraseñas débiles, como se evidencia en un reciente informe de NordPass. Es difícil creer que en 2020 la gente siga usando 12345, así como un montón de otras palabras fáciles de adivinar como chocolate, password y Dios para proteger sus activos más confidenciales.

Siempre habrá quienes no se preocupen por usar contraseñas seguras, pero la mayoría de las organizaciones profesionales obligan a los usuarios a crear sus palabras o frases de acceso de ciertas maneras. Todos conocemos ya las reglas: las contraseñas deben tener al menos ocho caracteres y estar compuestas por letras mayúsculas y minúsculas, además de requerir al menos un número y un carácter especial.

Lo malo es que, incluso si los usuarios cumplen con las reglas para crear las contraseñas más seguras, puede que no sirva de nada si todas se almacenan en texto plano. La contraseña 12345 es tan mala como Nuts53!SpiKe&Dog12 si un hacker puede leer todo el archivo de contraseñas.

¿Por qué es peligroso almacenar contraseñas en texto plano?

Almacenar contraseñas en texto plano es peligroso porque pone en riesgo tanto al sistema como a los usuarios. Obviamente, que un hacker pueda encontrar y leer cada una de las contraseñas utilizadas para acceder a un sistema sería un desastre. Podrían simplemente encontrar a un usuario con credenciales de administrador y comprometer todo el sistema o sitio. Y como estarían utilizando nombres de usuario y contraseñas legítimos, la seguridad interna podría no detectar la intrusión o detectarla mucho después de que el daño esté hecho.

Facilitar a los atacantes el robo de contraseñas almacenadas en texto plano también perjudica a los usuarios, porque muchas personas reutilizan sus contraseñas. Dado que hemos hecho que las contraseñas sean tan difíciles de crear, mucha gente recurre a reutilizar las que puede recordar en múltiples sitios. Si un atacante compromete un archivo de contraseñas, casi con seguridad intentará acceder a otros sistemas utilizando el mismo nombre y contraseña, lo que pone a los usuarios en un gran riesgo de sufrir delitos secundarios.

Es relativamente fácil almacenar contraseñas accidentalmente en texto plano o no darse cuenta de que esto podría causar problemas importantes más adelante. Por ejemplo, el siguiente código es un método común empleado para almacenar contraseñas al definir un recurso de AWS mediante plantillas de Terraform:

resource "aws_db_instance" "default" {
 engine                 = "mysql"
 allocated_storage      = 10
 instance_class         = "db.t2.micro"
 username               = "admin"
 password               = "s3.cr3t.admin.p2ss"
 db_subnet_group_name   = aws_db_subnet_group.default.name
 vpc_security_group_ids = [aws_security_group.default.id]
}

En ese ejemplo, la contraseña utilizada para gestionar la instancia de base de datos MySQL en AWS se almacena en texto plano. Eso significa que cualquiera con acceso al repositorio de código fuente podría leerla o incluso copiarla.

La protección de contraseñas varía según el marco de trabajo, pero existen métodos de protección para cada plataforma. Por ejemplo, la contraseña de MySQL puede almacenarse en un almacenamiento seguro como AWS Secrets Manager:

resource "aws_db_instance" "default" {
 engine            = "mysql"
 allocated_storage = 10
 instance_class    = "db.t2.micro"
 username          = "admin"
 password = "${data.aws_secretsmanager_secret_version.password.secret_string}"
 db_subnet_group_name   = aws_db_subnet_group.default.name
 vpc_security_group_ids = [aws_security_group.default.id]
}

En ese ejemplo, la plantilla de Terraform obtendrá la contraseña del servicio AWS Secrets Manager y nunca se almacenará en texto plano en los archivos de plantilla.

Proteger las contraseñas evitando el almacenamiento en texto plano

Las contraseñas son las llaves de su reino y nunca deben almacenarse en texto plano. Ni siquiera el personal interno de una organización debería tener acceso a un repositorio grande y desprotegido de contraseñas, ni esto debería ser un protocolo empresarial aceptado (hoy en día existen muchos gestores de contraseñas que permiten compartir credenciales cifradas, ¡no hay excusas!). También existe el peligro de que empleados malintencionados husmeen en los archivos y obtengan acceso donde no deberían.

Y en caso de un ataque externo, imagine el doble golpe que supone que encuentren una puerta trasera a su base de datos a través de algo tan simple como una vulnerabilidad de inyección SQL y obtengan acceso al directorio donde también se almacenan las contraseñas. ¿Cree que son demasiados pasos propensos a errores para que esto ocurra? Lamentablemente, este escenario exacto ocurrió en la brecha de Sony de 2011. Más de un millón de contraseñas de clientes estaban almacenadas en texto plano, y el grupo de hackers Lulzsec accedió a ellas y a mucho más mediante un ataque común de inyección SQL.

Todas las contraseñas deben estar protegidas por cualquier defensa disponible dentro del marco de trabajo de soporte. En el caso de Terraform, las contraseñas nunca deben almacenarse en archivos de plantilla. Se recomienda utilizar un almacenamiento seguro como AWS Secrets Manager o Azure Key Vault, dependiendo del proveedor de infraestructura.

Obligar a los usuarios a crear contraseñas seguras es una buena idea, pero usted también debe hacer su parte en el backend. Mantener las contraseñas fuera del almacenamiento en texto plano contribuirá en gran medida a proteger a sus usuarios y sistemas. El principal peligro del almacenamiento de contraseñas en texto plano es el deficiente control de acceso; esencialmente, cualquiera puede verlas. Es imperativo (especialmente en un entorno de IaC donde, de repente, más personas tienen acceso a información confidencial) que estén adecuadamente cifradas y que solo se conceda acceso a quienes realmente lo necesiten.

Consulte las páginas del blog de Secure Code Warrior para obtener más información sobre esta vulnerabilidad y cómo proteger a su organización y a sus clientes de los estragos de otros fallos y vulnerabilidades de seguridad. También puede probar un desafío de IaC dentro de la plataforma de formación de Secure Code Warrior para mantener todas sus habilidades de ciberseguridad perfeccionadas y actualizadas.


Eslogan

Controle el desarrollo impulsado por IA antes de su lanzamiento

Mida el riesgo asistido por IA, aplique políticas de codificación segura en el momento de la confirmación y acelere la entrega segura en todo su ciclo de vida de desarrollo de software (SDLC).

Reservar una demostración
Biblioteca de recursos

Explorar más blogs

Acceda a contenido especializado sobre programación segura, gobernanza de IA y gestión de riesgos de software.

ver todo
Caso de estudio
Etiqueta de filtro
Este es un texto dentro de un bloque div.

Una cultura de seguridad: cómo Sage creó su programa de defensores

Descubre cómo Sage reforzó su seguridad con un enfoque flexible y centrado en las relaciones, logrando formar a más de 200 expertos en seguridad y alcanzar una reducción de riesgos cuantificable.

Más información
Icono de ventana de navegador con las letras KVK en negrita y dos líneas horizontales azules debajo sobre un fondo azul degradado.
Caso de estudio
Etiqueta de filtro
Este es un texto dentro de un bloque div.

Kamer van Koophandel: Seguridad a escala impulsada por los desarrolladores

La Cámara de Comercio (Kamer van Koophandel) comparte cómo integró la programación segura en el desarrollo diario mediante certificaciones basadas en roles, evaluaciones comparativas de puntuación de confianza y una cultura de responsabilidad compartida en seguridad.

Más información
Logotipo de Insurance Australia Group con texto y un icono en azul y gris dentro del diseño de una ventana de navegador web.
Caso de estudio
Etiqueta de filtro
Este es un texto dentro de un bloque div.

Cómo un «Juego de Códigos» guía a IAG Group hacia un futuro de programación más seguro

IAG Group es la entidad detrás de muchas de las principales compañías de seguros en la región de Asia-Pacífico, que suscribe pólizas para millones de clientes por un valor aproximado de 11.400 millones de dólares australianos en primas anuales.

Más información
Blog
Etiqueta de filtro
Este es un texto dentro de un bloque div.

Mes de la Concienciación sobre Ciberseguridad 2026: Comprender la seguridad de la IA es fundamental para la defensa empresarial

Hemos llegado a un punto en el que la mayoría de las principales empresas de IA han pedido públicamente una ralentización global en el desarrollo de la IA para que las medidas de seguridad puedan ponerse al día, pero la verdad es que ya se han materializado graves problemas de seguridad. Esto deja a innumerables líderes de seguridad y equipos ejecutivos en una situación urgente, a medida que los costes monetarios y de riesgo de la implementación de la IA siguen acumulándose.

Más información
Blog
Etiqueta de filtro
Este es un texto dentro de un bloque div.

Habilitador 8: Branding de su programa

Un programa de codificación segura necesita algo más que un buen contenido para tener éxito. El Habilitador 8 muestra cómo el branding transforma la participación en una experiencia codiciada basada en el estatus.

Más información
Blog
Etiqueta de filtro
Este es un texto dentro de un bloque div.

Cada empleado está ahora en la primera línea de la ciberseguridad de la IA

El panorama tecnológico empresarial está cambiando a una velocidad que pocos previeron hasta que fue demasiado tarde. Hemos cruzado oficialmente el umbral del código escrito por humanos y la asistencia básica de copilotos hacia la era del Ciclo de Vida de Desarrollo Agéntico (ADLC). Si bien los agentes de IA autónomos prometen una eficiencia sin precedentes en múltiples funciones, también traen consigo una clase completamente nueva de riesgos regulatorios y de seguridad.

Más información

Proteja el desarrollo basado en IA antes de su lanzamiento

Identifique riesgos de desarrollo, aplique políticas y prevenga vulnerabilidades en todo el ciclo de vida de su software.

Reservar una demostración
No se encontraron elementos.