Blog

Programadores que conquistan la seguridad: Serie de aprendizaje y uso compartido - Inyecciones LDAP

January 17, 2019
Jaap Karan Singh

La gran mayoría de los sistemas informáticos utilizan el Protocolo Ligero de Acceso a Directorios (LDAP). Se emplea para mantener servicios de información de directorio distribuidos a través de cualquier red de Protocolo de Internet (IP). Básicamente, funciona como una forma de realizar un seguimiento de los usuarios.

LDAP se utiliza a menudo como fuente de autenticación por parte de las aplicaciones para verificar si un usuario tiene permiso para realizar diversas acciones, especialmente en lo que respecta a su rol definido dentro de una organización. Por ejemplo, solo aquellos en contabilidad podrían usar el software contable de la empresa. Las aplicaciones suelen programarse para consultar una tabla LDAP y asegurarse de que los usuarios actúen dentro de sus permisos establecidos.

Pueden surgir problemas cuando usuarios malintencionados manipulan una consulta LDAP. Esto puede engañar al servidor receptor para que ejecute consultas no válidas que normalmente no estarían permitidas, o incluso otorgar acceso de nivel alto o de administrador a usuarios no válidos o de baja seguridad sin necesidad de contraseña.  

Las inyecciones LDAP pueden ser complejas, pero en este episodio aprenderemos:

  • Cómo funcionan
  • Por qué son tan peligrosos
  • Cómo implementar defensas para detenerlos.

¿Cómo utilizan los atacantes la inyección LDAP?

Una de las razones por las que los ataques basados en LDAP han seguido siendo populares durante años es el hecho de que casi todos los sistemas informáticos lo utilizan. LDAP es de código abierto y funciona extremadamente bien, por lo que no se han creado muchas alternativas.

En esencia, LDAP es una base de datos que rastrea a los usuarios válidos dentro de un sistema informático o red basada en IP. Permite a los usuarios compartir información sobre sistemas, redes, servidores, aplicaciones e incluso otros usuarios en la misma red.

La información es almacenada por LDAP en el equivalente a una línea o registro de base de datos llamado nombre distinguido, a menudo abreviado como DN. Cada DN es único. Como ejemplo, así es como se vería un DN para un usuario que trabaja en la oficina de contabilidad de Chicago de una gran corporación.

cn=James Smith, ou=Corporate Accounts, dc=Chicago, do=Parkview  

Para garantizar que cada DN sea único, se pueden añadir varios códigos al registro, como "+", "/", "=" y algunos otros. También se pueden insertar espacios antes o después de un registro para asegurar que, incluso si hay dos James Smith trabajando en Cuentas Corporativas en la oficina de Chicago Parkview, cada uno tenga su propio DN individual.

Las aplicaciones generalmente usan LDAP para permitir que los usuarios envíen consultas sobre DN específicos, como, por ejemplo, al intentar localizar al contacto correcto en el departamento de nóminas para hablar sobre un error en su cheque. Las inyecciones LDAP pueden ocurrir cuando no hay validación de los parámetros proporcionados por el usuario en las consultas de búsqueda. En ese caso, los hackers pueden manipular búsquedas benignas para eludir los mecanismos de autenticación o ejecutar consultas arbitrarias adicionales. Esto puede engañar al servidor para que muestre resultados que no deberían permitirse, como contraseñas de usuario, o incluso hacer que una aplicación otorgue acceso a áreas de alta seguridad dentro de la red, con o sin una contraseña válida.

¿Por qué son tan peligrosas las inyecciones LDAP?

El mayor peligro de las inyecciones LDAP es probablemente la proliferación del protocolo en la mayoría de las redes informáticas IP de todo el mundo. Esto lo convierte en un trampolín fácil para los hackers que buscan robar información o elevar sus privilegios en una red. Ningún hacker capacitado dejará de comprobar si las inyecciones LDAP son posibles, por lo que los equipos de seguridad deben asegurarse de que esas brechas estén siempre cerradas.

Específicamente, bastantes aplicaciones están programadas para ayudar a los usuarios válidos a encontrar información limitada sobre usuarios y grupos dentro de una organización, o cualquier otra información contenida en los DN. Por ejemplo, una aplicación podría permitir a alguien usar LDAP para buscar la información de contacto de los contables corporativos que trabajan en Chicago, lo que devolvería a nuestro amigo James Smith del ejemplo anterior. Dependiendo de los permisos, este es probablemente un uso perfectamente válido de una consulta LDAP.

El peligro surge cuando un usuario malintencionado puede añadir parámetros sin filtrar a la consulta, cambiando la naturaleza de la búsqueda y engañando al servidor para que proporcione información que normalmente no debería darse. Por ejemplo, al añadir una cadena user=*, los atacantes podrían obtener información sobre cada uno de los usuarios de toda una organización, algo que probablemente nunca debería permitirse.

Para las aplicaciones que utilizan LDAP para la autenticación, el problema puede ser aún peor. Los atacantes pueden usar, por ejemplo, la cadena (&) al final de una consulta LDAP para engañar al servidor y hacerle creer que el argumento es verdadero. Si una aplicación utiliza LDAP para validar una contraseña, forzar un argumento "True" mediante una inyección LDAP podría permitir que un usuario no autorizado inicie sesión en la red como administrador, incluso sin contraseña.

Haciendo que la inyección LDAP sea un "L-DON'T" en su red

Una de las mejores formas de prevenir las inyecciones LDAP es implementar herramientas como LINQtoAD u otros marcos diseñados específicamente para resistirlas. Esto puede no ser posible si una red ya cuenta con aplicaciones que aprovechan las consultas LDAP. Sin embargo, incluso en ese caso, sigue siendo una buena idea que todas las aplicaciones nuevas utilicen marcos resistentes a la inyección de ahora en adelante.

Las aplicaciones existentes que utilizan LDAP también pueden protegerse contra inyecciones mediante la validación de listas blancas y la sanitización de entradas. Siempre que sea posible, limite la entrada del usuario a un conjunto restringido de valores confiables. De lo contrario, la entrada del usuario que forme parte de una consulta LDAP debe sanitizarse primero; no olvide incluir parámetros GET y POST, cookies y encabezados HTTP, ya que también pueden actuar como vectores de ataque. No cree sus propias funciones para realizar la sanitización de entradas; utilice en su lugar una biblioteca de seguridad de terceros de confianza o las API integradas del framework.

Más allá de las correcciones específicas, las buenas prácticas informáticas, como asignar a las aplicaciones que realizan consultas LDAP el privilegio mínimo necesario en una red, también pueden ser de ayuda. De este modo, si ocurriera lo peor y una inyección LDAP lograra filtrarse, el daño se vería mitigado.

Más información sobre las inyecciones LDAP

Para seguir leyendo, puede consultar el artículo de OWASP sobre inyecciones LDAP o la hoja de trucos para la prevención de inyecciones. También puede poner a prueba sus nuevos conocimientos defensivos con la demo gratuita de la plataforma Secure Code Warrior, que entrena a equipos de ciberseguridad para convertirse en los mejores ciberguerreros. Para obtener más información sobre cómo derrotar esta vulnerabilidad y una galería de otras amenazas, visite el blog de Secure Code Warrior.

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.