28 de outubro de 2008

Testes de Segurança de Software (Tech-Ed 2008)

A minha palestra sobre segurança em desenvolvimento no tech-ed me surpreendeu! Primeiro, pelo número de pessoas, mesmo acontecendo no mesmo horário que a do Steve Riley, a sala lotou. Segundo, pelo interesse dos participantes. Ano passado tinhamos 3 palestrantes falando sobre segurança em desenvolvimento e poucas pessoas participaram. Estou disponibilizando os slides da minha palestra!

27 de outubro de 2008

Uma captcha diferente

Não sou um grande fã das implementações de CAPTCHA (Completely Automated Public Turing test to tell Computers and Humans Apart). Geralmente elas são tão complexas quanto o acrônimo. São um terror para algumas pessoas. Acessibilidade é péssima!

Agora eu achei essa solução interessante, letras grandes e qualquer pessoa consegue facilmente "resolver", ainda temos o problema de acessibilidade com deficientes visuais que utilizam softwares para leitura, mas é mais interessante que as tradicionais. A solução chama-se grapcha e se baseia na biblioteca Graphviz. Você tem que começar a ler o desafio de start a stop. Dê uma olhada no gráfico gerado pela palavra Wagner.

Grapcha

26 de outubro de 2008

Clickjacking

Na última conferência AppSec promovida pela OWASP em New York, Jeremiah Grossman e Robert Hansen aka RSnake, sacudiram a conferência após o cancelamento da apresentação onde eles iriam mostrar uma prova de conceito de uma vulnerabilidade que ficou conhecida como Clickjacking (sequestro de clique).

Basicamente a vulnerabilidade possibilita que alguém mal intencionado inclua um botão falso, que leva o usuário a clicar em um link que ele acha ser confiável, mas está sendo manipulado. Eles disponibilizaram um vídeo onde é possível visualizar o PoC. Prestem atenção no ponteiro do mouse!


Clickjacking Camjack Demonstration from Jeremiah Grossman on Vimeo.
Segundo os pesquisadores, é possível explorar a falha por características dos browser e do flash player. Uma solução alternativa para o problema é utilizar o plugin No-Script.

24 de outubro de 2008

Wordpress é exemplo

Mais uma vez o wordpress dá um exemplo de projeto confiável. Sempre que alguma vulnerabilidade em alguma função ou biblioteca que ele utiliza é descoberta, rapidamente o projeto solta uma atualização.

O motivo da versão 2.6.3 do wordpress foi uma falha crítica no snoopy, biblioteca que o wordpress utiliza para mostrar as últimas referências no dashboard. Detalhe, a versão do wordpress foi lançada poucas horas após a publicação da falha no snoopy.

Projetos open source, aprendam com o wordpress! Think Security First!

22 de outubro de 2008

Palestra - Segurança em Desenvolvimento de Software

Ontem eu tive a oportunidade de realizar uma palestra no forum de tecnologia promovido pela UNIFRAN (Universidade de Franca). Gostaria de agradecer a todos os organizadores e presentes. Disponibilizei a palestra para acesso via slideshare.

Um pouco sobre o ratproxy

O ratproxy é aquela ferramenta que a Google disponibilizou e com isso conseguiu o hype de sempre. Eu queria escrever algo sobre o código fonte, como funciona as análises que a ferramenta faz, mas como não vi nada se quer sobre a compilação e utilização, decidi fazer um tutorial de compilação e utilização.

O cygwin

Eu uso no meu dia a dia uma máquina com sistema operacional windows, apesar de ter uma distro linux (andlinux) também rodando na máquina. Mas quem não está disposto a fazer grandes alterações eu recomendo o cygwin. Com ele eu tenho as principais ferramentas do linux direto no prompt do windows.

Vamos usar os recursos do cygwin para usar o ratproxy. A instalação é bem simples, apenas tenha certeza de instalar os pacotes necessários. Para compilar e usar o ratproxy é necessário os seguintes pacotes:

1 - make (localizado na biblioteca Devel)
2 - gcc-core (localizado na biblioteca Devel)
3 - openssl-dev (localizado na biblioteca Devel)
4 - openssl - The Open SSL runtime enviroment (localizado na biblioteca Libs)


Estes pacotes são suficientes para compilar e executar o ratproxy. Além destes pacotes é necessário baixar e substituir o flare que vem com o ratproxy por este compilado pra windows. O flare é uma solução usada pelo ratproxy para análise de arquivos swf (flash). Basicamente ele transforma o swf em um arquivo texto que pode ser analisado pelo ratproxy.

Compilando o ratproxy

Feito as instalações dos pacotes necessários vamos alterar o arquivo makefile e compilar o ratproxy. O makefile é apenas um arquivo que contém todos os critérios para que a compilação seja simplificada, basta rodar um make no diretório.

O makefile ficará com as seguintes configurações:

    PROGNAME = ratproxy
    CFLAGS     = -Wall -O3 -D_GNU_SOURCE
    LDFLAGS  = -lcrypto -lssl

Agora para compilar apenas navegue até o diretório onde o fonte do ratproxy se encontra e dê o seguinte comando: make

Com isso "automagicamente" irá aparecer um arquivo ratproxy.exe no diretório. Agora é só utilizar.


Utilizando o ratproxy


syntax de comando:

Usage: ratproxy [ -w logfile ] [ -v logdir ] [ -p port ] [ -d domain ] [ -P host:port ] [ -xtifkgmjscael2XCr ]
   -w logfile - write results to a specified file (default: stdout)
   -v logdir - write HTTP traces to a specified directory (default: none)
   -p port - listen on a custom TCP port (default: 8080)
   -d domain - analyze requests to specified domains only (default: all)
   -P host:port - use upstream proxy for all requests (format host:port)
   -r - accept remote connections (default: 127.0.0.1 only)
   -l - use response length, not checksum, for identity check
   -2 - perform two, not one, page identity check
   -e - perform pedantic caching headers checks
   -x - log all XSS candidates
   -t - log all directory traversal candidates
   -i - log all PNG files served inline
   -f - log all Flash applications for analysis (add -v to decompile)
   -s - log all POST requests for analysis
   -c - log all cookie setting URLs for analysis
   -g - perform XSRF token checks on all GET requests
   -j - report on risky Javascript constructions
   -m - log all active content referenced across domains
   -X - disruptively validate XSRF, XSS protections
   -C - try to auto-correct persistent side effects of -X
   -k - flag HTTP requests as bad (for HTTPS-only applications)
   -a - indiscriminately report all visited URLs
  
Rodando o proxy:

O ratproxy funciona como um proxy, assim enquanto você navegua na aplicação ele vai fazendo a análise das requisições.

Para iniciar o ratproxy digite uma das 3 opções sugeridas no prompt de comando. Váriações podem ser usadas de acordo com a syntax

  1) Low verbosity
 
  -v c:\cygwin\bin\ratproxy -w ratproxy.log -d siteasertestado.com -lfscm
 
  2) High verbosity

  -v c:\cygwin\bin\ratproxy -w ratproxy.log -d siteasertestado.com -lextifscgjm
 
  3) Active testing
 
  -v c:\cygwin\bin\ratproxy -w ratproxy.log -d siteasertestado.com -XClfscm
 
Configurando o browser e utilizando a ferramenta

O ratproxy usa a porta 8080 como default. Então configure o browser para usar um proxy no localhost porta 8080.

Agora vá até o browser e navegue por todas as páginas que você deseja analisar. Enquanto você navega o ratproxy está analisando e armazenando no arquivo de log definido na opção anterior.

Analisando os resultados


Após a navegação feche o prompt que iniciou o ratproxy. O log de análise está no diretório determinado no comando de execução.

Para gerar um relatório mais amigável o google disponibilizou um script para gerar um relatório em html.

No prompt de comando execute o seguinte comando: sh ratproxy-report.sh ratproxy.log > report.html

Pronto, você já tem uma boa ferramenta de análise de aplicações web a sua disposição!

17 de outubro de 2008

You Shot The Sheriff 2.0

O ano passado eu tive o privilégio de ser um dos convidados da primeira versão de um evento bastante interessante e totalmente diferente dos eventos convencionais. O evento irá mais uma vez contar com palestrantes de renome nacional e internacional tratando de temas técnicos e gerencias de segurança da informação.



A Conviso será uns dos patrocinadores do evento e conta com a presença de vocês. Mais informações no site do evento.

7 de outubro de 2008

O Processo de SDL da Microsoft e aplicações WEB

Quem estuda o processo de SDL (Security Development Lifecycle) da Microsoft, logo percebe que ele se refere muito ao modelo de desenvolvimento client-server e explora o tratamento de vulnerabilidades como Buffer Overflow (ou Buffer Overrun na Microsoft). Muitos se perguntam, e o desenvolvimento de aplicações WEB?

Sim, a Microsoft também trata a segurança de aplicações WEB no seu SDL! Este artigo trás alguns detalhes sobre.

6 de outubro de 2008

OWASP e eventos

Querido Diário. Brincadeiras a parte, prometo que este será o último post sobre eventos e agenda.

No dia 21 de Outubro as 21hrs. eu estarei dando uma palestra sobre segurança em desenvolvimento de software na UNIFRAN (Universidade de Franca). Já em Novembro, eu, Eduardo Neves e Leonardo Cavallari vamos para o OWASP EU Summit 2008 em Portugal. Além de nós que vamos como líderes de projetos e participando da organização, o meu amigo Lucas Ferreira vai apresentar um curso de técnicas de segurança em desenvolvimento de sistemas java. O treinamento é uma versão enxuta do treinamento que o Lucas vai ministrar junto com a Conviso em São Paulo e Brasília.

3 de outubro de 2008

Técnicas de Segurança no Desenvolvimento de Sistemas em Java

A Conviso IT Security oferece o curso:


Técnicas de Segurança no Desenvolvimento de Sistemas em Java



São Paulo: 10 e 11 de novembro
Brasília: 13 e 14 de novembro

Instrutor: Lucas de Carvalho Ferreira


Profissional com mais de 10 anos de experiência em segurança da informação, tendo atuado em grandes instituições públicas e privadas. Possui ampla formação acadêmica, com mestrado em Segurança da Informação pela Universidade de Campinas (Unicamp) e artigos publicados no Brasil e no exterior.


Mais informações no site da Conviso web site

2 de outubro de 2008

Palestra no tech-ed 2008

O evento acontece durante os dias 14 a 16 de Outubro e irei ministrar a palestra: "Como fazer revisão e testes de código para identificar problemas (bugs) de segurança". Irei abordar técnicas e farei demonstraçòes de ferramentas que podem auxiliar no processo de testes de segurança em software.

Outras palestras de segurança

  • Introdução ao Microsoft Forefront Code Name "Stirling" - Nível 300

  • TMG (Threat Management Gateway), o próximo Firewall Microsoft: Visão Técnica - Nível 300

  • Como fazer revisão e testes de código para identificar problemas (bugs) de segurança - Nível 300

  • Introdução ao Forefront Client Security 2.0 - Nível 300

  • O que é o IAG 2007 e Como Ele Protege Meu Ambiente - Nível 300

  • Windows Server 2008 - Por que é Realmente Seguro (Análise Técnica) - Nível 200

  • Defesa em Profundidade ? O NAP (Network Access Protection) Pode Ajudar ! - Nível 300

  • [Sessão de Almoço] Implementação de Extranets Seguras com o Microsoft Forefront Security for Sharepoint - Nível 300

  • 10 Passos para Manter-se Protegido ou.... Seja D0min@d0! - Nível 200

  • Privacidade: Onde, Como e Por quê! - Nível 300

  • Estamos no Século 21: É Hora de Jogar Fora seus Gateways Medievais! - Nível 300


Sobre o tech-ed 2008

Tech-ed é uma conferência organizada pela Microsoft, cujo principal objetivo é permitir a disseminação, discussão e a troca de conhecimento sobre tecnologia e os produtos da Microsoft entre os participantes e também entre as empresas envolvidas no evento. Umas das principais atrações é a presença de Steve Balmer, o site do evento pode ser acessado em http://www.teched.com.br.

30 de setembro de 2008

Nova onda de browsers e as máquinas virtuais

Com o lançamento do Chrome e das novas versões do Firefox e Internet Explorer, um assunto que foi bastante discutido foi a performance das engines de processamento/interpretação de javascript.

Os interpretadores mudaram muito e dentre as principais mudanças está a transformação de javascript direto para linguagem de máquina. Este post do Rodrigo Kumpera mostra uma outra característica, agora os interpretadores são baseados em registradores e não em pilha como as máquinas virtuais tradicionais.

Segundo o post, apesar do interpretador exigir um espaço maior em memória, ele leva vantagem sobre as máquinas virtuais baseadas em pilha. O post é bastante interessante, recomendo a leitura.

11 de setembro de 2008

Gerador de números aleatórios

Algum tempo atrás o Stefan Esser divulgou uma falha na implementação das funções que geram números aleatórios em php (rand e mt_rand). O problema está na implementação da biblioteca. Basicamente o problema é a fraqueza na "semente" que gera o número aleatório.

A questão é, quantos projetos em php usam estas funções no processo de gerar senhas, cookies, passphrase, entre outras caracteristicas de segurança? Muitos! O bom exemplo veio mais uma vez do wordpress.

Ele acaba de lançar a versão 2.6.2 que substitui a utilização do m_rand por uma função desenvolvida por eles. Confira o trac!

Eles não só tratam essa questão como outra também descrita pelo Stefan (MySQL and SQL Columm Truncation). No trac você pode ver as alterações e o motivador (um exploit divulgado no milw0rm).

28 de agosto de 2008

Palestra na H2HC

A palestra irá abordar técnicas de exploração em Aplicações Web, onde serão apresentados testes que vão além de vulnerabilidades como SQL Injection e XSS (Cross Site Scripting), e englobam recursos como AJAX (Asynchronous Javascript And XML), JSON (JavaScript Object Notation) e XML-RPC (XML Remote Procedure Calling).

Sobre o H2HC 2008
Hackers To Hackers Conference (H2HC) é uma conferência organizada por pessoas que trabalham ou que estão diretamente envolvidas com pesquisas e desenvolvimento na área de segurança da informação, cujo principal objetivo é permitir a disseminação, discussão e a troca de conhecimento sobre segurança da informação entre os participantes e também entre as empresas envolvidas no evento. O site do evento pode ser acessado em http://www.h2hc.org.br.

26 de agosto de 2008

Segurança em JAVA

O meu amigo Lucas Ferreira disponibilizou um portal onde ele descreve técnicas/recursos de segurança em ambiente JAVA. Estudo altamente recomendado.

Os seguintes tópicos são abordados:

  • Validar os dados de entrada

  • Proteger a aplicação web contra cross site scripting

  • Evitar "command injection"

  • Tratar corretamente todos os erros da aplicação

  • Validar a origem das requisições

  • Usar objetos imutáveis

  • Limitar o acesso às variáveis, classes e métodos

  • Tornar todos os métodos e classes “final”

  • Não usar o escopo de pacote para proteger a classe contra acessos indesejados

  • Impedir a clonagem dos objetos

  • Usar classes não serializáveis

  • Usar classes não desserializáveis

  • Não armazenar informações confidenciais no código do programa

  • Não comparar classes por nome

  • Não usar classes internas (“inner class”)

  • Usar os mecanismos de autenticação dos contêineres J2EE

  • Usar sockets com criptografia SSL

  • Proteger os arquivos criados

  • Especificar o diretório onde serão criados os arquivos temporários

  • Verificar condições de “overflow”, “underflow” e conversões de tipos numéricos

  • Declarar as variáveis estáticas públicas como “final”

  • Não armazenar vetores recebidos como parâmetros

  • Apagar dados críticos da memória

  • Controle de acesso em aplicações web

  • Usar os mecanismos de tratamento de exceções

  • Verificar métodos nativos (“native methods”)

  • Validar unboxing para tipos primitivos

25 de agosto de 2008

Modelagem de Ameaças e Star Wars

Brian Williams fez uma apresentação sobre Modelagem de ameaças fazendo uma referência a Star Wars. Não sou nenhum fan-boy de Star Wars, mas a apresentação ficou muito boa.

Parte 1



Parte 2



Parte 3



Fonte: Dana Epp's

The Developer Highway Code

Está disponível gratuitamente para download o livro: The Developer Highway Code.
"To build software that meets your security objectives, you must integrate security activities into your software development lifecycle. This handbook captures and summarises the key security engineering activities that should be an integral part of your software development processes.

These security engineering activities have been developed by Microsoft patterns & practices to build on, refine and extend core lifecycle activities with a set of security-specific activities. These include identifying security objectives, applying design guidelines for security, threat modelling, security architecture and design reviews, security code reviews and security deployment reviews."

21 de agosto de 2008

Database Proxy como ferramenta para segurança de aplicações

Quando pensamos em soluções de segurança para banco de dados, quase sempre pensamos em soluções de missão crítica e de grande porte. Uma excelente ferramenta para isso é a Guardium.

Mas e as aplicações que dependem de um database como MySQL? Solução simples, sem custos de licença (com algumas exceções) e que suporta muito bem inúmeras soluções web.

A comunidade ficou assustada quando foi anunciada a compra da empresa que o desenvolvia pela SUN. Logo as coisas começaram a melhorar na minha opinião, o fonte foi disponibilizado via repositório, antes não era. E recentemente alguns desenvolvedores ao ver que a estratégia da SUN é desenvolver uma solução mais robusta logo fizeram um fork do projeto e criaram o Drizzle.

Soluções para databases como o MySQL não são comuns. Uma grata surpresa pra mim foi o trabalho de Stefan Esser, ele desenvolveu um script em Lua que transforma o MySQL-Proxy em uma ferramenta de detecção de SQL Injection baseada em heurística.

O MySQL-Proxy é um proxy de banco de dados para ser usado com o MySQL. Funcionando como um proxy ela possibilita que seja feito não só um monitoramento mas tratamento e manipulação de requisições ao database.

A parte interessante deste proxy e que foi usado pelo Stefan Esser é a engine de scripts. A engine possibilita que você desenvolva scripts em Lua para interagir com as requisições que são feitas ao database.



O script desenvolvido por Esser está disponível aqui e na página do MySQL Forge também é possível encontrar outros scripts e colaborar.

18 de agosto de 2008

IP (Internet Protocol) Security Assessment

O CPNI (Centre for the Protection of National Infrastucture) do Reino Unido acaba de lançar um Guideline para análise de segurança no protocolo IP (Security Assessment of the internet Protocol). O guide além de detalhar o funcionamento do protocolo, demonstra características que tornam o protocolo inseguro.

Além deste guide outros paper/guides podem ser acessado aqui.

16 de agosto de 2008

Falha em DNS ilustrada

Passado o "vuco-vuco" e a apresentação do Dan Kaminsky sobre a falha crítica em implementações de DNS, foi lançado um guia ilustrado demonstrando características do DNS e explicando a falha.


Excelente material, esse guia se junta a outro material excelente sobre  IPsec.