WebGoat 5.1 em Português
Ele acaba de anunciar a tradução do WebGoat 5.1 para o Português. Esta ferramenta do projeto OWASP tem o objetivo de ser um laboratório onde você aprende na prática as principais vulnerabilidades WEB.
Go aHead OWASP!
Ele acaba de anunciar a tradução do WebGoat 5.1 para o Português. Esta ferramenta do projeto OWASP tem o objetivo de ser um laboratório onde você aprende na prática as principais vulnerabilidades WEB.
Go aHead OWASP!
Eu já havia comentado aqui no blog um dos requisitos do PCI-DSS. Este requisito trata de vulnerabilidades em aplicações web, basicamente implementando controles para o Top Ten você está em conformidade com o requisito 6.5.
Agora lendo um post do Fabricio Braz eu fiquei sabendo de um deadline para adequação a este controle. Até 30 de Junho este requisito era considerado melhor prática, a partir desta data vai ser uma exigência.
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 é uma ténica utilizada para melhoria contínua de software.
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.
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!
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.
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!
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:
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.
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.
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!
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.