Fedora vai tentar remover seus binários com setuid
Notícia interessante para quem acredita que a presença de binários com setuid pré-instalados pelo sistema operacional (um exemplo típico é o comando ping) são um entrave à segurança dos sistemas: a turma do Fedora resolveu eliminar esta prática em todos os casos possíveis, e vai tentar fazê-lo no Fedora 15.
A ideia é fazer uso do recurso file capabilities para dar aos binários em questão apenas os poderes administrativos de que ele precisa para funcionar, e não o acesso completo de superusuário. (via lwn.net)
O pessoal do Arch Linux já tem falado muito sobre isso. Aliás, um dos maiores problemas é o comando ‘mount’.
É uma nova forma de se pensar =P
Tem que tomar muito cuidado com ferramentas que o pessoal usa para espelhamento de sistemas, como o tar.
Colocar na notícia “(…) para quem acredita (…)” realmente me incomodou o suficiente para comentar, os últimos bugs de escalada de privilégios no Linux precisam de um executável com setuid para funcionar[1][2].
Com certeza é uma iniciativa excelente do time de segurança da RedHat/Fedora em realizar isso.
[1] http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2010-3847
[2] http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2010-3856
Percebo que você acredita, Ulisses. Eu também.
Mas não consigo imaginar que essa crença seja universal, afinal as distribuições continuam mandando binários setuid em suas instalações default, e me parece que o Fedora é a primeira entre as mais populares a anunciar que vai *tentar* removê-los, e apenas em uma edição futura.
Como sempre, uma bela e necessária iniciativa do pessoal do Fedora / Red Hat, não apenas uma inversão de posição dos controles das janelas ou uma nova shell discutível para o gnome.
>>> versão de posição dos controles das janelas ou
O pior de tudo, é uma galera que chama o Fedora Core 2 de “Fedora O Parto do SELinux”, porque ele bloqueava uma penca de coisa, mas depois que as regras começaram a amadurecer, outras distros começaram a adotar tais regras.
Assim como iniciativas de adoção ao Upstart(que o Ubuntu foi também “pioneiro”), ao Plymouth que algumas distros tomaram, que ao contrário do que os trollers de plantão pensam, só agregam valor as distros.
Primeiro o pessoal critica. Só se der certo, elogiam ou “forkam”.
@Ironmaniaco
Por isso o Fedora faz jus de eterno beta.
Desculpem a pergunta, mas o que é setuid?
X.org, the final frontier.
Hum… eu nunca tinha reparado que o ping roda com suid de root… hauah Será que um comando tão pacífico, nos dias de hoje, quando o Linux já é um sistema consolidado em ambientes de rede, poderia trazer alguma vunerabilidade em termos de segurança?
@marcosalex programa x tem setuid (ping, por exemplo). Quando usuário y (eu, por exemplo) executa o programa x, o programa é executado como se tivesse sido executado pelo root. Ou seja: o programa x com falha de segurança pode executar ações somente disponíveis ao root, dando ao usuário y o poder para “destroyworld” (no FreeBSD tem o comando “make buildworld”, pensei no destroyworld…)
Se eu estiver errado me corrijam, por favor… Época de eleição causa um pouco de lerdeza…
@marcosalex,
Os arquivos possuem (dependendo do sistema de arquivos utilizado) um “dono” e “flags de permissão”.
Quando um programa está sendo executado, possui UID (identidade do usuário) efetivo = UID do usuário que o executou. Quando um arquivo executável possui o “flag de permissão” SUID, ele é executado de modo a permitir que o programa assuma o UID do “dono” do executável. Assim, um programa cujo dono é o “root” com o flag SUID pode elevar seu próprio privilégio para ser executado com autoridade de “root”.
$ ls -lh /bin/mount
-rwsr-xr-x 1 root root 71K 2010-03-22 14:51 /bin/mount
No código acima você pode ver que tem um flag de inicialização “s” e o “dono” do aplicativo é o “root”.
http://en.wikipedia.org/wiki/Setuid
@marcosalex,
Aliás, é por isso que é uma falha de segurança permitir que “pendrives” sejam montados sem “inibir” o flag setuid. Por isso a opção nosuid do mount. Ponha um pendrive no seu computador e, depois de algum tempo, verifique as opções de montagem:
$ mount