Em 9 de abril de 2022, vulnerabilidades de segurança na implementação de referência LDAP do NGINX foram compartilhadas publicamente. Determinamos que apenas a implementação de referência é afetada. O NGINX Open Source e o NGINX Plus não são afetados e nenhuma ação corretiva é necessária se você não usar a implementação de referência.
A implementação de referência LDAP do NGINX usa o Lightweight Directory Access Protocol (LDAP) para autenticar usuários de aplicativos que estão sendo proxyados pelo NGINX. Ele é publicado como um daemon Python e configuração NGINX relacionada em https://github.com/nginxinc/nginx-ldap-auth , e seu propósito e configuração são descritos em detalhes em nosso blog .
As implantações da implementação de referência LDAP são afetadas pelas vulnerabilidades se qualquer uma das seguintes condições se aplicar. Abaixo, discutiremos mais detalhadamente as condições e como mitigá-las:
Observação: A implementação de referência LDAP é publicada como uma implementação de referência e descreve a mecânica de como a integração funciona e todos os componentes necessários para verificar a integração. Não é uma solução LDAP de nível de produção. Por exemplo, não há criptografia do nome de usuário e senha usados na página de login de exemplo, e os avisos de segurança alertam sobre isso.
A principal maneira de configurar a implementação de referência LDAP é com uma série de diretivas proxy_set_header,
conforme detalhado na configuração de exemplo e na documentação . No entanto, os parâmetros de configuração também podem ser definidos na linha de comando que inicializa o daemon Python ( nginx-ldap-auth-daemon.py ).
Quando os parâmetros de configuração são especificados na linha de comando, um invasor pode substituir alguns ou todos eles passando cabeçalhos de solicitação HTTP especialmente criados. Para se proteger contra isso, certifique-se de que quaisquer cabeçalhos de solicitação estranhos sejam ignorados durante a autenticação adicionando a seguinte configuração ao bloco location
=
/auth-proxy
na configuração do NGINX ( nginx-ldap-auth.conf no repositório).
location = /auth-proxy {
# ...
proxy_pass_request_headers off;
proxy_set_header Autorização $http_authorization; # Se estiver usando autenticação básica
# ...
}
Assim como na Condição 1, um invasor pode passar cabeçalhos de solicitação HTTP especialmente criados para substituir determinados parâmetros de configuração, caso eles não tenham sido definidos na configuração. Por exemplo, o modelo de pesquisa LDAP pode ser substituído se não for definido explicitamente na configuração. Isso é defendido da mesma forma que a Condição 1, adicionando a seguinte configuração ao bloco location
=
/auth-proxy
na configuração do NGINX.
location = /auth-proxy {
# ...
proxy_pass_request_headers off;
proxy_set_header Autorização $http_authorization; # Se estiver usando autenticação básica
# ...
}
O daemon Python não higieniza suas entradas. Consequentemente, um invasor pode usar um cabeçalho de solicitação especialmente criado para ignorar a verificação de associação ao grupo ( memberOf
) e, assim, forçar a autenticação LDAP a ser bem-sucedida, mesmo que o usuário autenticado não pertença aos grupos necessários.
Para mitigar isso, certifique-se de que o daemon de backend que apresenta o formulário de login retire todos os caracteres especiais do campo de nome de usuário. Em particular, ele deve remover os caracteres de parênteses de abertura e fechamento – ( )
– e o sinal de igual ( =
), que têm um significado especial para servidores LDAP. O daemon de backend na implementação de referência LDAP será atualizado dessa maneira no devido tempo.
Agradecemos a Lucas Verney, valodzka e @_Blue_hornet por destacar essas vulnerabilidades de segurança.
"Esta postagem do blog pode fazer referência a produtos que não estão mais disponíveis e/ou não têm mais suporte. Para obter as informações mais atualizadas sobre os produtos e soluções F5 NGINX disponíveis, explore nossa família de produtos NGINX . O NGINX agora faz parte do F5. Todos os links anteriores do NGINX.com redirecionarão para conteúdo semelhante do NGINX no F5.com."