Archive for the 'Security Developer' Category

Mapeamento de Objeto Relacional e Segurança de Aplicações WEB

Ultimamente tenho mexido bastante com frameworks que utilizam de ORM (Object-Relational Mapping) como, Rails (framework para linguagem Ruby) e Cake-php (port do Rails para php).

Eu tinha um certo ceticismo sobre estes frameworks que fazem muita coisa por baixo dos panos, mas ao mexer um pouco mais e entender melhor, cheguei a conclusão que eles não limitam/amarram em nada o desenvolvimento das aplicações e que a maior abstração é referente a manipulação dos dados do banco de dados.

E analisando um pouco mais, cheguei a conclusão que ORM pode colaborar e muito com a segurança das aplicações WEB. Um problema sério no desenvolvimento WEB são os famosos Injection Flaws (Cross Site Scripting, SQL Injection) e isso é devido o despreparo de muitos desenvolvedores que acabam manipulando dados nas aplicações como um chipanzé altista. Quem nunca viu aquelas concatenações horríveis de strings SQL?

Quando estes desenvolvedores despreparados usam ORM eles estão trazendo menos riscos a suas aplicações, pois o ORM faz tudo para eles.

Mas o que é ORM?

ORM é uma biblioteca que transforma dados de bancos relacionais em classes de manipulação de dados de maneira transparente ao usuário. Além de preservar as características de orientação a objetos, o desenvolvedor não precisa fazer nenhuma Query, String de conexão, tudo é feito pelo framework de ORM.

Existem frameworks de ORM para diversas linguagems como, Java (Hibernate, Cayenne), .Net (NHibernate), além dos já citados.

Um problema dos ORM é o volume de dados gerados, em alguns casos a performance é bastante prejudicada. Mas a coisa vem mudando, o Rails por exemplo implementou uma mudança que elimina muito o volume de dados em cada consulta ao banco.

ORM é um tema bem interessante, quem quiser saber mais consulte: Mapping Objects to Relational Databases: O/R Mapping In Detail

Refactoring e segurança de software

Refactoring é uma ténica utilizada para melhoria contínua de software.

Human Refactoring

Refactoring segundo a wikipedia:

"Refatoração (do inglês Refactoring) é o processo de modificar um sistema de software para melhorar a estrutura interna do código sem alterar seu comportamento externo.

O uso desta técnica aprimora a concepção (design) de um software e evita a deterioração tão comum durante o ciclo de vida de um código. Esta deterioração é geralmente causada por mudanças com objetivos de curto prazo ou por alterações realizadas sem a clara compreensão da concepção do sistema."

Por que não usar uma técnica geralmente utilizadas por desenvolvedores para implementar segurança ao processo?

Podemos usar o refactoring para determinar além das características de qualidade de software características que garantam a segurança de código. Assim podemos garantir um pouco mais de segurança ao desenvolvimento sem traumas.

OWASP Project

Cada dia mais estou empolgado com as iniciativas do OWASP no Brasil. Há pouco tempo tivemos a tradução de um material importante, agora meu amigo Eduardo Neves acaba de submeter um trabalho para o OWASP Summer of Code 2008.

Além desta iniciativa o Leonardo Cavallari tem participado ativamente dos projetos da OWASP e não posso esquecer do incansável Rodrigo Montoro.

Go Ahead OWASP!

SAP Security

Eu nunca tive a oportunidade de desenvolver em ABAP (linguagem utilizada para desenvolvimento em ambiente SAP R-3), por isso uma coisa me deixava curioso. Em ambientes deste tipo é comum o desenvolvedor abrir a suíte de desenvolvimento (IDE) de qualquer máquina. Curioso e questionador como sempre fui, fiquei com uma dúvida durante algum tempo, existe algum tipo de controle na comunicação entre as máquinas que se conectam ao repositório de códigos?

Hoje lembrei e dei uma pesquisada no google. A IDE chamada SAPGui ou o ambiente de desenvolvimento SAP R-3 SAP@Studio Home se conecta a um gateway de serviços chamado ITS (Internet Transaction Server) e a comunicação é toda criptografada usando uma implementação de 3Des.

SAPGui

ITS - SAP

Aos curiosos como eu, segue uma referência.
http://www.erpgenie.com/sap/its/security.htm
http://www.erpgenie.com/sap/its/its_components.htm

Tenho muito interesse sobre segurança em ambientes SAP, quem quiser trocar informações estou a disposição!

Novidades OWASP

Eu estava esperando algumas coisas se resolverem para eu anunciar algumas novidades sobre o OWASP.

Por problemas de comunicação o owasp.org acabou criando mais um capítulo no Brasil. Antes nós eramos capítulo Brasil, quando percebemos havia sido criado o capítulo São Paulo e nós viramos capítulo Brasília.

O Alfredo Luiz então líder do capítulo São Paulo entrou em contato comigo, conversamos e decidimos entrar em contato com o owasp.org e unir as forças e não criar um novo capítulo. Nosso pedido foi aceito e tudo está resolvido. Agradeço ao Alfredo pela compreensão e agora vamos tocar os trabalhos.

Agora as boas notícias do OWASP:

1 - Recentemente foi finalizado e entregue a tradução do Top Ten 2007;
2 - Foi disponibilizado uma série de livros sobre o OWASP que podem ser baixados gratuitamente.

Quero agradecer ao Rodrigo "Spooker" Montoro que tem dado gás a iniciativa e foi fundamental para a tradução.

Falando em tradução, fica aqui os agradecimentos ao pessoal que participou da tradução:

  • Cleber Brandão “Clebeer”;
  • Fabricio Ataides Braz;
  • Marcos Aurélio Rodrigues;
  • Myke Hamada;
  • Rodrigo “Sp0oKer” Montoro;

Leonardo Cavallari - Organizador e Responsável pela tradução

Convido a todos a apreciar o trabalho e participar da lista de discussão do capítulo.

Storage Engine MySQL

O banco MySQL é muito usado em projetos web e é base para muitas das novidades da web hoje. Para quem utiliza banco de dados MySQL (Agora SUN) uma boa notícia.

A boa notícia é que, Michael "Monty" Widenius o desenvolvedor e fundador da MySQL, divulgou o lançamento de um novo Storage Engine para o Banco de Dados MySQL. O novo engine se chama Maria, nome da terceira filha de Monty.

Storage Engine é arquitetura responsável por manter o armazenamento dos dados e tabelas do SGBD (Sistema Gerenciador de Banco de Dados).

O MySQL tem dois tipos principais de Storage Engine:

MyISAM antiga ISAM

Storage Engine default do MySQL que tem como característica não ter controle de transações (commit/rollback). Ele vem setado como default por  oferecer mais performance frente ao outro Storage Engine, o InnoDB.

InnoDB

é o Storage Engine para quem necessita de suporte para transações ACID (Atomicidade, Conscistência, Isolamento e Durabilidade). Como é de se esperar ele possuí performance inferior ao MyISAM.

Além destes também pode-se optar por outros descritos no próprio site da MySQL.

O Maria vem para suprir um problema sério do MyISAM, a falta de controles contra falhas. Bancos de dados que optam por MyISAM costumam sofrer com paradas abruptas na máquina ou processos que suportam o SGBD. É comum estas tabelas corromperem e dar uma boa dor de cabeça.

Além do controle a falha o MyISAM promete em futuras versões dar suporte a ACID. Veja os detalhes na documentação disponível.

Portanto, após algum tempo de testes sugiro aos desenvolvedores que olhem com mais carinho para seus bancos MySQL.

Flash Insecurity

Eu nunca gostei de flash em sites web, ainda mais agora que existe inúmeras opções para fazer RIA (Interface Rica) de forma muito mais limpa.

Depois destas apresentações então, estou fora!

1 - Finding Vulnerabilities in Flash Applications

2 - Testing Flash Applications

Cross Build Injection

Em Setembro deste ano a fortify publicou um paper sobre um ataque intitulado Cross-Build Injection. O ataque consiste basicamente na alteração ou inclusão de códigos no próprio repositório onde são gerados os builds. Não me parece nada novo, porém fica como ponto de atenção.

Mitigar o risco relacionado a este tipo de ataque é simples e bastante usual por muitos repositórios mas, imagine quantos repositórios não possuem o menor controle? Com uma ferramenta de brute-force como o medusa (semelhante ao THC-Hydra descontinuado) que suporta quebra de senhas de repositórios CVS, pode-se conseguir acesso ao repositório e ir a farra.

REST Insecurity

Minha palestra este ano na H2HC foi sobre insegurança na implementação de webservices baseados em REST. Os organizadores já disponibilizaram as apresentações e veio a público uma falha na implementação de REST na plataforma RoR (Ruby on Rails).

H2HC 2007

Nos dias 8 e 9 de Novembro acontece em Brasília a Conferência H2HC (Hacker To Hacker Conference). Vou estar palestrando sobre Insegurança em REST (Representational State Transfer), conto com a presença de todos.

H2HC 2007

« Previous PageNext Page »