Páginas

run0: Um substituto do sudo no systemd

systemd run0. Lennart sudo replacement

run0: Um substituto do sudo no systemd


 No dia 29 de Abril, Lennart Poettering anunciou em seu perfil no Mastodon um dos mais novos recursos que será lançado na versão 256 do systemd; o run0, um substituto do comando sudo que oferecerá mais segurança. Lennart descreve com detalhes problemas do sudo como binário muito grande, arquivo de configuração complexo, plugins, acesso a rede, seu conceito de processos SUID ser esquisito (no estilo, digamos, a la gambiarra). Lennart colocou até mesmo um artigo muito interessante do site ruderich.org escrito em 2016 (com atualização em 2023) que apresenta a possibilidade de vulnerabilidades e a execução de códigos arbitrários tanto no comando sudo quanto no comando su.

"Vamos jogar fora o conceito de SUID na lixeira de más ideias do UNIX."

 Sim, por mais que o Unix tenha sido um sistema operacional revolucionário e que gostamos muito, o Unix também teve ideias ruins que de certa forma inesperadas como por exemplo o erro que ocorreu na árvore de diretórios; os sistemas  operacionais Plan9 e o Inferno tem como um de seus conceitos não repetir os erros que ocorreram no UNIX e essa é uma das belezas do Linux que, mesmo sendo um clone do Unix (o que não deixa de ser um Unix), Linux não está limitado aos conceitos do Unix. como afirmado pelo próprio Linus Torvalds em um evento que "sua ideia era tentar desenvolver um Unix melhor do que o Unix". Linus chegou a abraçar muitas das ideias vindo destes dois sistemas operacionais.

Leia também o meu artigo "Linux: Mais do que um Unix"

 Neste aspecto, Lennart está certo em tentar solucionar o problema do sudo que outros também já tentaram solucionar em outros Unix. Alias SUID, SGID e Stickbit é outro problema no Unix que já ofereceram soluções, no Linux já há solução implementada (capabilities) mas como sempre, as distribuições demoram a adotar.

"Com o systemd v256 vamos um passo a frente disso. Há uma nova ferramenta no systemd chamada "run0". Ou na verdade, não é uma nova ferramenta, na verdade é a ferramenta já existente "systemd-run" mas que quando invocado sob o nome "run0" (via link simbólico) ele se comporta muito como um clone do sudo."

 A diferença entre o sudo e o run0 é que o run0 não é um SUID, ao invés disso, o run0 solicita o serviço que invoque o comando ou shell sob o UID do usuário alocando o processo para um novo PTY isolado sem herdar nenhum contexto do do cliente.


E começam os conflitobs inuteis...

 O run0 nem foi lançado e o pessoal já começa a colocar defeito. No Twitter o usuário conhecido como hackerfantastic.x postou um print informando o que seria uma demonstração de exploit no run0. Honestamente, analisando o print, eu só vi uma tentativa de ridicularizar o run0 assim como fazem como o systemd. Se fosse o projeto que GNU que tivesse desenvolvido o run0, pateticamente iriam defende-lo com unhas e dentes, é somente uma birra com o Lennart mesmo.



 Eu mesmo tive que perguntá-lo se ele considera aquilo uma vulnerabilidade então porque ele não reportou ao projeto ao invés de postar em uma rede social. 
(me sigam por lá também, galera). Eu também já reportei bugs como vocês podem acompanhar no canal e no blog porém, não deixei de reportar ao projeto.


run0 não é a única alternativa ao comando sudo

 Essa não é a primeira vez que alguém cria alguma alternativa para o comando sudo e a reclamação de todos é exatamente a mesma (o sudo é inchado, brechas de vulnerabilidade, perda de desempenho, arquivo de configuração complexo e etc...). O mais famoso de todos é o doas (inclusive mencionado pelo Lennart em seu perfil no Mastodon) desenvolvido pela equipe do OpenBSD como um substituto minimalista ao sudo que torna seu código mais fácil de auditar e seu arquivo de configuração tendo a sintaxe mais fácil.



 Me admira saber que o doas não foi adotado como padrão pelas distribuições sendo que, se você entrar agora no Youtube e digitar opendoas, verá somente elogios para o doas  e sabendo que e está disponível nos repositórios das distribuições:

doas and sudo comparison
Comparação entre doas e sudo

 Outras alternativas também estão disponíveis como o gosu que seria uma implementação escrita na linguagem Go, o próprio projeto GNU possui uma alternativa ao sudo chamada userv (mas até aí está tudo bem, não é? Afinal de contas, foi o projeto GNU que desenvolveu então não há nada de criticas) e o próprio site do projeto sudo apresenta outras alternativas sejam elas open-source, sejam elas alternativas comerciais e até mesmo alternativas para o Windows.



 Então, uma dica que eu daria é que, antes de simplesmente criticar por ser um ideólogo a la contra systemd (eu não consigo entender porque a galera gosta de misturar tecnologia com ideologias), entenda que na verdade o sudo contem muitos problemas herdados e que precisam ser solucionados; já que eles não são, foram desenvolvidas várias alternativas. Você mesmo pode estudá-las e adotar uma que melhor te atenda. Tenha em mente que essa é a beleza do Linux, tudo no Linux é uma questão de escolha. Tenha também em mente que esse processo é natural e ocorrerá com vários comandos.

 O que eu não eu não entendi e me pergunto é qual a relação de um comando que concede permissão como administrador com um init system. Faz até sentido passar a administração do crontab para um unity .timer, mas parte entre sudo e systemd, ainda me ficou vazia a resposta. O que eu espero é poder utilizar e ver como funciona. O resta ideológico e birra contra o Lennart é só balela.


doas: A port of OpenBSD's doas which runs on FreeBSD, Linux, NetBSD, and illumos (github.com)

Opendoas: Versão do doas portado para Linux

Sudo Alternatives | Sudo

The 4 Best sudo Alternatives for Linux Worth Considering (makeuseof.com)

Lennart Poettering: "5️⃣ Here's the 5th installment…" - Mastodon

su/sudo from root to another user allows TTY hijacking and arbitrary code execution (ruderich.org)

run0 (www.freedesktop.org)


Nenhum comentário:

Postar um comentário

Viu algum erro e quer compartilhar seu conhecimento? então comente aí.

Observação: somente um membro deste blog pode postar um comentário.