De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Rubens Queiroz de Almeida
Data de Publicação: 19 de Abril de 1997
Programas com setuid bit são um mal necessário. Um mal porque se codificados erradamente podem ser utilizados para atacar um sistema e necessários porque muitas funções do sistema operacional dependem de sua existência para o seu funcionamento.
Um exemplo bastante claro é o arquivo passwd
.
Este arquivo não pode ser editado por usuários comuns, porque
desta forma a criação de contas ficaria aberta a todos.
O arquivo /etc/passwd
possui as seguintes permissões:
-rw-rw-r-- 1 root security 221 Sep 26 11:54 /etc/passwd
O usuário root
e os usuários do grupo security
podem ler
e gravar este arquivo. Os demais usuários podem apenas ler
as informações nele contidas.
Os usuários comuns não podem criar entradas mas devem poder alterar suas senhas. Como resolver este impasse?
Através de programas setuid. O programa passwd
por sua vez
possui as seguintes permissões:
$ ls -l /usr/bin/passwd
-r-sr-xr-x 1 root 1 security 48358 Nov 2 1993 /usr/bin/passwd
O caractere s
em r-s
significa que todos os que executam
este programa o executam como o usuário proprietário do arquivo,
neste caso, root
.
Desta forma, quando um usuário digita passwd
para trocar sua senha, ele
vai conseguir gravar a nova senha no arquivo /etc/passwd
independentemente
do fato de que este arquivo não possui permissão universal de gravação.
Da explicação anterior pode-se entrever o perigo que programas com o setuid bit ligado podem representar para o sistema. Muitos administradores de sistemas criam shell scripts e programas com o setuid bit ligado para desempenhar funções determinadas no sistema.
A norma geral a ser seguida é criar o mínimo possível de programas com estas características e, caso realmente necessário, examinar e testar o código exaustivamente para evitar possíveis erros que possam ser explorados por usuários mal intencionados.
Além disto tudo, o administrador de sistemas tem que controlar o número de programas que possuem o setuid bit ligado em seu sistema.
O comando
$ find / -type f -a \(-perm 0400 -o -perm 0200 \) -print
irá localizar todos os arquivos no sistema que possuam o setuid ou setgid bit ligados. O setgid bit, possui funcionalidade idêntica ao setuid bit, mas atua sobre as permissões do grupo ao qual pertence o programa.
A listagem gerada deverá então ser cuidadosamente examinada para detectar possíveis anormalidades e para se tomar então as devidas providências.
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários