Stracing su e ssh mostra a senha. Isso é uma falha de segurança ou estou faltando alguma coisa?

5

Atualmente sou fascinado por strace , então, sendo novato, decidi brincar um pouco. Como sugerido pelo título da pergunta, eu tentei os dois strace su e strace ssh . Ambos os comandos exibiram a senha que eu digitei na saída strace. su continuou reclamando de uma senha incorreta, enquanto ssh conseguiu fazer o login normalmente.
Minhas perguntas:

  • Isso é uma falha de segurança ou estou faltando alguma coisa?
  • O su está reportando uma senha incorreta como uma medida de segurança porque detectou que estava sendo executada por strace ? Se sim, como pode dizer que está sendo invocado através de strace ? Verifica /proc/self/cmdline talvez?
  • Quanto dano pode ser causado por algo como alias su="strace -o /tmp/output.log su"
por Joseph R. 07.11.2012 / 18:48

4 respostas

14

Não é uma falha de segurança; você é capaz de avaliar o processo porque é o seu processo. Você não pode simplesmente anexar strace a qualquer processo em execução. Por exemplo:

$ sudo sleep 30 &
[1] 3660

$ strace -p 3660
attach: ptrace(PTRACE_ATTACH, ...): Operation not permitted

su está reportando uma senha incorreta porque não tem permissão suficiente para ler /etc/shadow mais. /etc/shadow é onde seu hash de senha é armazenado e é configurado de modo que somente o root possa lê-lo por motivos de segurança. su tem o setuid bit definido para que ele seja efetivamente executado como root, não importa quem o execute, mas quando você o executa por strace , isso não funciona, então ele acaba sendo executado na sua conta

Não sei ao certo o que você quer dizer com "quanto dano pode ser causado". Como você viu, su não funciona dentro de strace , portanto, você não será funcional. Se você quer dizer "alguém poderia usar isso para roubar minha senha", eles precisariam da habilidade de definir aliases no seu shell, que eles não deveriam ter permissão para fazer a menos que você tenha feito com que seus arquivos de login sejam graváveis mundialmente ou algo semelhante. Se eles tivessem permissão para definir aliases, poderiam apenas alias su para uma versão corrigida que registrasse sua senha diretamente; não há nada de especial sobre strace

    
por 07.11.2012 / 19:11
3

Acredito que o motivo pelo qual você está vendo isso é porque você precisa digitar as senhas su e ssh em texto sem formatação antes de serem processadas e processadas. Quando você executa strace , está captando todas as chamadas do sistema e captura a senha de texto sem formatação antes de ser processada e processada. Só porque o terminal não mostra texto não significa que você não esteja digitando texto simples.

    
por 07.11.2012 / 18:56
2

link sugere que existe um potencial problema de segurança em que se os atacantes têm privilégios de root em um servidor que executa o openssh, eles poderiam coletar as senhas das pessoas que ssh para o servidor executando strace no processo "net":

ps aux | grep ssh | grep net | awk {‘ print $2′} | xargs -L1 strace -e write -p

...

Process 17681 attached – interrupt to quit
write(4, “
ps aux | grep ssh | grep net | awk {‘ print $2′} | xargs -L1 strace -e write -p
Process 17681 attached – interrupt to quit
write(4, “%pre%%pre%%pre% \v”, 5) = 5
write(4, “%pre%%pre%%pre%thisismysupersecretpassword“, 31) = 31
write(3, “5+53q:J430I6$0y623″…, 64) = 64
Process 17681 detached
%pre% \v”, 5) = 5 write(4, “%pre%%pre%%pre%thisismysupersecretpassword“, 31) = 31 write(3, “5+53q:J430I6$0y623″…, 64) = 64 Process 17681 detached
    
por 30.01.2013 / 03:57
0

Embora isso só possa ser feito com privilégios de root, mas ainda assim é muito perigoso: você usa o ssh da máquina para acessar outras máquinas críticas e uma pessoa mal-intencionada com privilégios de root rouba sua senha ou passphrase sem que você saiba.

    
por 06.06.2016 / 09:18