Libsafe: Protegendo Linux contra Smashing Overflow

Neste artigo vamos conhecer a libsafe, uma biblioteca que é capaz de interceptar tentativas de ataques baseados em Stack Overflow. Vamos ver alguns resultados e também como é fácil tornar o Linux um pouco mais seguro.

[ Hits: 64.485 ]

Por: Anderson L Tamborim em 06/12/2004 | Blog: http://y2h4ck.wordpress.com


O que vem a ser libsafe?



Libsafe é uma biblioteca que protege os processos contra explorações de buffer overflow. Libsafe funciona com qualquer executável pré-compilado e pode ser usado de maneira transparente de acordo com sua função de ser uma biblioteca.

Libsafe intercepta qualquer e toda chamada feita a funções conhecidas por serem vulneráveis a ataques de buffer overflow. Uma função equivalente as originais é implementada com a funcionalidade original, porém barrando as tentativas de buffer overflow no stack corrente da função que está sendo substituída.

Libsafe foi criado com o intuito de proteger o sistema de todos os tipos de vulnerabilidades conhecidas utilizando transbordamento de buffer e também com intuito de tentar barrar ataques desconhecidos. Pesquisas utilizando tentativas de burlar a libsafe se mostraram insignificantes.

Abaixo vamos ver uma lista contendo as funções mais conhecidas por serem alvos constantes de ataques de stack smashing:
  • strcpy(char *dest, const char *src)
  • strcpy(char *dest, const char *src)
  • strpcpy(char *dest, const char *src)
  • wcscpy(wchar_t *dest, const wchar_t *src)
  • wcpcpy(wchar_t *dest, const wchar_t *src)
  • Pode causar um overflow no buffer de destino.
  • strcat(char *dest, const char *src)
  • wcscpy(wchar_t *dest, const wchar_t *src)
  • getwd(char *buf)
  • gets(char *s)
  • [vf]scanf(const char *format, ...)
    Pode causar overflow em seus argumentos.
  • realpath(char *path, char resolved_path[])
    Pode causar overflow no path do buffer.
  • [v]sprintf(char *str, const char *format, ...) Pode causar overflow no str buffer. Pode exploitar "%n" (format bugs).

Onde posso baixar o Libsafe?


O código fonte do libsafe pode ser encontrado aqui:

http://www.research.avayalabs.com/project/libsafe/index.html

Página anterior     Próxima página

Páginas do artigo
   1. Prólogo
   2. O que vem a ser libsafe?
   3. Instalação
   4. Projeto sob-fogo: testando libsafe
   5. Considerações finais
   6. APPEND - A (Links)
   7. APPEND B - Marketing ;)
Outros artigos deste autor

Snort avançado: Projetando um perímetro seguro

PSAD: Port Scan Attack Detector

PHLAK :: [P]rofessional [H]acker's [L]inux [A]ssault [K]it

Jails em SSH: Montando sistema de Shell Seguro

SECtool - Análise Local para Linux

Leitura recomendada

Metasploit Framework

Criando um cluster de alta performance para quebrar senhas

Ubuntu pendrive TrueCrypt

Política de Segurança para Dispositivos Móveis

Trilhas de Certificação em Segurança da Informação - Qual caminho seguir?

  
Comentários
[1] Comentário enviado por reimassupilami em 06/12/2004 - 10:59h

bom dia linuxers...

seguinte, to começando a me aventurar pelo mundo do slackware, e confesso que estou apanhando um pouco... mas faz parte do aprendizado, né?

bem então gostaria que vocês me dessem umas dicas sobre onde baixar pacotes para o slack... pode ser?

no aguardo... falow...

[2] Comentário enviado por reimassupilami em 06/12/2004 - 11:00h

opa, foi mal... postei pergunta no espaço do coment... aiai...

foi malz ae... t+

[3] Comentário enviado por jllucca em 06/12/2004 - 11:20h

Aew,

cara o artigo ta excelente. Ficou muito bom pra só dar uma introdução ao que o libsafe é e os interessados se mexerem depois :p. Dá parte de links, me parece que o PDF é o mais interessante ^^ (so passei os olhos nele)

[]'s

[4] Comentário enviado por removido em 07/12/2004 - 00:31h

Rapaz, A-D-O-R-E-E-E-E-I-I-I...
Esse negócio de melhorar a segurança apenas instalando um programa sem precisar configurar mais nada é um must !!!

[5] Comentário enviado por cvs em 08/12/2004 - 16:49h

Bom, instalei aqui, testei o .c que esta sendo apresentado aqui... o resultado foi o seguinte.

bash-2.05b$ ./vun `perl -e 'printf "A" x 530'`
Libsafe version 2.0.16
Detected an attempt to write across stack boundary.
Terminating /home/thiago/libsafe-2.0-16/exploits/vun.
uid=1000 euid=1000 pid=3269
Call stack:
0xb7fe69c0 /lib/libsafe.so.2.0.16
0xb7fe6ab4 /lib/libsafe.so.2.0.16
0x804844e /home/thiago/libsafe-2.0-16/exploits/vun
0xb7ebc931 /lib/libc-2.3.2.so
Overflow caused by strcpy()
Killed

Certo... Testei de novo com outro xpl que veio com o pacote, o resultado...

bash-2.05b$ ./canary-exploit
This program tries to use printf("%n") to overwrite the
return address on the stack.
If you get a /bin/sh prompt, then the exploit has worked.
Press any key to continue...
sh-2.05b$

Ai, o xpl funcionou... o artigo está otimo e vou usar essa libsafe nos meus servidores, mas nem por isso vou relaxar... é seguro mas não é 100%... to esperando o proximo artigo... :D

[6] Comentário enviado por michelpereira em 15/10/2005 - 11:45h

Alguns programas não se comportam bem com a libsafe, o recomendado é executálos carregando a libsafe antes com o comando "LDPRELOAD=libsafe.so"

[7] Comentário enviado por andrentfs em 16/02/2006 - 12:27h

Realmente, sempre mostrando ser bom no que faz, parabéns, continue assim...

[8] Comentário enviado por todeschini em 02/10/2007 - 10:06h

aki vc encontra o libsafe

http://pubs.research.avayalabs.com/src/libsafe-2.0-16.tgz

[9] Comentário enviado por todeschini em 02/10/2007 - 10:11h

aki tem mais op do projeto
http://www.research.avayalabs.com/default.aspx?CurrentPath=usa/en-us/initiatives/all/nsr.htm&Filter=...


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts