Linux slogan
Visite também: Segurança Linux · BR-Linux.org · Dicas-L · Doode · NoticiasLinux · SoftwareLivre.org · UnderLinux



» Screenshot
Linux: Halloween no Kuruma
Por random
» Login
Login:
Senha:

Se você ainda não possui uma conta, clique aqui.

Esqueci minha senha



Artigo

Race condition - vulnerabilidades em suids
Linux user
y2h4ck
15/04/2004
Neste simples artigo vou tentar passar o conceito básico de race condition, a condição de corrida com arquivos temporários e "leaks" da memória de SUIDs. Vamos ver como obter privilégios explorando estes suids e como se proteger deles.
Por: Anderson L Tamborim | Blog: http://y2h4ck.wordpress.com
[ Hits: 13434 ]
Conceito: 6.7   6 voto(s)6 voto(s)6 voto(s)6 voto(s)6 voto(s) + quero dar nota ao artigo

O que são os race conditions

O race condition acontece quando temos vários processos do sistema acessando e manipulando ao mesmo tempo a mesma informação de maneira concorrente e o resultado da execução depende da ordem particular em que o acesso ocorre.

O race condition é muito interessante para invasores que querem elevar seu nível dentro de um sistema comprometido (obter uid=0(root)).

Vamos ver um pequeno pedaço de código em C que ilustra um race condition:

if(access("/tmp/arquivo-info",R_OK)==0) {
   fd=open("/tmp/arquivo-info");
   process(fd);
   close(fd);
}

O código acima cria o arquivo temporário "arquivo-info" e depois abre ele. A vulnerabilidade em potencial ocorre entre as chamadas das funções access() e a chamada open().

Se um atacante consegue manipular o conteúdo do "arquivo.info" entre as funções access() e open(), ele pode muito bem manipular qual vai ser a ação que o programa que utiliza esse arquivo vai realizar, isso e o que chamamos de "Race".

O race condition não é um ataque trivial de ser realizado porque necessita de muitas tentativas até que o atacante consiga algum retorno efetivamente útil. Porém, se conseguir que o programa suid que utiliza esse arquivo no /tmp execute (access()) em sua instrução, sua chance de obter uid=0 será grande.

O uso inapropriado de funções como access(), chown(), chgrp(), chmod(), mktemp(), tempnam(), tmpfile(), e tmpnam() são as principais causas de races conditions.

Próxima página >>




Páginas do artigo
   1. O que são os race conditions
   2. Como proteger seu sistema

Outros artigos deste autor

Leitura recomendada

Comentários
[1] Comentário enviado por fcc em 15/04/2004 - 17:21h:

Muito bom artigo....acho q o pessoal tem q saber um pouco mais sobre a seguranca q o LInux nos oferece...

Valeu!!!

[2] Comentário enviado por jllucca em 15/04/2004 - 23:43h:

Excelente artigo!

Não conhecia a função access(), sempre testava se o arquivo existe com duas linhas(fopen e fclose) e sobre trecho ali, open precisa de no minimo dois parametros pra ser compilado. Fora o que já esta la(o PATH) precisa ainda de uma flag que indica o que estamos fazendo(Lendo, gravando...).

[]'s :)

[3] Comentário enviado por cvs em 17/04/2004 - 09:57h:

o negocio eh so nao deixar ninguem acessar seu pc... hehehe ou seja.. killall sshd
userdel -r (os outros usuarios que nao seja vc)

passwd root (mudar a senha de root de 3 em 3 dias)
passwd seu_user (mudar sua senha todo dia)

pronto... E agora? hahahahah :P

Meo, seguranca eh algo bem nervoso hein... hehehe

[4] Comentário enviado por y2h4ck em 17/04/2004 - 11:41h:

cvs o problema e que um provedor nao pode fazer isso =] um provedor um servidor em producao roda muitos servidos com acesso remoto =]
um deles pode estar vulneravel e dar o acesso suficiente ao bash no sistema ehehe :)



[5] Comentário enviado por ph0enix em 04/12/2004 - 20:24h:

cvs, você se considera seguro apenas removendo todos os usuários do sistema, alterando sua senha para algo absurdo, que mais parece um MD5/SHA ?
Abra o google, digite o nome do seu navegador, do seu programa de emails, do seu firewall, ou até mesmo do seu provedor de internet, e veja as vulnerabilidades que os mesmo apresentam.
Seu provedor de internet provavelmente já foi invadido, você utiliza criptografia em seus emails ? quando loga aqui no VOL, é com HTTPS ? você utiliza pops ?

Suas informações podem estar sendo capturadas (sniffing) por algum intruso no seu provedor neste exato momento.

Abraços.


Contribuir com comentário


  
Para executar esta ação você precisa estar logado no site, caso contrário, tudo o que for digitado será perdido.
Responsável pelo site: Fábio Berbert de Paula - Conteúdo distribuído sob licença GNU FDL
Site hospedado por:

Viva o Linux

A maior comunidade Linux da América Latina! Artigos, dicas, tutoriais, fórum, scripts e muito mais. Ideal para quem busca auto-ajuda em Linux.