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: 63.126 ]

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

Race condition - vulnerabilidades em suids

Análise Forense - Aspectos de perícia criminal

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

OpenVZ: Virtualização para servidores Linux

PortSentry: Melhorando a segurança do seu Linux

Leitura recomendada

Nagios - Automatizando Auditorias de Rootkit

Configurando um servidor de logs simples

Block Hosts: Bloqueando ataques de força-bruta (brute force) em FTP, SSH e outros

Introdução ao Conceito de Hardening

SAMSB - Snort + Apache2 + MySQL + Snorby e BarnYard2 no Debian

  
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