Os desenvolvedores do projeto openSUSE identificaram uma vulnerabilidade (CVE-2025-23013) no módulo PAM pam-u2f, utilizado na autenticação através de tokens YubiKey, Yubico Security Key, YubiHSM e outros dispositivos FIDO que suportam o protocolo U2F (Universal 2nd Factor). A vulnerabilidade permite que um usuário com acesso local não privilegiado ao sistema, em determinadas configurações do PAM, consiga autenticar-se sem inserir o token de hardware. Na prática, o módulo pam-u2f geralmente é usado para autenticação de dois fatores ou sem senha, com tokens (por exemplo, para confirmar as permissões de execução de comandos através das ferramentas su e sudo).
A vulnerabilidade é causada pelo retorno incorreto do valor PAM_IGNORE pela função pam_sm_authenticate(). Esse valor é retornado em caso de erro na execução das chamadas gethostname(), pam_modutil_drop_priv(), pam_modutil_regain_priv() ou resolve_authfile_path(), bem como em problemas de alocação de memória em strdup() ou calloc(). O problema é que a biblioteca libpam, ao receber do módulo PAM um resultado com o código PAM_IGNORE, retornará o código final PAM_SUCCESS, que indica uma autenticação bem-sucedida, se algum outro módulo PAM na cadeia de verificações retornar um resultado positivo de autenticação.
Ao usar o módulo pam-u2f em conjunto com pam_unix para autenticação de dois fatores, a vulnerabilidade permite que a autenticação seja bem-sucedida no caso de uma verificação de senha bem-sucedida, sem a confirmação do segundo fator. Ao realizar a autenticação sem senha usando o token de hardware, o pam-u2f pode ser usado em conjunto com o módulo PAM pam_faillock, que limita o número de tentativas de autenticação e retorna PAM_SUCCESS, se o limite não for excedido.
Um exemplo de ataque envolve contornar a verificação do token ao executar comandos privilegiados por um usuário local, usando as ferramentas sudo e su. Durante a execução desses comandos, um invasor pode criar condições que levem o módulo pam-u2f a retornar o valor PAM_IGNORE, por exemplo, através da exaustão da memória disponível. O problema foi corrigido na versão pam-u2f 1.3.1.
Fonte: opennet.ru
