Lennart Pottering introduziu run0, um substituto do sudo integrado ao systemd

Lennart Pottering introduziu o utilitário run0, que permite executar processos sob os identificadores de outros usuários. O novo utilitário está posicionado como um substituto mais seguro para o programa sudo, implementado como um complemento ao comando systemd-run e permitindo que você se livre do uso de um arquivo executável com o sinalizador SUID. O utilitário run0 está incluído na versão release candidate do systemd 256.

Observa-se que alterar o identificador usando o sinalizador SUID no sudo acarreta riscos adicionais devido ao fato de que o processo SUID herda um contexto de execução que inclui muitas propriedades controladas por um usuário sem privilégios, como variáveis ​​de ambiente, descritores de arquivo, opções de agendador e ligações de cgroup. Algumas dessas propriedades são limpas automaticamente para processos SUID pelo kernel e outras são limpas pelo próprio aplicativo. No entanto, vulnerabilidades continuam a ser encontradas regularmente em programas SUID complexos, como o sudo, devido ao manuseio descuidado de dados externos que podem ser influenciados por um usuário sem privilégios.

run0, em vez de usar SUID, pede ao gerente do sistema para iniciar um shell ou processo com o ID de usuário especificado, criar um novo pseudoterminal (PTY) e transferir dados entre ele e o terminal atual (TTY). Esse comportamento lembra mais executá-lo usando ssh do que executá-lo usando o sudo clássico. O processo privilegiado é executado em um contexto isolado, gerado pelo processo PID 1 e não pelo processo do usuário, ou seja, não herda as propriedades do ambiente do usuário, com exceção do encaminhamento da variável de ambiente $TERM. O encaminhamento é regulado por meio de uma lista de propriedades explicitamente permitidas, em vez de tentar proibir propriedades perigosas (o conceito de lista branca, em vez de lista negra).

Polkit é usado para autorizar e determinar as capacidades do usuário em run0. A linguagem de regras clássica (/etc/sudoers) usada pelo sudo não é suportada. A funcionalidade para executar programas com outros privilégios está incorporada no systemd-run, e o comando run0 é criado como um link simbólico para o systemd-run, que quando usado fornece uma interface de linha de comando semelhante ao sudo.

Um dos recursos adicionais do run0 é a indicação de trabalhar com privilégios elevados, definindo um fundo avermelhado no terminal e adicionando um ponto vermelho ao título da janela. Após encerrar a execução com outros privilégios, o ponto desaparece e o fundo volta ao normal. Além disso, run0 suporta todas as opções “systemd-run”, por exemplo, o parâmetro “--property”, através do qual você pode definir configurações arbitrárias para serviços systemd (por exemplo, “CPUWeight=200 MemoryMax=2G IPAccounting=yes”) .

Fonte: opennet.ru

Compre hospedagem confiável para sites com proteção DDoS, servidores VPS VDS 🔥 Compre hospedagem de sites confiável com proteção contra DDoS, servidores VPS/VDS | ProHoster