Tenho um dispositivo Linux embarcado com um kernel Linux bastante moderno. No entanto, uma coisa estranha aconteceu com a última atualização: quando uma senha é modificada com passwd
para qualquer usuário, o valor salt em /etc/shadow
é substituído por rounds=65536
, então uma entrada ficará parecida com root:$6$rounds=65536$6mA...
. Suspeito que o PAM esteja fazendo isso. Alguém tem alguma ideia de qual problema com o PAM pode causar tal comportamento?
Sua atualização provavelmente alterou a configuração do PAM para endurecer a segurança dos hashes de senha no seu arquivo shadow. Veja também este guia de endurecimento e a documentação da função crypt:
Se um invasor obtiver acesso ao arquivo shadow, ele poderá tentar recuperar a senha do salt e do hash por força bruta, mas isso se tornou cerca de 13 vezes mais difícil do que o padrão de 5.000 rodadas.
Essas informações precisam ser armazenadas junto com o algoritmo, o salt e o hash para que a função de login saiba como verificar a senha desta conta no futuro.
O número 65536 deve corresponder ao poder de computação do seu dispositivo embarcado. Se for muito alto, levará muito tempo para verificar uma senha. Se for muito baixo, algum invasor com muito poder de computação (por exemplo: ASICs) poderá facilmente usar força bruta no hash para encontrar a senha.
Atualizar:
Desde o lançamento do pam 1.6.0, a opção de rounds SHA-512 pode ser configurada editando o
/etc/login.defs
arquivo e definindo um valor paraSHA_CRYPT_MAX_ROUNDS parameter
, ou editando/etc/pam.d/passwd
e adicionando orounds
com um valor apropriado. (Fonte: https://wiki.archlinux.org/title/SHA_hashes - eles também mencionam 65536, mas sua origem não é clara, para mais informações veja também o conceito relacionado de Funções de Derivação de Chave Baseadas em Senha: https://en.wikipedia.org/wiki/PBKDF2 )