Знаете ли вы, что такое LDAP-инъекция? Это метод внедрения кода, нацеленный на приложения, которые создают запросы для инъекций, используя несанкционированные пользовательские данные. LDAP (Lightweight Directory Access Protocol) обычно используется для поиска в каталогах, например, для аутентификации пользователей или извлечения организационных данных. Предоставляя специально сформированные данные, содержащие метасимволы LDAP, злоумышленники могут изменить логику запросов к каталогам для доступа к данным или их несанкционированного изменения. По сути, уязвимость LDAP-инъекции возникает, когда фильтры динамически создаются на основе контролируемых пользователем значений без санации или проверки входных данных.
Как это работает: механика атаки с использованием LDAP-инъекции #
Атака с использованием LDAP-инъекции происходит, когда предоставленные пользователем данные небезопасно внедряются в LDAP-запрос. Рассмотрим login фильтр:
(&(cn=" + имя пользователя + ")(пароль пользователя=" + пароль + "))Если злоумышленник отправляет * или терминирующие последовательности вместо допустимого имени пользователя, логика фильтра сворачивается в более широкую оценку или условие «всегда верно», фактически обходя аутентификацию. Именно так и работает эта инъекция: внедряется логика LDAP для нарушения предполагаемого поведения.
Таким образом, уязвимость LDAP-инъекции возникает из-за построения запросов с использованием ненадежных входных данных, которые включают специальные символы, такие как скобки, кавычки и подстановочные знаки, которые изменяют семантику запроса.
Более того, они возникают, когда код приложения небезопасно копирует пользовательские данные в запрос LDAP и не нейтрализует метасимволы, что позволяет злоумышленникам прерывать или манипулировать логикой запроса, получать несанкционированный доступ к данным или изменять поток выполнения.
Почему атака с использованием LDAP-инъекции имеет значение? #
Атака с использованием LDAP-инъекции может нарушить аутентификацию, привести к утечке конфиденциальной информации или даже изменить структуру каталогов. Imperva подчёркивает, что злоумышленники могут нарушать процессы аутентификации, просматривать или изменять имена пользователей и пароли, устанавливать вредоносное ПО и повышать привилегии, что приводит к утечкам данных, репутационному ущербу и финансовым потерям.
Уязвимости LDAP-инъекции могут каскадно распространяться через взаимосвязанные сервисы, особенно в enterprise среды, использующие LDAP для единого входа (SSO), авторизации или координации идентификации и разрешений пользователей.
Признаки существующей уязвимости LDAP-инъекции #
В кибербезопасности управление относится к тому, как руководство, политика и основные сигналы тревоги:
- Код объединяет пользовательский ввод непосредственно в фильтры LDAP.
- Отсутствие проверки или экранирования входных данных.
- Используйте специальные символы, такие как () * и | = во входных данных без ограничений.
- Неожиданные результаты запроса, например, аутентификация проходит успешно независимо от учетных данных или при минимальном вводе возвращаются широкие списки пользователей.
Неправильно сформированные запросы на основе вводимых пользователем данных могут привести к несанкционированному извлечению данных или обходу логики.
Как их смягчить? #
Устранение уязвимости LDAP-инъекции подразумевает:
а. Проверка входных данных / список разрешенных значений
Принимайте только заведомо безопасные символы или шаблоны. Отклоняйте или удаляйте управляющие символы, такие как *, (, ), &, |, =. PortsWigger рекомендует блокировать входные данные, содержащие метасимволы LDAP, или применять строгие буквенно-цифровые шаблоны.
б. Экранирование/кодирование
Используйте функции экранирования, специфичные для LDAP: экранирование уникальных имён для контекстов DN и экранирование поисковых фильтров для предикатов. OWASP предоставляет подробную информацию Памятка по профилактике с индивидуальными рекомендациями
c. Параметризованные запросы/безопасные API
Избегайте создания фильтров путём конкатенации строк. Используйте библиотеки LDAP, поддерживающие API связывания параметров или построения фильтров (например, Filter.createANDFilter(…) из UnboundID SDK), чтобы гарантировать обработку вводимых пользователем данных как данных, а не синтаксиса.
д. Принцип наименьших привилегий (PoLP)
Привяжите LDAP с минимальными правами доступа. Даже если произойдет инъекция, это ограничит действия, которые может выполнить злоумышленник. Подчеркните, что PoLP в сочетании с нулевое доверие и МИД для ограничения воздействия.
е. Безопасные фреймворки/библиотеки
Используйте фреймворки, которые автоматически экранируют или очищают входные данные и препятствуют построению сырых запросов.
f. Инструменты анализа кода
В .NET используйте анализ CA3005 для обнаружения ненадежных входных HTTP-данных, достигающих операторов LDAP; исправьте это путем очистки, экранирования или разрешения перечисления входных данных.
g. Тестирование (статическое, динамическое, тестирование на проникновение)
Интегрируйте как статический AppSec (SAST) и динамический (ДАСТ) сканирование для выявления уязвимости LDAP-инъекции как в состоянии покоя, так и во время выполнения.
h. Ведение журнала, мониторинг, оповещение
Выявляйте аномальные шаблоны фильтров, неудачные попытки или неожиданные структуры запросов. Semperis рекомендует отслеживать Active Directory на предмет нестандартных запросов LDAP или манипуляций с метаданными.
Сводная таблица глоссария #
| Срок | Смысл |
|---|---|
| LDAP-инъекция | Метод внедрения кода, использующий несанкционированный пользовательский ввод в фильтрах LDAP. |
| Что такое LDAP-инъекция | Уязвимость, возникающая при построении запросов LDAP с использованием ненадежных входных данных. |
| Атака с использованием LDAP-инъекции | Фактическая эксплуатация, при которой входные данные изменяют логику запроса LDAP или получают доступ. |
| Уязвимость инъекции LDAP | Уязвимость на уровне кода делает возможными атаки с использованием LDAP-инъекций. |
Почему это важно в DevSecOps? #
Для пакетов Команды DevSecOpsпредотвращение уязвимости LDAP-инъекции критически важно для обеспечения безопасности процессов аутентификации и управления доступом на основе каталогов. Непрерывная интеграция pipelines должны включать статическую проверку кода на предмет небезопасного построения запросов и динамическое тестирование на предмет манипуляции фильтрами. Менеджеры по безопасности должны обеспечивать использование экранирующих библиотек, параметризованного API, а также соблюдение политик минимальных привилегий и проверки входных данных.
Укрепление DevSecOps Pipelineс Ксигени #
Теперь, когда вы знаете, что такое LDAP-инъекции, вы понимаете, что для защиты современных приложений от них требуется больше, чем исправление ошибок на уровне кода. Команды DevSecOps должны обеспечить безопасность на всех уровнях. жизненный цикл разработки программного обеспечения, от кода до сборки и развертывания.
Такие инструменты, как Ксигени дать возможность командам своевременно обнаруживать риски инъекций, интегрируя статический анализ, IaC сканирование и безопасное применение политики непосредственно в CI/CD Рабочие процессы. Постоянно отслеживая небезопасное построение запросов, риски зависимостей и неправильные настройки, Xygeni помогает предотвратить атаки с использованием LDAP-инъекций до того, как они попадут в эксплуатацию.
Внедрение таких платформ, как Xygeni, позволяет совместить безопасность со скоростью разработки, обеспечивая видимость в режиме реального времени, автоматизированный контроль и рекомендации по устранению неполадок, соответствующие принципам безопасной разработки.
