A Conviso IT Security oferece no primeiro trimestre de 2009, os cursos "Internet Hacking Techniques" e "Web Hacking Techniques" em várias capitais brasileiras:
Internet Hacking Techniques
Ensina o processo de análise de vulnerabilidades técnicas em redes de dados, incluindo técnicas para teste de intrusão (pen-test), scan de vulnerabilidades, testes de resistência de senhas e análise do controle de acesso a dados.
Belo Horizonte: 12, 13 e 14 de janeiro
Manaus: 19, 20 e 21 de janeiro
Recife: 21, 22 e 23 de janeiro
Curitiba: 26, 27 e 28 de janeiro
Web Hacking Techniques
Ao entender as principais vulnerabilidades em aplicações web e como evitar que elas sejam criadas, os alunos deste curso aprendem a revisar a segurança das aplicações web, além de serem capacitados em práticas de programação segura e no uso de ferramentas Open Source para testes de segurança e criação de medidas de proteção neste modelo de aplicação.
Belo Horizonte: 15 e 16 de janeiro
Manaus: 23 e 24 de janeiro
Calendário dos Cursos: http://convisosec.com/yahoo_site_admin1/assets/docs/CSTR_Calendario_2009_V2.35175159.pdf
15 de dezembro de 2008
11 de dezembro de 2008
Browser Security Handbook
O Google lançou um book em versão wiki que, descreve várias características de segurança de diversos browsers. A wiki é atualizada constantemente e é um material interessantíssimo para quem deseja conhecer um pouco mais dos "internals" dos browsers.
As informações são valiosas para quem deseja ir além do debug.print/echo POST/GET no desenvolvimento web. Recomendo fortemente a parte 3 - Experimental and legacy security mechanisms.
O conteúdo se mostrou bastante imparcial e não é voltado apenas para o Chrome do Google.
As informações são valiosas para quem deseja ir além do debug.print/echo POST/GET no desenvolvimento web. Recomendo fortemente a parte 3 - Experimental and legacy security mechanisms.
O conteúdo se mostrou bastante imparcial e não é voltado apenas para o Chrome do Google.
9 de dezembro de 2008
php, Estefan Esser, e a saga
No último dia 04/12/2008 Stefan Esser, divulgou um advisory que anunciava uma falha no método ZipArchive::extractTo() do php 5.2.6. A falha é um Path Traversal e extremamente simples de explorar. Para explorar a falha é necessário que o sistema utilize o método ZipArchive::extractTo() para upload e fazer a descompressão automática (Muitos CMS utilizam isso). Para quem necessita deste recurso o único meio de tratamento é upgrade para versão 2.5.7. Mais detalhes sobre o advisory estão publicadas neste link.
No Domingo 07/12/2008 o mesmo Stefan Esser, fez alguns comentários sobre os backports relacionados a segurança e disse para tomar cuidado com o upgrade, pois o upgrade para a versão 5.2.7 irá quebrar a diretiva de magic_quotes. Qual o problema disto? Acreditem, muitas aplicações dependem única e exclusivamente disto para tratar problemas de SQL Injection e afins.
Já hoje dia 09/12/2008 novamente ele, anunciou um projeto bem interessante que ele vinha trabalhando e disponibilizou a primeira versão para download. O projeto chama ext/usim e permite que você teste o upgrade para versões mais recentes, assim você pode testar se a sua aplicação irá se comportar perfeitamente nesta versão.
Será que até o final da semana ele vai soltar mais uma?
No Domingo 07/12/2008 o mesmo Stefan Esser, fez alguns comentários sobre os backports relacionados a segurança e disse para tomar cuidado com o upgrade, pois o upgrade para a versão 5.2.7 irá quebrar a diretiva de magic_quotes. Qual o problema disto? Acreditem, muitas aplicações dependem única e exclusivamente disto para tratar problemas de SQL Injection e afins.
Já hoje dia 09/12/2008 novamente ele, anunciou um projeto bem interessante que ele vinha trabalhando e disponibilizou a primeira versão para download. O projeto chama ext/usim e permite que você teste o upgrade para versões mais recentes, assim você pode testar se a sua aplicação irá se comportar perfeitamente nesta versão.
Será que até o final da semana ele vai soltar mais uma?
4 de dezembro de 2008
Coisas que me irritam e espero que mudem
Entre um dia corrido e outro, vou anotando algumas coisas. Quem me conhece sabe, minha área de trabalho é cheia de arquivos texto onde escrevo de tudo, uns comandos que estou começando a usar, um script, algumas referências para ler com mais calma e também coisas do dia-a-dia.
Entre as coisas que venho observando há anos e sempre faço uma anotação ou outra é sobre o mercado de segurança da informação. Está certo que eu sou um pouco mais rabugento que a média, mas muita coisa é de irritar, as anotações servem como válvula de escape. As vezes leio algo ou passo por uma situação e a primeira coisa que vem a cabeça é: vou escrever um post e soltar o verbo, mas acabo anotando e observando um pouco mais. É verdade, as vezes escapa e acabo falando demais. Hoje eu decidi falar sobre uma coisa que me incomoda profundamente.
Profissionais que adoram falar sobre código de ética, classificação da informação, política de segurança e plano de continuidade de negócios
Mas Wagner, você sempre defendeu estes pontos? Sim, eu sempre defendi e acho super importante estes pontos, mas, (a quem diga que após um mas sempre vem uma crítica. :) ) eu estou cansado de encontrar "Grandes" profissionais do mercado de segurança da informação que, nunca implementaram nada, não sabem do que falam e se colocam em posição de sênior e superior a todos que não falam as palavras da moda e não lêem revistas de negócio. Vou dar umas dicas para quem deseja ser este profissional altamente desejado e merecedor de bons cargos e salários.
E a regra de ouro é: nunca participe de listas de discussões, não tenha um blog, não tenha opiniões fortes. Isso é exposição demais para um "Grande" profissional como você. Vai que alguém descobre que você é um charlatão, que tudo que você aprendeu nos livros é meia dúzia de palavras e conceitos.
Sobre os temas mais citados em gestão de segurança da informação, IMHO é bem simples:
Código de ética: ou você tem ou não tem. Se você precisa a todo momento ficar falando sobre ética é porque você almeja muito e não tem. Vejo muitos profissionais falando o tempo todo, citando, escrevendo, enormes códigos de ética e na primeira oportunidade o "Gersão" surge dentro deles e a ética só vale para os outros;
Classificação da Informação: super importante e um tema muito interessante, mas quem consegue aplicar da forma como os "Grandes" falam? Escrever políticas e colocar rótulos em algumas informações não irá mitigar nenhum risco;
Plano de Continuidade de Negócios: um dos temas que mais me fascina, me dedico bastante a aprender e estudar o tema, porém, na maioria das vezes só tenho contato com BCP (Bullshit Compliance Plan). Tudo não passa de discurso, um monte de papel sem sentido e algum mané dizendo que vai salvar o mundo com este monte de papel.
Eu acredito muito em segurança da informação, já vi muitos casos de sucesso e conheço grandes profissionais, senão fosse isto eu já havia desistido. Ainda sou Brasileiro e não desisto nunca, acredito na "queda das mascaras" e na maturidade do mercado de segurança da informação e no surgimento de mais Profissionais capacitados e capazes de lidar com todos os riscos que nos assolam todos os dias.
[Update] Resolvi deixar uma coisa bem clara, afinal acho que as interpretações foram diversas. Eu não acredito que todas as pessoas que tomam vinho, se vestem impecavelmente e fumam charutos são charlatonas, a mensagem é bem direta: quem é charlatão que se identifique. Como disse ao Lincoln nos comentários, as pessoas podem ser opostas a estas características e serem charlatonas. Muitos gerentes, executivos em geral gostam de tudo que falei e são responsáveis pelo sucesso de muitas áreas e organizações, estão longe de ser charlatões, se preocupam em ser e não em ter. Apreciem o texto com moderação. :)
Entre as coisas que venho observando há anos e sempre faço uma anotação ou outra é sobre o mercado de segurança da informação. Está certo que eu sou um pouco mais rabugento que a média, mas muita coisa é de irritar, as anotações servem como válvula de escape. As vezes leio algo ou passo por uma situação e a primeira coisa que vem a cabeça é: vou escrever um post e soltar o verbo, mas acabo anotando e observando um pouco mais. É verdade, as vezes escapa e acabo falando demais. Hoje eu decidi falar sobre uma coisa que me incomoda profundamente.
Profissionais que adoram falar sobre código de ética, classificação da informação, política de segurança e plano de continuidade de negócios
Mas Wagner, você sempre defendeu estes pontos? Sim, eu sempre defendi e acho super importante estes pontos, mas, (a quem diga que após um mas sempre vem uma crítica. :) ) eu estou cansado de encontrar "Grandes" profissionais do mercado de segurança da informação que, nunca implementaram nada, não sabem do que falam e se colocam em posição de sênior e superior a todos que não falam as palavras da moda e não lêem revistas de negócio. Vou dar umas dicas para quem deseja ser este profissional altamente desejado e merecedor de bons cargos e salários.
- Gaste boa parte do seu sálario com um bom terno, camisas, abotoaduras e sapatos bem lustrados;
- Leia todos os livros de auto-ajuda e os nacionais de segurança da informação;
- Faça lobby, muito lobby. Vale convidar para fumar charutos (mesmo que você odeie qualquer tipo de coisa parecida com cigarros), degustar vinhos caros (mesmo que você goste mesmo é de uma cerveja bem gelada);
- Fale muito daquela viagem que você fez para Miami e Buenos Aires, isso é chique, (não é tão chique assim, mas é o que você consegue pagar, pois os ternos são caríssimos) os executivos gostam disto;
- Critique a postura alienada dos técnicos que salvam sua pele, garantem o seu salário e lhe passam as informações para montar aquela maravilhosa apresentação "vendendo" sua área. Afinal, o que seria destes técnicos sem todo seu poder de relacionamento inter-pessoal e astúcia com o power point?
E a regra de ouro é: nunca participe de listas de discussões, não tenha um blog, não tenha opiniões fortes. Isso é exposição demais para um "Grande" profissional como você. Vai que alguém descobre que você é um charlatão, que tudo que você aprendeu nos livros é meia dúzia de palavras e conceitos.
Sobre os temas mais citados em gestão de segurança da informação, IMHO é bem simples:
Código de ética: ou você tem ou não tem. Se você precisa a todo momento ficar falando sobre ética é porque você almeja muito e não tem. Vejo muitos profissionais falando o tempo todo, citando, escrevendo, enormes códigos de ética e na primeira oportunidade o "Gersão" surge dentro deles e a ética só vale para os outros;
Classificação da Informação: super importante e um tema muito interessante, mas quem consegue aplicar da forma como os "Grandes" falam? Escrever políticas e colocar rótulos em algumas informações não irá mitigar nenhum risco;
Plano de Continuidade de Negócios: um dos temas que mais me fascina, me dedico bastante a aprender e estudar o tema, porém, na maioria das vezes só tenho contato com BCP (Bullshit Compliance Plan). Tudo não passa de discurso, um monte de papel sem sentido e algum mané dizendo que vai salvar o mundo com este monte de papel.
Eu acredito muito em segurança da informação, já vi muitos casos de sucesso e conheço grandes profissionais, senão fosse isto eu já havia desistido. Ainda sou Brasileiro e não desisto nunca, acredito na "queda das mascaras" e na maturidade do mercado de segurança da informação e no surgimento de mais Profissionais capacitados e capazes de lidar com todos os riscos que nos assolam todos os dias.
[Update] Resolvi deixar uma coisa bem clara, afinal acho que as interpretações foram diversas. Eu não acredito que todas as pessoas que tomam vinho, se vestem impecavelmente e fumam charutos são charlatonas, a mensagem é bem direta: quem é charlatão que se identifique. Como disse ao Lincoln nos comentários, as pessoas podem ser opostas a estas características e serem charlatonas. Muitos gerentes, executivos em geral gostam de tudo que falei e são responsáveis pelo sucesso de muitas áreas e organizações, estão longe de ser charlatões, se preocupam em ser e não em ter. Apreciem o texto com moderação. :)
1 de dezembro de 2008
SQL Injection e as funções de escape no php
Acredito que todos que acompanham este blog e até mesmo quem tenha qualquer contato com desenvolvimento WEB saiba o que é um SQL Injection e o que se deve evitar para combatê-lo, porém, todos os dias eu me deparo com técnicas ineficazes para tratamento de ataques de SQL Injection baseados na dupla php e MySQL.
A maioria destas técnicas para tratamento de SQL Injection fazem referência a funções de escape ou o popular magic_quotes do php, porém poucos devem saber que estas técnicas são ineficazes para evitar este tipo de ataque. A simples adição de uma barra invertida (" \ ") em uma string que contenha um apóstrofo (" ' ") não irá eliminar a possibilidade de exploração de ataques baseados em SQL Injection.
As funções de escape mais conhecidas são addslashes() e mysql_real_escape_string(). Estas funções irão fazer a seguinte transformação em uma string.
String normal = 'admin'
String com escape = \'admin\'
Agora o que poucos sabem é que o MySQL possibilita que você faça consultas de caracteres baseados na tabela ascii. Execute no MySQL a query: select ascii('a'); e você terá a o código da letra a que é 97. Agora faça o oposto, execute a query: select char(97); e você terá o caracter a. Isso quer dizer que podemos representar strings SQL usando os códigos ascii. Se usarmos a função concat() podemos montar uma query inteira usando os códigos ascii.
Execute a seguinte query no MySQL:
select concat(char(39), char(104), char(116), char(116), char(112), char(58), char(47), char(47), char(119), char(97), char(103), char(110), char(101), char(114), char(101), char(108), char(105), char(97), char(115), char(46), char(99), char(111), char(109), char(39))
O resultado será:
'http://wagnerelias.com'
Reparem que na string criada usando a função concat não é representado o apóstrofo (" ' "), com isso as funções de escape não teriam efeito algum. Portanto, cuidado com as funções de escape, muitas vezes elas não irão lhe salvar de um ataque de SQL Injection. Sempre que possível use Bind Variables implementando as Prepared Statements do MySQL.
A maioria destas técnicas para tratamento de SQL Injection fazem referência a funções de escape ou o popular magic_quotes do php, porém poucos devem saber que estas técnicas são ineficazes para evitar este tipo de ataque. A simples adição de uma barra invertida (" \ ") em uma string que contenha um apóstrofo (" ' ") não irá eliminar a possibilidade de exploração de ataques baseados em SQL Injection.
As funções de escape mais conhecidas são addslashes() e mysql_real_escape_string(). Estas funções irão fazer a seguinte transformação em uma string.
String normal = 'admin'
String com escape = \'admin\'
Agora o que poucos sabem é que o MySQL possibilita que você faça consultas de caracteres baseados na tabela ascii. Execute no MySQL a query: select ascii('a'); e você terá a o código da letra a que é 97. Agora faça o oposto, execute a query: select char(97); e você terá o caracter a. Isso quer dizer que podemos representar strings SQL usando os códigos ascii. Se usarmos a função concat() podemos montar uma query inteira usando os códigos ascii.
Execute a seguinte query no MySQL:
select concat(char(39), char(104), char(116), char(116), char(112), char(58), char(47), char(47), char(119), char(97), char(103), char(110), char(101), char(114), char(101), char(108), char(105), char(97), char(115), char(46), char(99), char(111), char(109), char(39))
O resultado será:
'http://wagnerelias.com'
Reparem que na string criada usando a função concat não é representado o apóstrofo (" ' "), com isso as funções de escape não teriam efeito algum. Portanto, cuidado com as funções de escape, muitas vezes elas não irão lhe salvar de um ataque de SQL Injection. Sempre que possível use Bind Variables implementando as Prepared Statements do MySQL.
30 de novembro de 2008
Palestra - Tratando as vulnerabilidades do Top10 da OWASP
Nesta sexta-feira dia 28/11 eu palestrei na Php Conference! Obrigado pela presença de todos e estou disponibilizando os slides da palestra.
26 de novembro de 2008
Pen-test by Adobe or Office
Uma prática horrível invadiu o mercado de pen-test, se é que podemos chamar isso de prática. A técnica consiste no envio de arquivos do office ou arquivos pdf com algum tipo de backdoor. Utilizando pura e simplesmente de engenharia social a empresa contratada para testar os controles de segurança envia um arquivo malicioso que, pode ser um currículo em pdf para o RH. Naturalmente alguém irá abrir o arquivo, e após isso é "OWNADO" e o FUD começa, direito a filme e tudo.
Pergunta: que controle você testou com isso? Você apenas irá saber que precisa de uma campanha de conscientização, não terá nenhum tipo de validação dos controles de perímetro da sua rede.

Testes como esse podem ser usados para testar o nível de conscientização de seus usuários, mas nunca como ferramenta de avaliação de controles técnicos. E lamentavelmente muitos acham isso a última maravilha do mercado de segurança, pois, saibam todos que a técnica já não tinha nada complicado e agora ficou mais prático e banal com a implementação desta feature no metasploit 3.2. vejam os exemplos a seguir:
Criando um pdf com backdoor
Criando um arquivo do word com backdoor
Agora faça o seguinte, procure profissionais sérios e competentes para testar seus controles de segurança, não aceite qualquer coisa.
Pergunta: que controle você testou com isso? Você apenas irá saber que precisa de uma campanha de conscientização, não terá nenhum tipo de validação dos controles de perímetro da sua rede.

Criando um pdf com backdoor
Criando um arquivo do word com backdoor
Agora faça o seguinte, procure profissionais sérios e competentes para testar seus controles de segurança, não aceite qualquer coisa.
11 de novembro de 2008
Palestra H2HC 2008
Estou disponibilizando os slides da minha palestra na H2HC deste ano. No site do evento em breve estará disponível os slides de outros palestrantes.
1 de novembro de 2008
Hardening de sessão no PHP
Php é criticado, muitas vezes pwned, mas eu gosto. Acho uma linguagem que lhe dá muitas opções, tem uma grande comunidade, possui vasta documentação (ok, eu sei que a maioria das pessoas nem sabe que isso existe) e a maioria dos projetos open source tem algo em php. O meu envolvimento com php veio fuçando em projetos open source.
Lógicamente que devido a sua popularidade e a possibilidade de fazer qualquer coisa, o php acaba protagonizando coisas horríveis. Já ouviram a expressão: "Arma na mão de macaco"? Isso também acontece com php!
Bom, já dei muita desculpa, gosto de php e pronto!
Eu, tenho lidado com sistemas que possuem muitas falhas de segurança devido a problemas de gestão de sessão, por isso decidi escrever algo sobre as sessões do php.
Até um macaco autista consegue trabalhar com sessões no php, basta olhar o manual: Funções para sessão.
Mas como qualquer função ela merece alguns cuidados, um simples session_start e um session_unset não é suficiente caso você queira garantir a integridade dos dados da aplicação.
A primeira coisa que deve ser feita é realizar algumas configurações que irão aumentar a segurança da gestão de sessão do php. Os seguintes itens devem ser alterados no php.ini:
O nome da sessão
Path onde será armazenado a sessão no servidor
Cookies mais seguros
Apesar da possibilidade de desenvolver algo "cookieless" é mais prático e eficaz fazer algumas configurações para aumentar a segurança dos cookies.
Uma boa prática é você não permitir que seja acessada por javascript o cookie de sessão, ataques de XSS podem ser evitados. Para isso determine que o cookie será acessado apenas por HTTP.
Se você possui o recurso de HTTPS, force o envio apenas por HTTPS.
A gestão de sessão usa algoritmos de hash para gerar os IDs de sessão. Por default o php usa o algoritmo md5 (128 bits), mas como já deve ser conhecimento de todos, ele já não é o mais confiável. Então altere o algoritmo de hash para SHA-1 (160 bits).
Com estas configurações você já vai ter mais segurança nas sessões do php, existe outras functions que podem ser alteradas, consulte o manual.
Você já garantiu um pouco mais de confiança as sessões, mas também é necessário cuidado ao manipular/usar os recursos de sessão. algumas dicas são:
session_destroy();
session_regenerate_id();
session_start();
Isso irá garantir que a sessão será destruída e um novo id será gerado sempre que você iniciar uma sessão.
Não seja um macaco com uma arma na mão, use os recursos da linguagem.
Lógicamente que devido a sua popularidade e a possibilidade de fazer qualquer coisa, o php acaba protagonizando coisas horríveis. Já ouviram a expressão: "Arma na mão de macaco"? Isso também acontece com php!
Bom, já dei muita desculpa, gosto de php e pronto!
Eu, tenho lidado com sistemas que possuem muitas falhas de segurança devido a problemas de gestão de sessão, por isso decidi escrever algo sobre as sessões do php.
Até um macaco autista consegue trabalhar com sessões no php, basta olhar o manual: Funções para sessão.
Mas como qualquer função ela merece alguns cuidados, um simples session_start e um session_unset não é suficiente caso você queira garantir a integridade dos dados da aplicação.
A primeira coisa que deve ser feita é realizar algumas configurações que irão aumentar a segurança da gestão de sessão do php. Os seguintes itens devem ser alterados no php.ini:
O nome da sessão
default: session.name = PHPSESSID
hardening: session.name = Uma string que você determinar
Path onde será armazenado a sessão no servidor
default: session.save_path = Diretório de armazenamento Temporário da Máquina(tmp)
hardening: session.save_path = Defina um diretório onde as configurações de permissão foram alteradas e somente o acesso pela aplicação é permitido.
Cookies mais seguros
Apesar da possibilidade de desenvolver algo "cookieless" é mais prático e eficaz fazer algumas configurações para aumentar a segurança dos cookies.
Uma boa prática é você não permitir que seja acessada por javascript o cookie de sessão, ataques de XSS podem ser evitados. Para isso determine que o cookie será acessado apenas por HTTP.
default: session.cookie_httponly = 0
hardening: session.cookie_httponly = 1
Se você possui o recurso de HTTPS, force o envio apenas por HTTPS.
default: session.cookie_secure = 0
hardening: session.cookie_secure = 1
A gestão de sessão usa algoritmos de hash para gerar os IDs de sessão. Por default o php usa o algoritmo md5 (128 bits), mas como já deve ser conhecimento de todos, ele já não é o mais confiável. Então altere o algoritmo de hash para SHA-1 (160 bits).
default: session.hash_fuction = 0
hardening: session.hash_fuction = 1
Com estas configurações você já vai ter mais segurança nas sessões do php, existe outras functions que podem ser alteradas, consulte o manual.
Você já garantiu um pouco mais de confiança as sessões, mas também é necessário cuidado ao manipular/usar os recursos de sessão. algumas dicas são:
- Se possível determine o tempo que o cookie de sessão expira o mais baixo possível;
- Use a seguinte sequência sempre que iniciar uma sessão:
session_destroy();
session_regenerate_id();
session_start();
Isso irá garantir que a sessão será destruída e um novo id será gerado sempre que você iniciar uma sessão.
Não seja um macaco com uma arma na mão, use os recursos da linguagem.
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.

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.

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.
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!
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!
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.
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.
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.
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
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.
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.
Assinar:
Postagens (Atom)
