Is there a flaw in my approach? Would replacing the sudo command with a modified script be wise? Or should I patch the executable itself?
Sim, há uma falha em sua abordagem: como foi apontado nos comentários, a primeira regra de segurança é não crie sua própria . Você não tem chance de testar seu próprio código tão completamente quanto o código su
ou sudo
foi testado, e mesmo que você consiga acertar na maioria das vezes, você está praticamente fadado a perder algum caso extremo em algum lugar. (É difícil o suficiente para obter um código que não seja crítico para a segurança, mesmo quando você é pago para fazer isso.) Apenas não faça isso.
Em vez disso, use o módulo PAM pam_faildelay
. Ele permite que você configure o atraso, pode permitir que você desconfie o atraso e, mesmo que isso não ocorra, copiar o código dele e implementar um atraso impressionante certamente será menos propenso a erros do que substituir su
e sudo
. Eu ainda não recomendaria a criação de um módulo PAM, mesmo baseado em um existente similar, se você não sabe exatamente o que está fazendo (qualquer coisa que se associe a riscos do PAM introduzindo vulnerabilidades de segurança), mas pelo menos você não seria mexendo com utilitários básicos do sistema tentando adicionar sua própria lógica do zero.
Além disso, como Lingfeng Xiong apontou, há muitas outras maneiras de obter privilégios de root.