Archives for Segurança category

DNS denial of service

Posted on jul 29, 2009 under Segurança | No Comment

Uma vulnerabilidade foi identificada hoje 29/07/2009 pela ISC BIND. A falha é acontece quando o servidor recebe repetidamente mensagens de atualização dinâmica, gerando um ataque do tipo negação de serviço.

Solução:

Atualizar para: 9.4.3-P3, 9.5.1-P3 ou 9.6.1-P1

bind-9.4.3-P3.tar.gz
ftp://ftp.isc.org/isc/bind9/9.4.3-P3/bind-9.4.3-P3.tar.gz

bind-9.5.1-P3.tar.gz
ftp://ftp.isc.org/isc/bind9/9.5.1-P3/bind-9.5.1-P3.tar.gz

bind-9.6.1-P1.tar.gz
ftp://ftp.isc.org/isc/bind9/9.6.1-P1/bind-9.6.1-P1.tar.gz

Referências:

http://www.vupen.com/english/advisories/2009/2036
https://www.isc.org/node/474

Vulnerabilidades como se proteger usando Gentoo Linux

Posted on mai 05, 2009 under Segurança, Sem categoria | No Comment

Manter um servidor ou desktop longe das vulnerabilidades de segurança, é um serviço árduo. Mas com intuito de facilitar nossa vida, o Gentoo possui um projeto chamado GLSA(Gentoo Linux Security Advisor) no qual a idéia principal é manter a árvore do portage livre de vulnerabilidades conhecidas, através de uma ferramenta capaz de pesquisar na árvore do portage e avisar sobre as vulnerabilidades encontradas.

Então vamos colocar a mão na massa.

Primeiro passo é instalar o gentoolkit.

# emerge -av gentoolkit

Depois de instalado teremos uma ferramenta chamada glsa-check, com a qual podemos verificar o nosso servidor ou desktop, procurando por pacotes com vulnerabilidades de segurança.

Verificando o sistema:

# glsa-check -l affected
[A] means this GLSA was already applied,
[U] means the system is not affected and
[N] indicates that the system might be affected.

200903-28 [N] libpng: Multiple vulnerabilities ( media-libs/libpng )
200904-02 [N] GLib: Execution of arbitrary code ( dev-libs/glib )
200903-21 [N] cURL: Arbitrary file access ( net-misc/curl )
200902-02 [N] OpenSSL: Certificate validation error ( dev-libs/openssl )
200904-18 [N] udev: Multiple vulnerabilities ( sys-fs/udev )
200904-08 [N] OpenSSL: Denial of Service ( dev-libs/openssl )
200903-24 [N] Shadow: Privilege escalation ( sys-apps/shadow )
200903-25 [N] Courier Authentication Library: SQL Injection vulnerability ( net-libs/courier-authlib )
200807-16 [N] Python: Multiple vulnerabilities ( dev-lang/python )
200903-11 [N] PyCrypto: Execution of arbitrary code ( dev-python/pycrypto )
200903-13 [N] MPFR: Denial of Service ( dev-libs/mpfr )
200903-38 [N] Squid: Multiple Denial of Service vulnerabilities ( net-proxy/squid )
200812-06 [N] libxml2: Multiple vulnerabilities ( dev-libs/libxml2 )

Olha só que coisa mais linda! Minha máquina está com bastantes vulnerabilidades.

Então vamos corrigir.

# glsa-check -f affected

Um detalhe importante do uso da correção automática é que pode dar algum problema se você usa a flag “USE” para adicionar alguma dependência a um determinado pacote, quando o pacote tiver que ser atualizado o portage irá buscar as informações sobre dependências nos arquivos /etc/make.conf ou /etc/portage/package.use, então a instalação do pacote ficará diferente da anterior podendo causar mau funcionamento em algum serviço devido a falta de alguma biblioteca. Para garantir que não tenhamos nenhum problema é melhor atualizar todos os pacotes manualmente.

Uma boa prática para utilização do portage é adicionar as dependências no arquivo /etc/portage/package.use, porque com o passar do tempo a gente nem se lembra o motivo pelo qual um determinado pacote precisa de uma dependência específica. Então para garantir que as atualização fiquem corretas com relação as dependências devemos adiciona-las no arquivo como no exemplo a seguir:

echo "sys-libs/glibc userlocales" >> /etc/portage/package.use

Todo usuário Linux gosta de automatizar tarefas o glsa-check tem uma característica interessante, ele pode enviar um e-mail para o administrador, quando o sistema apresentar algum pacote com vulnerabilidade. Para enviar e-mail devemos fazer as seguintes configurações:

Adicionar no arquivo /etc/make.conf a variável PORTAGE_ELOG_MAILURI=”admin@xyz.com” informando o endereço de e-mail do administrador.

Agora é só adicionar no contrab o comando glsa-check -m affected configurando para rodar uma vez por dia.

Para saber mais sobre segurança no Gentoo:
USE flags
Gentoo Linux Security Project
Gentoo Security Handbook
Gentoo Linux Security Advisories

Espero que seja útil para alguém.

Bloqueando ataque DNS query (cache) ‘./NS/IN’ denied

Posted on mar 05, 2009 under Segurança, Sem categoria | No Comment

Ultimamente tenho verificado nos logs do servidor DNS as seguintes mensagens:

Mar  4 20:26:37 named[4276]: x query (cache) './NS/IN' denied
Mar  4 20:26:37 named[4276]: x query (cache) './NS/IN' denied
Mar  4 20:26:39 named[4276]: x query (cache) './NS/IN' denied
Mar  4 20:26:39 named[4276]: x query (cache) './NS/IN' denied
Mar  4 20:26:40 named[4276]: x query (cache) './NS/IN' denied
Mar  4 20:26:43 named[4276]: x query (cache) './NS/IN' denied
Mar  4 20:26:44 named[4276]: x query (cache) './NS/IN' denied

Apaguei o IP do client que está originado o ataque porque é um IP spoofado.

Esse ataque DDOS está acontecendo em muitos servidores DNS, conforme nos diz o grande oráculo google com a palavra chave query (cache) ‘./NS/IN’ denied.
Para amenizar esse ataque existe um artigo chamado Secure BIND Template Version 6.7 31 JAN 2009, o qual tem uma série de sugestões para melhorar a segurança do DNS.
Além de implementar algumas melhorias na segurança sugerida pelo artigo, também criei uma regra no firewall para limitar o número de conexões originadas de um mesmo endereço IP dentro de um período de tempo e tentativas de conexão.

Regras:

iptables -A INPUT -p udp -i eth0 -m state --state NEW --dport 53 -m recent --update --seconds 10 --hitcount 3 -j DROP
iptables -A INPUT -p udp -i eth0 -m state --state NEW --dport 53 -m recent --set -j ACCEPT

Essas regras exigem um tempo mínimo de 10 segundos e menos de 3 tentativas de conexões originadas de um mesmo endereço IP, para que uma nova conexão seja aceita.
Já estava me esquecendo com essa regra é possível verificar os endereços IP que estão sendo bloqueados com o comando:

cat /proc/net/ipt_recent/DEFAULT

E também adicionar novos ips, remover um ip específico ou limpar a lista com os seguintes comandos:

echo xx.xx.xx.xx > /proc/net/ipt_recent/DEFAULT
Adiciona um IP na lista DEFAULT

echo -xx.xx.xx.xx > /proc/net/ipt_recent/DEFAULT
Remove um IP da lista DEFAULT

echo clear > /proc/net/ipt_recent/DEFAULT
limpa a lista DEFAULT.

Faça um teste remova um ip da lista e verfique os logs do DNS.

Essa solução tem funcionado muito bem, pois as tentativas de ataque estão sendo bloqueadas pelo iptables, e o DNS está fazendo certinho seu serviço.

Por hoje era isso.

Ajudem a manter o blog comecem suas compras no submarino através dos links do blog. Você paga o mesmo preço.

Bugs e falhas de segurança

Posted on fev 22, 2009 under Segurança | No Comment

Erros em softwares estão por toda parte. Independente de quanto é gasto no seu desenvolvimento, a sonda enviada à Marte pela NASA que custou $165 milhões de dólares, colidiu em Marte por causa de um erro na conversão das unidades de medida[1].
Como todos nós sabemos a “Complexidade é inimiga da segurança”, os softwares usados atualmente são muito complexos conforme mostrado na tabela 1[4].

Software Linhas de Código
Windows XP 40 milhões
OpenOffice.org ~ 10 milhões
Boeing 777 7 milhões
Linux kernel 2.6.0 5.2 milhões

Tabela 1

Uma estimativa conservadora é que exista 5 bugs por 1000 linhas de código LOC[3]. Um simples computador tem 3000 arquivos executáveis, sendo que cada executável tenha em média 10.000 mil linhas de código, portanto terá 50 bugs, o quê implica em aproximadamente 150.000 mil bugs em um simples computador. Estendendo esse cálculo para uma rede corporativa com 6000 hosts, iremos encontrar 900 milhões de falhas em software. Claro que grande parte desses bugs serão repetidos, mas se estimarmos que 10% podem ser explorados remotamente teremos “somente” 90 milhões de falhas de segurança na rede.
Infelizmente não tem como eliminar as falhas de software de uma vez por todas, o que se pode fazer é minimizar os riscos. Na área de segurança devemos ser pessimistas, sabemos que as falhas de software sempre irão existir. O melhor que se pode fazer é gerenciar o risco de forma efetiva tentando minimizar os efeitos.
Analisando os servidores Linux podemos aumentar a segurança instalando somente os pacotes necessários, por exemplo, se a função do servidor é ser um banco de dados não precisamos instalar o servidor X e os pacotes gráficos. Uma medida simples como essa aumenta bastante a segurança, ou seja, reduzimos os pacotes por consequência reduzindo os bugs.
Já os usuários do sistema operacional windows, são os que mais tem sofrido com os bugs, pois, as pragas virtuais são desenvolvidas para explorar falhas criticas. Medidas simples como as mencionadas na “Cartilha de Segurança para Internet”, resolve uns 80% dos casos, muitas técnicas usadas para infecção de computadores pessoais com pragas virtuais, são extremamente manjadas, mas mesmo assim ainda tem gente que cai de maduro, pois as estatísticas continuam crescendo.
Portanto notamos que se mantermos a simplicidade tanto no servidor quanto nas máquinas dos usuários, conseguiremos minimizar grande parte dos problemas causados por bugs ou falhas de software relacionado a segurança, como diz o Zen da linguagem Python “Simple is better than complex”.
Pense nisso, veja no painel de controle de seu computador, se todos os softwares instalados são necessários, depois entre no windows update para verificar novas atualizações, e para quem usa Linux como eu, rode um “netstat -vantu” e verifique se todos os serviços são necessários.

Referências

[1] D. Isbell, M. Hardin, and J. Underwood, Mars climate team finds likely cause of
loss, at http://www.iki.rssi.ru/jplmirror/mars/msp98/news/
mco990930.hhtml
[2] Cryptographer’s Panel, RSA Conference 2004, see http://www.cs.sjsu.
edu/faculty/stamp/papers/tripreports/RSA04.html
[3] J. Viega and G. McGraw, Building Secure Software , AddisonWesley, 2002.
[4] “Source lines of code.” Wikipedia, The Free Encyclopedia. 19 Nov 2008, 12:01 UTC. 21 Nov 2008 .

Mais uma Falha grave no IE(internet Explorer)

Posted on dez 16, 2008 under Segurança | No Comment

Uma recente falha no Microsoft Internet Explorer 7.0, permite que um atacante, tome o controle do computador da vítima, podendo executar qualquer ação como, por exemplo, roubar senhas, …..

Segundo a Microsoft, esta nova vulnerabilidade afeta todos as versões do Internet Explorer.

A Microsoft sugere que os usuários tomem as seguintes medidas:

  • Modificar as configurações de segurança para o nível mais alto.(Ferramentas/Opções da Internet)
  • Trocar para um usuário do windows com privilégios mínimos.
  • Com o IE7 ou 8 no Vista, acionar o modo de Proteção
  • Garantir que seu pc esteja atualizado
  • Manter o anti-virus e anti-spyware atualizado

Por enquanto, não foi lançada nenhuma correção para a falha.

Para mim a melhor sugestão é instalar o Firefox, é  navegar mais tranqüilo. Pelo menos por enquanto!!. :)

Mais informações:Microsoft Security Advisory (961051)
Fonte:Serious security flaw found in IE

Artigo na Linux Magazine

Posted on nov 26, 2008 under Segurança | No Comment

Pessoal, publiquei um artigo na Linux Magazine ed. 48 intitulado Regras de Conduta. O intuito deste artigo é aplicar o princípio do menor privilégio utilizando Posix Capabilities, que pode ser lido online através deste link. Como complemento desse artigo também melhorei o módulo do kernel que verifica as capacidades exigidas de um processo, o código fonte do módulo e como usar pode ser acessado no post Módulo Kernel Capable discovery.

Saúde.

Módulo Kernel Capable discovery

Posted on nov 16, 2008 under Segurança | 1 Comentário

Posix capabilities permite que as capacidades do super usuário root sejam delegadas a binários, possibilitando que usuários comuns possam executar um serviço. Usando esse recurso de forma correta pode-se executar serviços utilizando somente as capacidades mínimas, ao contrário de executar com todos os privilégios do root.

Publiquei um artigo na revista Linux Magazine Ed. 48 mostrando como usar Posix Capabilities para rodar serviços como: Samba, Dns e apache. Reduzindo os chances de acontecer um ataque de buffer overflow, onde se consiga abrir um terminal de super usuário.

Para descobrir as capacidades exigidas pelos serviços reescrevi o módulo de kernel capable_probe desenvolvido originalmente por Serge E. Hallyn. Na primeira versão usei jprobe ao invés de kprobe, fiz uma associação entre o valor numérico e a string. Ex. 21:CAP_SYS_ADMIN. Porém, esse código pode encher os logs do sistema, pois captura todos os processos que estão rodando. Para sanar o problema, reescrevi o módulo para que aceite como parâmetro o processo que se deseja monitorar, reduzindo dessa forma as mensagens duplicadas no log.

Download do módulo

wget http://petryx.blogrs.com.br/capable_discovery-0.1.0.tar.bz2

Instalação

tar -xjvf capable_discovery-0.1.0.tar.bz2
cd capable_discovery-0.1.0
make
make install

Utilização

Por exemplo, queremos descobrir qual as capacidades exigidas para rodar o comando ping.

modprobe capable_discovery catch=ping
ping 127.0.0.1

Em outro terminal

tail -f /var/log/messages
localhost Module capable_discovery inserted for discover the capabilities of "ping" process
localhost capability 21=CAP_SYS_ADMIN for ping
localhost capability 13=CAP_NET_RAW for ping
localhost capability 7=CAP_SETUID for ping
localhost capability 21=CAP_SYS_ADMIN for ping
localhost capability 21=CAP_SYS_ADMIN for ping

Como podemos ver o ping precisa das capacidades 7,13,21

Após usar o módulo devemos removê-lo com o seguinte comando:

rmmod  capable_discovery

Confirmando a remoção do módulo irá aparecer nos logs a seguinte mensagem:

Nov 16 11:57:06 localhost Module capable_discovery unregistered

Para monitar outro processo o módulo deve ser recarregado passando como parâmetro o nome do processo.

Qualquer dúvida,sugestão, crítica ou elogio, deixe um comentário.

Rastreando Laptop Roubado

Posted on set 24, 2008 under Segurança | No Comment

Hoje em dia a venda de laptops superou os desktops. Mas, cada vez mais tem sido alvo de desejo dos ladrões.
Este post tem a intenção de mostrar o aplicativo Adeona que tem a função de rastrear o uso do laptop e aumentar as chances de ser recuperado pela polícia.
O Adeona é software livre disponível para Windows, Linux, Mac OS. O aplicativo é executado em background sileciosamente, coletando informação sobre o IP interno, IP externo através de sites como www.meuip.com.br, informação dos roteadores através do traceroute, o nome da rede que está conectado e se disponível uma foto através da câmera acoplada do laptop. Os dados são criptografados e armazenados em um cache local. Um upload com os dados é feito para uma rede decentralizada como OpenDHT.

Claro que um ladrão com acesso físico ao laptop pode formatar o disco antes de usar o computador, usá-lo desconectado da internet ou simplesmente desabilitar o serviço. Nesse caso não existe nenhuma ferramenta que possa ajudar nem as comerciais.

Mas todos nós sabemos que alguns ladrões, mal sabem usar um laptop e irão conectar na internet, procurar por arquivos que lhe interessem. Então a ferramenta entra em uso.

Detalhes sobre como instalar podem ser encontrados na documentação do projeto.

O projeto Adeona é desenvolvido na Universidade de Washington. Se tiver interesse de saber mais detalhes sobre o projeto os criadores escreveram um artigo descrevendo o funcionamento detalhadamente.

Tomará que muitos de nós tenham sorte de nunca ter um laptop perdido ou roubado..

Referência:

http://www.linux.com/feature/148197
http://adeona.cs.washington.edu/index.html

Ataques a gerenciadores de pacotes

Posted on jul 14, 2008 under Segurança, Sem categoria | No Comment

Para corrigir bugs e falhas de segurança recorremos as atualizações fornecidas pelos gerenciador de pacote da distribuição que utilizamos.
Mas se o gerenciador de pacotes não é seguro !!

Gerenciadores de pacotes rodam normalmente com acesso irrestrito, ou seja, como root para permitir modificação críticas no sistema. O gerenciador de pacote afeta o sistema inteiro e torna-se vital para a segurança e bom funcionamento do mesmo.

A universidade de Arizona analisou 10 gerenciadores de pacotes (APT, YUM, YaST, etc.).
E descobriu que é possível realizar um ataque conhecido como Replay Attacks.

Com esse ataque um invasor pode reproduzir corretamente as assinaturas dos pacotes ou metadados a partir de uma versão anterior. Fazendo com que os usuários instalem um pacote com BUG para o invasor explorar. Podendo abrir backdoors, ler ou apagar arquivos, sem comprometer senhas ou chaves de segurança.

Como se proteger

  • Usar Repositórios Confiáveis:. Use somente mirrors que pertencem a organização de confiança. Não escolha os repositórios randomicamente em uma lista de mirrors.
  • Atualiza manualmente seus sistemas (local e mirror caches):. Conheça o pacote e descubra quando as atualizações disponíveis e quais devem ser as versões. Verifique e instale manualmente os pacotes atualizados ao invés de utilizar atualizações automáticas.
  • Use repositórios com metadados assinados: Se o gerenciador de pacotes ou a distro ainda não assina os metadados, mas apenas pacotes, pelo menos exiga pacotes assinados até suportar metadados assinados.
  • Use HTTPS para comunicar com o mirror:Infelizmente suporte a HTTPS geralmente só está disponível para suporte pago (mas só protege contra um ataque conhecido como man-in-middle, não protege contra mirrors maliciosos).

Segundo a universidade do Arizona o problema pode ocorrer em ferramentas como yum e apt.

Referências:
Attacks On Package Managers
Study: Attacks on package managers

Transferindo dados com segurança

Posted on jul 09, 2008 under Dicas Linux, Segurança, Tutoriais | 1 Comentário

Segurança na troca de mensagens e arquivos está se tornando cada vez mais necessário para manter nossa privacidade ou algum projeto confidencial. Encontrei um tutorial em vídeo no linux journal o tutorial é em inglês mas é possível seguir os passos e aprender a usar o GnuPG e PGP.

Muito bom vale a pena assistir.
Parte 1

Parte 2

Pessoal assinem os feed do blog é de graça.