Tag Archives: segurança

Desinformação na midia: PHP rotulado de vírus

Jornal Hoje exibiu hoje uma matéria que rotula urls terminadas em .php como virus.  a reação da comunidade foi imediata, posts e manifestações surgiram logo em seguida e a hastag #phpvirus foi rapidamente colocada no Trending Topics do Twitter.

Veja a história completa neste post e a matéria que causou toda reação aqui.

O que você pode fazer?

Entre neste abaixo assinado que exige uma retratação da Rede Globo e deixe seu nome. Vamos unir a comunidade PHP e evitar esta desinformação e mancha do nosso trabalho.

Protegendo seu sistema contra ataques CSRF

Ataques CSRF ocorrem em várias aplicações web, eu gostaria de apresentar uma solução para este problema neste artigo, mas antes de mais nada aproveito para me apresentar, sou Kinn Coelho Juliao

O que são ataques CSRF?

CSRF é um ataque que força um usuário final à executar ações indesejadas em uma aplicação web em que ele(a) está autenticado no momento. Com uma pequena ajuda da engenharia social (como enviar um link por e-mail ou chat), um atacante pode forçar os usuários de uma aplicação web para executar ações de escolha do atacante. Um CSRF  bem sucedido, pode comprometer os dados e funcionamento do usuário final caso o mesmo seja um usuário comum ao sistema. Se o usuário final for administrador, isso pode comprometer a aplicação Web inteira.

Exemplos de ataques

Como funciona o ataque? Há inúmeras maneiras em que um usuário final pode ser levado a carga de informações ou enviar informação para uma aplicação web. A fim de executar um ataque, devemos primeiro entender como gerar um pedido malicioso para a nossa vítima executar.

Vejamos o seguinte exemplo: Alice deseja transferir R$ 100,00 a João usando banco.com.br.  O pedido gerado por Alice será semelhante ao seguinte:

No entanto, percebe que Maria da mesma aplicação web irá executar a mesma transferência usando parâmetros de URL da seguinte forma:

Maria decide agora para explorar esta vulnerabilidade de aplicações web usando Alice como sua vítima. Maria primeiro constrói a seguinte URL, que vai transferir R$ 100.000,00 da conta de Alice à sua conta:

Agora que seu pedido mal-intencionado é gerado, Maria  tem truque para apresentar o pedido. O método mais básico é o de enviar um e-mail HTML para Alice contendo o seguinte:

Supondo que Alice esta autenticada com a aplicação, quando ela clica no link, a transferência de R$ 100.000 para a conta de Maria irá ocorrer.

No entanto, Maria percebe que se Alice clica no link, em seguida, Alice vai notar que a transferência ocorreu.

Por isso, Maria decide esconder o ataque em uma imagem de zero bytes:

Se essa tag de imagem for incluída no e-mail, Alice só vê uma pequena caixa que indica que o navegador não pode processar a imagem. No entanto, o navegador continua a enviar a solicitação para banco.com.br sem qualquer indicação visual de que atransferência tenha ocorrido.

Este exemplo, pode ocorrer em qualquer aplicação que não possua tratamento no controle de formulários e/ou outros meios de entrada de dados.

Podemos ver um exemplo de como prevenir isto em outro exemplo abaixo:

O que fazer?

Ações em sites estão sempre associados com formulários – login, transferência de fundos ou postar um comentário no blog. Nossa solução para o problema de CSRF é gerar uma chave única quando o usuário visita a página com o formulário-lo. Vamos definir esta chave na $_SESSION, bem como um campo hidden no formulário. Quando o formulário for enviado, vamos verificar a chave armazenada na sessão e a chave enviada pelo formulário. Se eles são os mesmos então nós sabemos que o usuário submeteu nosso formulário. Se eles não são iguais (ou a $_SESSION está vazia), então sabemos que algo nocivo está acontecendo e nós podemos seguramente redirecionar o usuário (e não tomar nenhuma ação).

Podemos acrescentar um nível adicional de segurança, certificando-se o usuário veio a partir da página que contém o formulário.

Obrigado pela atenção espero ter ajudado.

PHPSPCast #2: Segurança, não programe sem ela!

PHPSPCast #2: Segurança

Após um longo periodo de turbulencia estamos de volta com um cast repleto de informações. Desta vez nos reunimos com Er Galvão Abott, líder do PHPBR e Diretor de Conteudo da PHP Conference Brasil para comentar um assunto chave para qualquer desenvolvedor, Segurança. Acompanhe enquanto comentamos estatisticas de segurança da internet, formas diferentes de atacar/defender sites, novas estratégias de segurança e revemos os 2 mandamentos de segurança do PHP.

Continue reading

Segurança insegura !

Falha de SegurançaAlguns de vocês já sabem que o próximo PHPSPCast já foi gravado e está sendo editado, o tema dele é segurança ! Segurança é algo com o qual sempre devemos estar preocupados, mas como em diversas áreas de desenvolvimento, não basta “achar”; é necessário estudar e entender todos os problemas de segurança de determinadas implementações.
É comum cairmos no mesmo problema em que nosso colega caiu. Ele queria proteger o phpinfo() dele das demais pessoas, ele poderia muito bem remover essa funcionalidade depois, mas ele corria o risco de esquecer e isto ficar aberto pra sempre. Pensando nisso e na segurança do ambiente dele, ele acabou com a seguinte solução:

A falha se encontra no fato de que não se deve confiar na variável $_SERVER. É comum as pessoas acreditarem que quem fornece esses dados é o servidor http e que eles são intocáveis. Mas a super global $_SERVER é tão manipulável quanto qualquer outra variável, portanto o que foi criado acima foi uma falsa idéia de segurança.
O post original pode ser encontrado aqui.

Análise: Essential PHP Security

phpseccoverEmbora publicado em 2005, o livro “Essential PHP Security” trata de um assunto que até hoje é muito atual. Escrito por Chris Shiflett o livro trata de todos aspectos de segurança relacionados a uma aplicação em PHP, por isso ainda hoje seu conteúdo pode ser considerado atualizado e aplicável a qualquer situação do dia a dia de um desenvolvedor.

O livro possui uma forma muito leve e exemplificada de expor os diversos aspectos de segurança que são tratados. Assuntos estes que são muito bem expostos e claramente separados em capítulos, tratando desde forms até includes e segurança em ambientes compartilhados. Cada tópico é analisado com detalhe e dividido internamente por formas de se burlar/atacar a falha de segurança, com isso o livro se torna também uma fácil fonte de consulta onde é possível se ir direto ao capítulo que trata do aspecto que esta sendo codado e verificar as falhas que se deve prestar atenção. Além disso, o capitulo introdutório também trata do assunto de segurança de uma forma mais geral, como técnicas de análise de risco e conceitos como “Defense in Depth” que ajudam a ver segurança como um processo bem maior que analisar um único ponto de falha da sua aplicação.

Mesmo sendo de 2005 o livro trata de assuntos como XSS que no atual momento da web e seu uso de AJAX deve ser sempre analisado cuidadosamente em novos e antigos projetos. Além disso velhos amigos como “Session Hijacking” e “SQL Injection” são analisados sobre diferentes pontos de vista, alinhados a segmentos específicos de um site. Esta estrutura proporciona uma leitura relaxante e de ritmo agradável que pode ser facilmente encaixada em momentos de descontração ou nas salas de espera das ocasionais idas ao médico (pelomenos funcionou para mim).

O livro merece com certeza fazer parte do histórico (ou prateleira) de qualquer desenvolvedor, pelomenos para servir como ponto de reflexão, mesmo em um novo mundo onde cada vez mais Framework aparecem internalizando todos aspectos de segurança, mas como sempre digo, nos desenvolvedores temos sempre de saber o que ocorre por trás das cortinas.

Essential PHP Security A Guide to Building Secure Web Applications

By Chris Shiflett
October 2005
Pages: 124
ISBN 10: 0-596-00656-X | ISBN 13: 9780596006563admin