O sudo não é extremamente seguro? [duplicado]

2

Parece que qualquer programa rodou logo após sudo no mesmo terminal poder executar qualquer comando sudo que agrade.

Prova: Execute sudo ls em um terminal. Em seguida, execute este programa (compilado, é claro) no mesmo terminal:

#include <stdlib.h>

int main() {
    system("sudo whoami");
    return 0;
}

Ele dirá root sem pedir uma senha.

Este não é um grande buraco de segurança? As contas raiz e regulares são separadas para que, além de outras coisas, o software mal-intencionado não possa ser executado como raiz. Os usuários devem ter cuidado com o que eles executam antes de sudo expirar?

    
por user438846 20.01.2016 / 16:18

3 respostas

4

sudo configurações por padrão tem 15 minutos de tempo limite antes de solicitar a senha, no entanto, é possível alterá-la para sempre perguntar a senha toda vez que você chamar algo com sudo . A opção exata é timestamp_timeout

  

timestamp_timeout

                   Number of minutes that can elapse before sudo will ask
                   for a passwd again.  The timeout may include a frac‐
                   tional component if minute granularity is insufficient,
                   for example 2.5.  The default is 15.  Set this to 0 to
                   always prompt for a password.  If set to a value less
                   than 0 the user's time stamp will never expire.  This
                   can be used to allow users to create or delete their
                   own time stamps via “sudo -v” and “sudo -k” respec‐
                   tively.

E aqui está a parte relevante do meu arquivo sudoers, bem como duas tentativas em sudo , como você pode ver: "

$ sudo cat /etc/sudoers                                                        
[sudo] password for xieerqi: 
#
# This file MUST be edited with the 'visudo' command as root.
#
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
#
# See the man page for details on how to write a sudoers file.
#
Defaults    env_reset
Defaults    mail_badpass
Defaults    secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Defaults    timestamp_timeout=0
Defaults    passwd_timeout=0
(the rest cut out)
================
xieerqi:
$ sudo echo hello
[sudo] password for xieerqi: 

Como outra alternativa, você também pode usar pkexec , que, até onde eu saiba, sempre pede senha

    
por Sergiy Kolodyazhnyy 20.01.2016 / 16:32
2

sudo por padrão em uma instalação padrão do Ubuntu mantém o acesso sudo em cache por um curto período de tempo (o padrão é um tempo limite de 15 minutos).

Para que sua situação hipotética funcione, é necessário executar sudo anteriormente e, em seguida, executar o código especificado com sudo antes que o cache dessa capacidade expire. Na maioria dos casos, isso não é tão 'inseguro' quanto você pensa - muitos servidores endurecidos têm um tempo limite muito mais curto ou, no meu caso, em meus servidores, eu os configuro por um tempo limite instantâneo após sudo ser executado, exigindo a senha para cada comando sudo feito.

Para esse fim, sudo é 'seguro' porque há tempos limite que expiram, para garantir que sudo não possa ser usado infinita e perpetuamente após um uso.

Não é 'insegura' dessa maneira, embora haja momentos em que parece assim - desabilitar o cache de credenciais resolve isso, é claro, e é muito fácil para os administradores de sistema fazerem isso.

Em uma instalação padrão, o cache padrão de 15 minutos aparecerá como o equilíbrio entre 'segurança' e 'conveniência', porque não queremos que novos usuários tenham dores de cabeça digitando senhas todas as vezes. Dito isto, onde a segurança é importante, podemos bloquear sudo alterando a configuração.

TL; DR : Não, sudo não é inseguro. É o caching padrão, e sua hipotética chamada enquanto sudo access é armazenada em cache, que aciona seu pensamento, mas sudo NÃO é realmente inseguro quando configurado com um tempo limite curto ou com tempo limite instantâneo, e isso é feito no administrador do sistema decisões sobre esses sistemas se deseja alterar o padrão.

    
por Thomas Ward 20.01.2016 / 16:24
1
  

Este não é um grande buraco de segurança?

Não. Mas sim, está diminuindo a segurança um pouco a favor por conveniência. Você pode proteger um sistema com uma senha de 128 bits, jogá-lo fora e ninguém nunca vai ter acesso ao sistema ... Seguro? Sim. Conveniente? Dificilmente; -)

  • Deixar um sistema desacompanhado onde sudo está ativo é.
  • Existe uma solução para isso: sudo -k cancela o tempo limite atual. Eu executo isso toda vez que saio do meu sistema e acredito que os 15 minutos estão ativos.
  

Os usuários devem ter cuidado com o que eles executam antes que o sudo expire?

Sim e não. Um administrador deve ser cuidadoso sempre que usar "sudo". Não apenas quando está dentro do prazo de 15 minutos. Então a segunda parte da sua pergunta não é importante;)

Você é um administrador. Você é responsável por manter seu sistema seguro.

    
por Rinzwind 20.01.2016 / 16:52