<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Wagner Elias - Think Security First &#187; Security Developer</title>
	<atom:link href="http://wagnerelias.com/category/seguranca-no-desenvolvimento-de-software/feed/" rel="self" type="application/rss+xml" />
	<link>http://wagnerelias.com</link>
	<description>BCP, BIA, DRP, Security Assessment, Risk Assessment, Security Developer</description>
	<lastBuildDate>Tue, 18 Oct 2011 04:11:53 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Webfight &#8211; Automatizando a análise passiva de aplicações web</title>
		<link>http://wagnerelias.com/2011/10/18/webfight-automatizando-a-analise-passiva-de-aplicacoes-web/</link>
		<comments>http://wagnerelias.com/2011/10/18/webfight-automatizando-a-analise-passiva-de-aplicacoes-web/#comments</comments>
		<pubDate>Tue, 18 Oct 2011 04:03:52 +0000</pubDate>
		<dc:creator>Elias Wagner</dc:creator>
				<category><![CDATA[Security Developer]]></category>

		<guid isPermaLink="false">http://wagnerelias.com/2011/10/18/webfight-automatizando-a-analise-passiva-de-aplicacoes-web/</guid>
		<description><![CDATA[Conforme prometido, acabo de publicar os fontes da ferramenta que eu lancei na OWASP AppSec Latam deste ano. A ferramenta chamada WebFight é Open Source e pretendo ir incrementando e lançando novas atualizações de acordo com a minha necessidade e claro, espero a contribuição da comunidade. A idéia A WebFight nasceu da minha necessidade de [...]]]></description>
			<content:encoded><![CDATA[<p>Conforme prometido, acabo de publicar os fontes da ferramenta que eu lancei na <a href="https://www.owasp.org/index.php?title=AppSecLatam2011#tab=October_7th"><strong>OWASP AppSec Latam</strong></a> deste ano. A ferramenta chamada WebFight é Open Source e pretendo ir incrementando e lançando novas atualizações de acordo com a minha necessidade e claro, espero a contribuição da comunidade.</p>
<p><strong>A idéia</strong></p>
<p>A WebFight nasceu da minha necessidade de lidar com um número grande de informações que uma aplicação web pode gerar. Como eu quero continuar analisando os detalhes de cada requisição e não adotar um web security scanner, decidi criar uma ferramenta que automatizasse a análise de um log de proxy. Assim eu continuo analisando os detalhes manualmente, mas ganhando muito tempo na análise do log.</p>
<p><strong>A ferramenta</strong></p>
<p>A idéia foi fazer um parser do log do Burp e a partir deste parser criar módulos para realizar as análises. A estrutura da ferramenta é resumida no fluxo a seguir:</p>
<div align="center"><img style="max-width: 400px;" src="http://wagnerelias.com/wp-content/uploads/2011/10/Screen-shot-2011-10-18-at-1.38.34-AM.png" alt="" /></div>
<p>A ferramenta é facilmente estendida criando módulos e as seguintes análises já estão implementadas:</p>
<blockquote>
<ul>
<li>Apresenta todas as requisições e seus parâmetros para que sejam realizados testes fuzzing e de validação de dados</li>
<li>Apresenta todos os status codes, possibilitando identificar erros 500; Redirects 30x; Conteúdo estático 0</li>
<li>Apresenta as requisições fora do escopo da análise para identificar integrações, ou requests a outros domínios</li>
<li>Realiza um fingerprint a partir da análise de headers e informações da aplicação</li>
<li>Apresenta todos os cookies de sessão e a existência de cookies de sessão passados como parâmetro em requisições GET</li>
<li>Cria PoC em arquivos html de todas as requisições com parâmetros para que seja testado CSRF</li>
<li>Faz grep e identifica objetos DOM (password; hidden; file upload; iframe; etc...)</li>
<li>Apresenta todos os comentários em client-side (HTML e javascript)</li>
<li>Identifica arquivos javascript e javascripts no corpo da página apresentando o conteúdo com syntaxhighlight e realiza análise sintática no javascript apresentando Sink e Sources potencialmente perigosos</li>
<li>Identifica arquivos swf; realiza download; desassembla o swf e faz grep buscando características potencialmente vulneráveis em flash</li>
<li>Apresenta todas as respostas em JSON</li>
<li>Apresenta todos as diretivas de cache nos headers Pragma e Cache-Control</li>
<li>Apresenta as diretivas de segurança de headers CSP; HSTS e X-Frame-Options</li>
<li>Apresenta o base64 do header authorization (autenticação básica de HTTP)</li>
</ul>
</blockquote>
<p><strong>A Interface<br />
</strong><br />
A interface também facilita bastante a análise por classificar as análises e possibilita que se pesquise e filtre os registros apresentados.</p>
<div align="center"><img style="max-width: 400px;" src="http://wagnerelias.com/wp-content/uploads/2011/10/Screen-shot-2011-10-18-at-2.01.15-AM.png" alt="" /></div>
<p><strong>Demo</strong></p>
<div align="center"><object width="340" height="260" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="allowScriptAccess" value="always" /><param name="src" value="http://www.youtube.com/v/-xXdoWilR6M&amp;rel=0&amp;hl=en_US&amp;feature=player_embedded&amp;version=3" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><embed width="340" height="260" type="application/x-shockwave-flash" src="http://www.youtube.com/v/-xXdoWilR6M&amp;rel=0&amp;hl=en_US&amp;feature=player_embedded&amp;version=3" allowFullScreen="true" allowScriptAccess="always" allowfullscreen="true" allowscriptaccess="always" /></object></div>
<p>&nbsp;</p>
<p>Aguardo feedback e requisição de outras análises. Faça um <a href="http://code.google.com/p/webfight/"><strong>clone do Git</strong></a> na página do Projeto e <a href="http://groups.google.com/group/webfight"><strong>participe da lista de discussão</strong>.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://wagnerelias.com/2011/10/18/webfight-automatizando-a-analise-passiva-de-aplicacoes-web/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Quando segurança também é melhor desempenho</title>
		<link>http://wagnerelias.com/2011/09/23/quando-seguranca-tambem-e-melhor-desempenho/</link>
		<comments>http://wagnerelias.com/2011/09/23/quando-seguranca-tambem-e-melhor-desempenho/#comments</comments>
		<pubDate>Fri, 23 Sep 2011 08:26:47 +0000</pubDate>
		<dc:creator>Elias Wagner</dc:creator>
				<category><![CDATA[Security Developer]]></category>

		<guid isPermaLink="false">http://wagnerelias.com/2011/09/23/quando-seguranca-tambem-e-melhor-desempenho/</guid>
		<description><![CDATA[Eu estava estudando as dicas de otimização de sites apresentadas na excelente palestra do Sérgio Lopes da Caelum e uma dica eu queria discutir aqui, afinal em avaliações de segurança de aplicações geralmente encontramos falhas de configurações associadas a Cookies. A dica número 8: Diminua Cookies e Headers Nesta dica ele apresenta uma referência que [...]]]></description>
			<content:encoded><![CDATA[<p>Eu estava estudando as dicas de otimização de sites apresentadas <a href="http://blog.caelum.com.br/por-uma-web-mais-rapida-26-tecnicas-de-otimizacao-de-sites/?utm_source=twitterfeed&amp;utm_medium=twitter"><b>na excelente palestra do Sérgio Lopes da Caelum</b></a> e uma dica eu queria discutir aqui, afinal em avaliações de segurança de aplicações geralmente encontramos falhas de configurações associadas a Cookies.</p>
<p>A dica número 8: <a href="http://blog.caelum.com.br/por-uma-web-mais-rapida-26-tecnicas-de-otimizacao-de-sites/#l8"><b>Diminua Cookies e Headers</b></a></p>
<p>Nesta dica ele apresenta <a href="http://code.google.com/intl/pt-BR/speed/page-speed/docs/request.html#ServeFromCookielessDomain"><b>uma referência</b></a> que recomenda a separação de conteúdo estático do dinâmico e que no conteúdo estático não seja enviado Cookies.</p>
<p>Esta recomendação não só ajuda a melhorar o desempenho das páginas como pode evitar que seu Cookie seja interceptado em ataques contra a sessão da sua aplicação. É comum páginas configuradas para utilizar HTTPS possuírem objetos como imagens; javascripts; css; no seu conteúdo e estes arquivos estarem em diretórios onde não está configurado o HTTPS. Sendo assim mesmo uma página HTTPS pode deixar "vazar" os Cookies em requisições HTTP para carregar arquivos estáticos.</p>
<p>Para uma garantia a mais, recomendamos que sites com HTTPS insiram em seus Cookies a flag secure. E em breve será comum o uso do <a href="http://en.wikipedia.org/wiki/HTTP_Strict_Transport_Security"><b>header HTTP HSTS (HTTP Strict Transport Security)</b></a>. Recomendo a leitura do <a href="https://www.owasp.org/index.php/Transport_Layer_Protection_Cheat_Sheet"><b>guia da OWASP para TLS.</b></a></p>
<p>E sobre headers, alguma recomendação?</p>
<p>É muito comum os headers servirem como base para um mapeamento da aplicação, informando dados sobre o seu funcionamento, versão e tecnologia, portanto, valide se realmente são necessários estes headers, caso não sejam, retirando eles você aumenta o desempenho e não propaga informações que podem ajudar a comprometer a sua aplicação.</p>
<p>E agora que você pode usar a segurança como argumento para aumentar o desempenho, será que vai?</p>
]]></content:encoded>
			<wfw:commentRss>http://wagnerelias.com/2011/09/23/quando-seguranca-tambem-e-melhor-desempenho/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Apresentações</title>
		<link>http://wagnerelias.com/2011/09/21/apresentacoes/</link>
		<comments>http://wagnerelias.com/2011/09/21/apresentacoes/#comments</comments>
		<pubDate>Wed, 21 Sep 2011 14:48:09 +0000</pubDate>
		<dc:creator>Elias Wagner</dc:creator>
				<category><![CDATA[Diversos]]></category>
		<category><![CDATA[eventos]]></category>
		<category><![CDATA[Security Developer]]></category>

		<guid isPermaLink="false">http://wagnerelias.com/2011/09/21/apresentacoes/</guid>
		<description><![CDATA[Ultimamente o meu blog está parecendo o Reclame Aqui, mas vou começar a divulgar algum conteúdo. Para começar quero deixar um link para algumas palestras que eu e o time da Conviso realizamos em alguns eventos: http://www.conviso.com.br/recursos_pt/apresentacoes/ Em breve outros posts sobre segurança em aplicações.]]></description>
			<content:encoded><![CDATA[<p>Ultimamente o meu blog está parecendo o Reclame Aqui, mas vou começar a divulgar algum conteúdo.</p>
<p>Para começar quero deixar um link para algumas palestras que eu e o time da Conviso realizamos em alguns eventos: <a href="http://www.conviso.com.br/recursos_pt/apresentacoes/"><b>http://www.conviso.com.br/recursos_pt/apresentacoes/</b></a></p>
<p>Em breve outros posts sobre segurança em aplicações.</p>
]]></content:encoded>
			<wfw:commentRss>http://wagnerelias.com/2011/09/21/apresentacoes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Palestra na H2HC</title>
		<link>http://wagnerelias.com/2010/12/06/palestra-na-h2hc-2/</link>
		<comments>http://wagnerelias.com/2010/12/06/palestra-na-h2hc-2/#comments</comments>
		<pubDate>Mon, 06 Dec 2010 11:49:55 +0000</pubDate>
		<dc:creator>Elias Wagner</dc:creator>
				<category><![CDATA[Diversos]]></category>
		<category><![CDATA[Security Developer]]></category>

		<guid isPermaLink="false">http://wagnerelias.com/?p=733</guid>
		<description><![CDATA[Enquanto eu não atualizo o blog, segue slides e vídeos da minha palestra no H2HC 2010. http://www.conviso.com.br/html5-seguro-ou-inseguro/ Estou escrevendo alguns posts para o blog e tenho escrito bastante no blog da Conviso: http://www.conviso.com.br/category/blog/]]></description>
			<content:encoded><![CDATA[<p>Enquanto eu não atualizo o blog, segue slides e vídeos da minha palestra no H2HC 2010.</p>
<p>http://www.conviso.com.br/html5-seguro-ou-inseguro/</p>
<p>Estou escrevendo alguns posts para o blog e tenho escrito bastante no blog da Conviso: http://www.conviso.com.br/category/blog/</p>
]]></content:encoded>
			<wfw:commentRss>http://wagnerelias.com/2010/12/06/palestra-na-h2hc-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>OSSTMM e ISO/IEC 15.408 dois problemas que nós mesmos criamos</title>
		<link>http://wagnerelias.com/2010/08/24/osstmm-e-isoiec-15-408-dois-problemas-que-nos-mesmos-criamos/</link>
		<comments>http://wagnerelias.com/2010/08/24/osstmm-e-isoiec-15-408-dois-problemas-que-nos-mesmos-criamos/#comments</comments>
		<pubDate>Tue, 24 Aug 2010 13:05:39 +0000</pubDate>
		<dc:creator>Elias Wagner</dc:creator>
				<category><![CDATA[Diversos]]></category>
		<category><![CDATA[Security Assessment]]></category>
		<category><![CDATA[Security Developer]]></category>

		<guid isPermaLink="false">http://wagnerelias.com/2010/08/24/osstmm-e-isoiec-15-408-dois-problemas-que-nos-mesmos-criamos/</guid>
		<description><![CDATA[Como assim problemas? OSSTMM é a metodologia referência para Penetration Test e a ISO/IEC 15.408 é a referência para segurança em desenvolvimento de software.MENTIRA! Mas como, se muitos profissionais da área afirmam que este é o caminho? Exatamente por isto que eu credito este problema a nós mesmos profissionais que atuamos na área. Hoje a [...]]]></description>
			<content:encoded><![CDATA[<p>Como assim problemas? OSSTMM é a metodologia referência para Penetration Test e a ISO/IEC 15.408 é a referência para segurança em desenvolvimento de software.<br /><big></big><big></big><big><b><br />MENTIRA!</b></big></p>
<p>Mas como, se muitos profissionais da área afirmam que este é o caminho? Exatamente por isto que eu credito este problema a nós mesmos profissionais que atuamos na área.</p>
<p>Hoje a maioria dos clientes coloca como critério para projetos de segurança em desenvolvimento a aderência a ISO/IEC 15408 e para Penetration Test a utilização de alguma metodologia como OSSTMM. Colocam porque durante anos os profissionais pregaram e divulgaram tais informações. O pior, na grande maioria das vezes quem divulga nunca aplicou e muitas vezes se quer conhece o padrão. Muitos profissionais amparam todo o seu discurso, argumentos em chavões, mentiras ditas tantas vezes que acabam virando verdade. </p>
<p><b>Por que OSSTMM não é referência para Penetration Test?<br /></b><br />O primeiro grande desafio é ter o documento completo, a OSSTMM está em desenvolvimento há anos e nunca se teve conhecimento de toda metodologia, abordagem proposta. Todo o desenvolvimento é baseado em puro marketing, mesmo pagando a taxa pelo suposto método completo, ele sempre está incompleto e em desenvolvimento. E vou falar, eles sofrem de um problema sério de falta de produtividade, este cenário permanece por anos.</p>
<p>Bom, vamos falar da parte que existe. A documentação não apresenta fases que sejam viáveis para um Penetration Test, ele apresenta um número grande de coisas que devem ser analisadas e não passa disto. Um outro ponto que é difícil de se implementar na prática é uma abordagem quantitativa chamada rav. Esta abordagem prevê que seja analisado os controles e pontuado de acordo com um critério que, após o cálculo usando a fórmula apresentada, irá determinar uma pontuação ao ambiente. De acordo com a pontuação o ambiente é considerado mais ou menos seguro.</p>
<p>Abordagem quantitativas são a eterna busca de gestores na área de tecnologia, busca louvável, mas em Penetration Test isto é ineficaz e inútil. Sim, o propósito de um Penetration Test é identificar fragilidades que possam levar ao comprometimento do ambiente e não ser uma análise de riscos. A análise do Penetration Test irá apresentar uma análise qualitativa e servirá como uma das n variáveis de uma análise de riscos quantitativa. Está análise irá determinar qual o controle deve ou não ser implementado de acordo com o risco associado ao ambiente e o custo envolvido na solução versus o impacto que pode causar no ambiente.</p>
<p>Resumindo, OSSTMM não pode servir de referência para realização de um Penetration Test. O profissional que executa estes projetos com freqüência desenvolve seu próprio método levando em consideração as características do mercado que atua e a necessidade de organizar e apresentar os resultados esperados pelo cliente. Já escrevi algumas <a href="http://wagnerelias.com/2008/06/12/pen-test-e-metodologias/"><b>idéias sobre metodologia em Penetration Test</b></a> e também recomendo a leitura do <a href="http://wagnerelias.com/2007/11/14/metodologia-para-pentest/"><b>documento SP 800-115 (Thecnical Guide to Security Testing) do NIST.</b></a></p>
<p><b>Por que a ISO/IEC 15.408 não é referência para segurança em desenvolvimento?<br /></b><br />Existem vários motivos que levam ao entendimento claro de que a ISO/IEC 15.408 ou Commom Criteria não é para segurança em desenvolvimento, mas o <a href="http://twitter.com/gfonseca_"><b>Geraldo Fonseca no Twitter</b></a> deu uma descrição breve e que para mim é perfeita: </p>
<blockquote><p>"@gfonseca_&nbsp; @welias&nbsp; cc/15408 é framework de avaliação, não de desenvolvimento. É para avaliar o "fato consumado", e não para ajudar a criar algo seguro."</p></blockquote>
<p>É exatamente isto, ela não propõe ou valida nenhum método para se conseguir chegar ao desenvolvimento de um código seguro. Ela apresenta apenas alguns critérios que um produto de software deve ter para que possa ser acreditado por laboratórios credenciados. Define características que um software deve ter. Mas como eu chego lá? Procuro lá na ISO/IEC 15.408 e me diz. </p>
<p>Bom, se você leu pode responder que ela não apresenta nada disto. Para se conseguir um software seguro é preciso ter um processo maduro e implementar práticas de segurança em código, testes e principalmente um trabalho de conscientização e treinamento dos profissionais envolvidos.&nbsp; </p>
<p>Um <a href="http://blogs.technet.com/b/fcima/archive/2007/09/15/relat-rio-state-of-the-art-of-software-security-assurance.aspx"><b>post do Fernando Cima comenta sobre o relatório "State of the Art of Software Security Assurance" do Departamento de Defesa americano e o papel da ISO/IEC 15.408</b></a>. Eu também escrevi um <a href="http://www.issabrasil.org/wp-content/uploads/2008/10/antebellum006.pdf"><b>artigo para revista da ISSA.</b></a></p>
<p>Não que eu queira jogar uma <a href="http://wagnerelias.com/2010/07/19/o-obvio-ululante/"><b>bomba de fumaça</b></a>, mas é necessário orientar as pessoas, pesquise neste cara <a href="http://www.google.com"><b>aqui</b></a> e verifique se você encontra alguma referência internacional que associe o uso da ISO/IEC 15.408 como base para desenvolvimento seguro. </p>
<p>Pesquisou? Pois é, não encontrou nada. </p>
<p>Agora procura em português. Bingo! Existem várias citações a ISO/IEC 15.408 para desenvolvimento seguro. Este "fenômeno" eu credito a este livro: <a href="http://www.elsevier.com.br/site/produtos/Detalhe-produto.aspx?tid=1329&amp;seg=6&amp;isbn=9788535210958&amp;cat=283"><b>SEGURANÇA NO DESENVOLVIMENTO DE SOFTWARE</b></a></p>
<p>Mas o propósito do livro é claro: Como desenvolver sistemas seguros e <b>AVALIAR A SEGURANÇA DE APLICAÇÕES DESENVOLVIDAS COM BASE NA ISO 15.408</b></p>
<p>Ah! Ai é outra história! A maioria das pessoas virá especialista apenas lendo a capa de um livro, ou no melhor dos casos, fazendo como o Pateta do Walt Disney que lê o início e o fim do livro.</p>
]]></content:encoded>
			<wfw:commentRss>http://wagnerelias.com/2010/08/24/osstmm-e-isoiec-15-408-dois-problemas-que-nos-mesmos-criamos/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Inimigos do Código Seguro</title>
		<link>http://wagnerelias.com/2010/08/04/inimigos-do-codigo-seguro/</link>
		<comments>http://wagnerelias.com/2010/08/04/inimigos-do-codigo-seguro/#comments</comments>
		<pubDate>Wed, 04 Aug 2010 19:24:28 +0000</pubDate>
		<dc:creator>Elias Wagner</dc:creator>
				<category><![CDATA[Security Developer]]></category>

		<guid isPermaLink="false">http://wagnerelias.com/2010/08/04/inimigos-do-codigo-seguro/</guid>
		<description><![CDATA[Estou lendo o livro: Innocent Code - A Security Wake-Up Call for Web Programmers! O Livro é antigo, de 2004, mas eu ainda não havia tido a oportunidade de ler. O que me chamou a atenção no livro é que ao invés de tentar apresentar trechos de códigos, técnicas de secure coding ele apresenta idéias [...]]]></description>
			<content:encoded><![CDATA[<p>Estou lendo o livro: <a href="http://www.amazon.com/Innocent-Code-Security-Wake-Up-Programmers/dp/0470857447"><b>Innocent Code - A Security Wake-Up Call for Web Programmers!</b></a> O Livro é antigo, de 2004, mas eu ainda não havia tido a oportunidade de ler.</p>
<p>O que me chamou a atenção no livro é que ao invés de tentar apresentar trechos de códigos, técnicas de secure coding ele apresenta idéias e tópicos que todo programador deve levar em consideração. </p>
<p>E uma coisa que gostei foram alguns pontos que ele apresenta como inimigos do Secure Code:</p>
<p><b>Ignorance<br /></b><br />Isto mesmo, ele apresenta a ignorância como um dos inimigos da segurança de código. Eu acredito nisto! A grande maioria dos desenvolveres cometem erros de segurança por desconhecimento. Ele desenvolve um bom código, que funciona, mas que tem uma falha de segurança. <b>Mas um bom código pode ser inseguro?</b> Sim! Ele pode inserir falhas de arquitetura, privacidade mesmo desenvolvendo um código de excelente qualidade.</p>
<p>Por este motivo é fundamental que seja disponibilizado material de estudo e um trabalho de conscientização constante.</p>
<p><b>Mess<br /></b><br />Exatamente, muitos ambientes de desenvolvimento são uma verdadeira bagunça. Os desenvolvedores não adotam nenhuma prática de teste, integração contínua e algumas vezes nem o básico, como controle de versão.</p>
<p>O desenvolvimento de código de qualidade e seguro depende da adoção de práticas de desenvolvimento e organização. Eu já <a href="http://wagnerelias.com/2010/03/31/o-uso-de-ferramentas-de-bug-tracker-no-tratamento-de-vulnerabilidades/"><b>escrevi sobre Bug Tracking</b></a> e incluo como uma excelente prática a adoção de ferramentas que implementem o processo de integração contínua.</p>
<p><b>Deadlines<br /></b><br />Prazos são um problema sério em desenvolvimento de software e isto naturalmente afeta a segurança. Com a definição de prazos apertados o planejamento, análise e inspeção de código é deixado de lado e entra em cena as soluções mirabolantes e a popular <a href="http://desciclo.pedia.ws/wiki/Programa%C3%A7%C3%A3o_Orientada_a_Gambiarras"><b>POG (Programação Orientada a Gambiarra)</b></a> ou a <a href="http://gohorseprocess.wordpress.com/extreme-go-horse-xgh/"><b>XGH (eXtreme Go Horse)</b></a> que tem como principal característica:</p>
<blockquote><p><b>1- Pensou, não é XGH.<br /></b><br />XGH não pensa, faz a primeira coisa que vem à mente. Não existe segunda opção, a única opção é a mais rápida.</p></blockquote>
<p><b>Salesmen<br /></b><br />Vendedores, sempre eles. Vendem o que não podem entregar e depois o desenvolvedor precisa desenvolver um sistema ruim para atingir prazos e orçamentos. E sem contar aquelas features que são um atentado a segurança, mas precisam estar disponíveis pois foram vendidas ao cliente.</p>
<p>São pontos bem comuns, mas que afetam e muito o desenvolvimento de um bom código.</p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=96056830-3ea1-8473-8854-58ba47ec69cb" /></div>
]]></content:encoded>
			<wfw:commentRss>http://wagnerelias.com/2010/08/04/inimigos-do-codigo-seguro/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Slides da Apresentação no GTS 15 2010 &#8211; Explorando falhas em aplicações em Flash</title>
		<link>http://wagnerelias.com/2010/06/08/slides-da-apresentacao-no-gts-15-2010-explorando-falhas-em-aplicacoes-em-flash/</link>
		<comments>http://wagnerelias.com/2010/06/08/slides-da-apresentacao-no-gts-15-2010-explorando-falhas-em-aplicacoes-em-flash/#comments</comments>
		<pubDate>Tue, 08 Jun 2010 14:02:27 +0000</pubDate>
		<dc:creator>Elias Wagner</dc:creator>
				<category><![CDATA[eventos]]></category>
		<category><![CDATA[Security Developer]]></category>

		<guid isPermaLink="false">http://wagnerelias.com/2010/06/08/slides-da-apresentacao-no-gts-15-2010-explorando-falhas-em-aplicacoes-em-flash/</guid>
		<description><![CDATA[Na última edição do GTS eu tive a oportunidade de fazer uma apresentação sobre as falhas comuns em aplicações desenvolvidas em Flash. Aproveitem os slides e fiquem a vontade para comentar e trocar informações. Encontrando falhas em aplicações web baseadas em flash View more presentations from Conviso IT Security.]]></description>
			<content:encoded><![CDATA[<p>Na última edição do GTS eu tive a oportunidade de fazer uma apresentação sobre as falhas comuns em aplicações desenvolvidas em Flash. Aproveitem os slides e fiquem a vontade para comentar e trocar informações.</p>
<div align="center">
<div style="width: 425px;" id="__ss_4135510" align="center"><strong style="display: block; margin: 12px 0pt 4px;"><a href="http://www.slideshare.net/conviso/encontrando-falhas-em-aplicacoes-web-baseadas-em-flash" title="Encontrando falhas em aplicações web baseadas em flash">Encontrando falhas em aplicações web baseadas em flash</a></strong>
<div class="youtube-video"><object id="__sse4135510" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=exploit-web-flash-100518023307-phpapp02&amp;stripped_title=encontrando-falhas-em-aplicacoes-web-baseadas-em-flash"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed name="__sse4135510" src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=exploit-web-flash-100518023307-phpapp02&amp;stripped_title=encontrando-falhas-em-aplicacoes-web-baseadas-em-flash" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></div>
<p>View more <a href="http://www.slideshare.net/">presentations</a> from <a href="http://www.slideshare.net/conviso">Conviso IT Security</a>.</div>
</div>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=56f87012-c5ec-8546-b335-ccd1256c216f" /></div>
]]></content:encoded>
			<wfw:commentRss>http://wagnerelias.com/2010/06/08/slides-da-apresentacao-no-gts-15-2010-explorando-falhas-em-aplicacoes-em-flash/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Versão 5 do SDL (Microsoft Security Development Lifecycle)</title>
		<link>http://wagnerelias.com/2010/04/06/versao-5-do-sdl-microsoft-security-development-lifecycle/</link>
		<comments>http://wagnerelias.com/2010/04/06/versao-5-do-sdl-microsoft-security-development-lifecycle/#comments</comments>
		<pubDate>Tue, 06 Apr 2010 21:44:14 +0000</pubDate>
		<dc:creator>Elias Wagner</dc:creator>
				<category><![CDATA[Security Developer]]></category>

		<guid isPermaLink="false">http://wagnerelias.com/2010/04/06/versao-5-do-sdl-microsoft-security-development-lifecycle/</guid>
		<description><![CDATA[Acaba de ser lançado uma nova versão do guia da microsoft para implementação de um processo de segurança em desenvolvimento. Neste post do blog do SDL você pode ter mais detalhes das alterações e aqui baixar o arquivo. O que eu mais gostei de ver no guide foram algum pontos que sempre mencionamos em análises [...]]]></description>
			<content:encoded><![CDATA[<p>Acaba de ser lançado uma nova versão do guia da microsoft para implementação de um processo de segurança em desenvolvimento. <a href="http://blogs.msdn.com/sdl/archive/2010/04/01/now-available-sdl-process-guidance-version-5.aspx"><b>Neste post do blog do SDL</b></a> você pode ter mais detalhes das alterações e aqui <a href="http://download.microsoft.com/download/F/2/0/F205C451-C59C-4DC7-8377-9535D0A208EC/Microsoft%20SDL_Version%205.0.docx"><b>baixar o arquivo</b></a>.</p>
<p>O que eu mais gostei de ver no guide foram algum pontos que sempre mencionamos em análises e que geralmente não são tratados por desenvolvedores:</p>
<p><b>Página 23 - Strong log-out and session management<br /></b><br />
<blockquote>Proper session handling is one of the most important parts of Web application security. At the most fundamental level, sessions must be initiated, managed, and terminated in a secure manner. If a product employs an authenticated session, it must begin as an encrypted authentication event to avoid session fixation.</p>
<p>•&nbsp;&nbsp;&nbsp; A session identifier/token must never be transmitted via the URL to avoid side-jacking via the referrer header or browser history. <br />•&nbsp;&nbsp;&nbsp; All session data must be maintained on the server, not the client, to avoid tampering. <br />•&nbsp;&nbsp;&nbsp; Sessions must be completely terminated on the server side via logout and timeout mechanisms. When multiple sessions are tied to a single authentication event, all of the sessions tied to that event must be terminated by logout/time-out.<br />The following items must be met as part of the exit criteria for this recommendation:<br />•&nbsp;&nbsp;&nbsp; When multiple sessions are tied to a single user identity, they must be collectively terminated on the server side at timeout or logout. <br />•&nbsp;&nbsp;&nbsp; Authentication events must invalidate unauthenticated sessions and create a new session identifier. <br />•&nbsp;&nbsp;&nbsp; Logout functionality is available on every page. <br />•&nbsp;&nbsp;&nbsp; Session state, outside of a single identifier, is maintained on the server and not accepted from the user (including via cookie or header). <br />•&nbsp;&nbsp;&nbsp; Session tokens are not present in the URI. <br />•&nbsp;&nbsp;&nbsp; Timeout functionality is present and timeout thresholds are documented along with the rationale.</p></blockquote>
<p><b><br />Página 28 - Avoid EXEC in stored procedures</b></p>
<blockquote><p>Using stored procedures helps to mitigate the SQL injection threat to a great extent since type checking is available for parameters. If the attacker supplies input that does not match the type constraints, the stored procedure will throw an exception. In the vast majority of the cases, this exception should be properly handled within the application. <br />However, if the stored procedures perform string manipulation in their code and then execute that query using the "exec @sql" construct, incorrect handling of user input can produce the same SQL injection vulnerability as would be seen at the application layer. </p>
<p>EXEC and EXECUTE are prohibited in T-SQL stored procedures except in the case where they are used to call other stored procedures. Using EXEC to call ad-hoc SQL is not allowed. For example, the following is allowed:</p>
<p>EXEC('MyStoredProc')</p>
<p>But the following is prohibited:</p>
<p>EXEC('SELECT * FROM Foo') </p>
<p>Note that there are some situations in which it is impossible to write a parameterized T-SQL query. For instance, you cannot specify table names or column names as parameters. Similarly you cannot parameterize the operands of some operators, such as the IN operator. <br />If your product falls into one of these situations or any other case in which you believe the only reasonable option is to use EXEC with ad-hoc SQL, investigate an alternative design or implement appropriate escaping logic to mitigate SQL injection attacks. </p>
<p>Exit criteria for this requirement is that stored procedures contain no calls to EXEC or EXECUTE (except for calls to EXEC other stored procedures).</p></blockquote>
<p><b>Página 32 - HTTPOnly Cookies</b></p>
<blockquote><p>To mitigate the risk of information disclosure with a cross-site scripting attack, a new attribute was introduced to cookies for Internet Explorer 6 SP1 and is now in use in all current browsers. This attribute specifies that a cookie is not accessible through script. By using HTTP-only cookies, a Web application reduces the possibility that sensitive information contained in the cookie can be stolen via script. Watcher, a Web security testing tool, can help you meet this recommendation.<br />All HTTP-based applications that use cookies must specify HttpOnly in the cookie definition for all cookies not explicitly required by legitimate scripts in the Web page. For example:</p>
<p>Set-Cookie: USER=123; expires=Wednesday, 10-Feb-2010 23:12:40 GMT; HttpOnly"</p></blockquote>
<p><b>Página 33 - ClickJacking defense</b></p>
<blockquote><p>For each page that could contain user controllable content, you should use a "frame-breaker" script and include the HTTP response header named X-FRAME-OPTIONS in each authenticated page. The Watcher tool may be of use in meeting this recommendation. The exit criteria for this recommendation is as follows:</p>
<p>1. A "frame-breaker" script is included in each authenticated page to prevent unintentionally framing.</p>
<p>2. The X-FRAME-OPTIONS header has been added to all authenticated page HTTP responses that should not be framed (for example, DENY) or is utilized to only allow trusted sites to frame site content (for example, the current site with the use of SAMEORIGIN).</p></blockquote>
<p>Se em versões anteriores algumas pessoas criticavam por não atender claramente as características de aplicação web, a cada nova versão este cenário vem sendo melhorado.</p>
<p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=5acb76f7-9fdb-8d4d-8623-0f9e135f874e" /></div>
]]></content:encoded>
			<wfw:commentRss>http://wagnerelias.com/2010/04/06/versao-5-do-sdl-microsoft-security-development-lifecycle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>O uso de ferramentas de Bug Tracker no tratamento de vulnerabilidades</title>
		<link>http://wagnerelias.com/2010/03/31/o-uso-de-ferramentas-de-bug-tracker-no-tratamento-de-vulnerabilidades/</link>
		<comments>http://wagnerelias.com/2010/03/31/o-uso-de-ferramentas-de-bug-tracker-no-tratamento-de-vulnerabilidades/#comments</comments>
		<pubDate>Wed, 31 Mar 2010 13:17:08 +0000</pubDate>
		<dc:creator>Elias Wagner</dc:creator>
				<category><![CDATA[Security Developer]]></category>

		<guid isPermaLink="false">http://wagnerelias.com/2010/03/31/o-uso-de-ferramentas-de-bug-tracker-no-tratamento-de-vulnerabilidades/</guid>
		<description><![CDATA[Ao implementar processos de desenvolvimento seguro, geralmente nos deparamos com problemas considerados pelo senso comum como básicos e essenciais para a produção de software, o que é o caso da ausência de uma ferramenta de bug tracker. Neste post, descrevo a implementação de uma ferramenta destinada a preencher este ponto e customizada para auxiliar o [...]]]></description>
			<content:encoded><![CDATA[<p>Ao implementar processos de desenvolvimento seguro, geralmente nos deparamos com problemas considerados pelo senso comum como básicos e essenciais para a produção de software, o que é o caso da ausência de uma ferramenta de bug tracker. Neste post, descrevo a implementação de uma ferramenta destinada a preencher este ponto e customizada para auxiliar o processo de gestão e correção de vulnerabilidades em softwares.</p>
<p>A ferramenta escolhida é o Mantis (http://www.mantisbt.org/), uma vez que é de fácil customização e instalação, porém qualquer outro produto que possa ser utilizado no processo de bug tracking e possibilite a criação de campos customizados pode ser adotada no mesmo princípio.</p>
<p><b>Características do Mantis<br /></b><br />O Mantis é uma terramenta Open Source desenvolvida em PHP e que tem suporte a diversos bancos de dados, tais como MySQL e Postgres, além de contar com recursos completos para suportar o processo de gestão na correção de problemas encontrados no processo de desenvolvimento de software.</p>
<p><b>Instalando o Mantis</b></p>
<p>Para a instalação do Mantis as etapas abaixo apresentadas devem ser cumpridas de forma seqüencial:</p>
<ol>
<li>Execute o download do pacote de instalação à partir do endereço <a href="http://www.mantisbt.org/download.php">http://www.mantisbt.org/download.php</a>.</li>
<li>Descompacte este pacote no diretório de publicação que será utilizado no Servidor de Aplicação.</li>
<li>Acesse a URL do web site publicado.</li>
<li>Na tela de configuração apresentada, informe os parâmetros referentes ao banco de dados que será utilizado e execute a instalação seguindo as instruções que serão fornecidas.</li>
<li>Configure o servidor de e-mail que será utilizado pelo Mantis no arquivo: config_defaults_inc.php que será instalado no diretório raiz do web site.</li>
</ol>
<p>Com estas configurações o Mantis estará funcionando e pronto para ser utilizado, porém para garantir a aplicação de alguns protocolos de segurança adicionais, sugiro que sejam cumpridos os pontos abaixo apresentados:</p>
<ol>
<li>Apague o diretório admin do diretório raiz do site.</li>
<li>Crie um novo usuário e apague o usuário padrão administrator, cuja senha padrão é root. <img src='http://wagnerelias.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </li>
<li>No arquivo config_defaults_inc.php altere a diretiva “$g_allow_signup = ON” para OFF, uma vez que assim será removida a possibilidade de solicitação do usuário que aparece como padrão na página de acesso.</li>
</ol>
<p><b>Dica:</b> O funcionamento do Mantis depende muito do envio de e-mails, inclusive para os processos de criação e validação dos usuários, não esqueça de configurar um smtp para suportar esta finalidade e caso você precise testar o processo localmente, uma uma boa pedida é o <a href="http://www.webresourcesdepot.com/local-e-mail-testing-for-web-apps-papercut/"><b>Papercut</b></a> que simula o envio e recebimento de e-mail no seu computador.</p>
<p><b>Customizando o Mantis para suportar um processo de gestão de vulnerabilidade</b></p>
<p>1 – A primeira etapa é criar as tags para definir qual o tracker será utilizado. No menu, escolha a opção Manager=&gt;Manage Tags e crie as tags:</p>
<ul>
<li>Bug</li>
<li>Feature</li>
<li>Support</li>
<li>Vulnerability</li>
<li>Security Service</li>
</ul>
<p>2 – Em seguida, é necessário definir os campos personalizados, o que é realizado pela escolha da opção Manager=&gt;Manage Custom Fields no menu, seguida da criação dos campos personalizados abaixo relacionados, onde os campos “lista” e “texto” são obrigatórios:</p>
<ul>
<li>Security Impact – Booleano</li>
<li>Compliance Impact – Booleano</li>
<li>Privacy Impact – Booleano</li>
<li>Vulnerability Category – Lista</li>
<li>Identified By – Lista</li>
<li>Identification Method – Lista</li>
<li>Identification Method Source – Lista</li>
<li>Report – Texto</li>
<li>Requested Security Activity - Lista</li>
</ul>
<p>Conteúdo dos Campos Lista</p>
<p>1 - Vulnerability Category:</p>
<ul>
<li>Authentication</li>
<li>Authorization</li>
<li>Input Validation</li>
<li>Output Encoding</li>
<li>Error Handling</li>
<li>Session Management</li>
<li>Logging</li>
</ul>
<p>2 - Identified By:</p>
<ul>
<li>Development Team</li>
<li>Security Team</li>
<li>Third Party Assessor</li>
<li>Client</li>
<li>External Researcher</li>
<li>Attacker</li>
<li>Operations Team</li>
</ul>
<p>3 - Identification Method:</p>
<ul>
<li>Code Review</li>
<li>Penetration Testing</li>
<li>Architecture Review</li>
<li>Design Review</li>
<li>Other</li>
</ul>
<p>4 - Identification Method Source:</p>
<ul>
<li>Automated Tool</li>
<li>Human</li>
<li>Unknown</li>
</ul>
<p>5 - Requested Security Activity:</p>
<ul>
<li>Requirements Review</li>
<li>Architecture Review</li>
<li>Design Review</li>
<li>Code Review</li>
<li>Penetration Test</li>
<li>Third Party Assessment</li>
<li>Final Security, Compliance and Privacy Assessment</li>
</ul>
<p><b>Utilizando o BugTracker para suportar o tratamento de vulnerabilidades</b></p>
<p>A ferramenta de Bug Tracker será utilizada para suportar o processo de documentação e auxiliar na integração das equipes responsáveis pelo desenvolvimento, análise da segurança, assim como na gestão destas equipes. O primeiro passo é entender o que representa cada estado do BugTracker, a imagem a seguir apresenta os status que o Mantis utiliza:</p>
<div align="center"><img style="max-width: 400px;" src="http://wagnerelias.com/wp-content/uploads/2010/03/Mantis.jpg" /></div>
<p><b>Entendo o Mantis</b></p>
<p>A imagem a seguir apresenta a aplicação de cada um dos status no tratamento da vulnerabilidade e a utilização dos campos customizados que foram citados :</p>
<div align="center"><img style="max-width: 400px;" src="http://wagnerelias.com/wp-content/uploads/2010/03/WorkflowBugTracker.jpg" /></div>
<p>Esta abordagem foi adotada com base no <a href="http://nickcoblentz.blogspot.com/2009/07/vulnerability-tracking-workflow-and.html"><b>post de Nick Coblentz</b></a>, respeitando as regras da licença Creative Commons e autorizado pelo autor.</p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=93c958ef-083a-871e-901d-0c051ec3787a" /></div>
]]></content:encoded>
			<wfw:commentRss>http://wagnerelias.com/2010/03/31/o-uso-de-ferramentas-de-bug-tracker-no-tratamento-de-vulnerabilidades/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Php Security &#8211; Nem tudo que é publicado deve ser seguido</title>
		<link>http://wagnerelias.com/2010/03/04/php-security-nem-tudo-que-e-publicado-deve-ser-seguido/</link>
		<comments>http://wagnerelias.com/2010/03/04/php-security-nem-tudo-que-e-publicado-deve-ser-seguido/#comments</comments>
		<pubDate>Thu, 04 Mar 2010 13:14:17 +0000</pubDate>
		<dc:creator>Elias Wagner</dc:creator>
				<category><![CDATA[Security Developer]]></category>

		<guid isPermaLink="false">http://wagnerelias.com/?p=692</guid>
		<description><![CDATA[Eu estava lendo o livro: Pro PHP Security (Chris Snyder and Michael Southwell) - Apress. É no passado mesmo, eu não li o resto, pois analisando os códigos no começo do livro encontrei algumas falhas, incluindo problemas de design e arquitetura. 1 - Uso de variáveis Super Globals do Php sem sanitização - página 77 [...]]]></description>
			<content:encoded><![CDATA[<p>Eu estava lendo o livro: Pro PHP Security (Chris Snyder and Michael Southwell) - Apress. É no passado mesmo, eu não li o resto, pois analisando os códigos no começo do livro encontrei algumas falhas, incluindo problemas de design e arquitetura.</p>
<p><strong>1 - Uso de variáveis Super Globals do Php sem sanitização - página 77</strong></p>
<blockquote><p>&lt;form action="&lt;? $_SERVER['SCRIPT_NAME']" method="post"&gt;<br />
&lt;p&gt;<br />
username: &lt;input type="text" name="userName" size="32" /&gt;&lt;br /&gt;<br />
username: &lt;input type="password" name="userPassword" size="16" /&gt;&lt;br /&gt;<br />
&lt;input type="submit" name="submit" value="login" /&gt;<br />
&lt;p&gt;<br />
&lt;/form&gt;</p></blockquote>
<p>Estas variáveis como qualquer input podem ser manipuladas, o que torna este form vulnerável a XSS (Cross Site Scripting).</p>
<p><strong>2 - Implementação inadequada de salt - página 78<br />
</strong><br />
O livro começou bem neste ponto, sugerindo a utilização de salt como recurso para fortalecer os hashs de senha. Mas, como geralmente acontece, a idéia é boa mas a implementação é ruim.</p>
<blockquote><p>$salt = time();<br />
$hashedPassword = sha1($userPassword . $salt);</p></blockquote>
<p>O código apresentado sugere gerar um hash no momento da criação baseado em time(). Como comparar este resultado na hora de cada login se o time() tem um valor que não é fixo? Eles sugerem armazenar um hash em um campo na mesma tabela de usuários, junto com o hash da senha.</p>
<blockquote><p>$query = 'INSERT INTO LOGIN VALUES (' . dbSafe($userName) . ', ' . dbSafe($hashedPassword) . ',' .dbSafe($salt) . ')';</p></blockquote>
<p>Geralmente o comprometimento dos hashs de senhas acontece por falhas de SQL Injection, portanto se o usuário mal intencionado pega o hash e salt numa paulada só e consegue reverter a senha (óbvio que aqui estamos falando de senhas com baixa complexidade e que podem ser revertidas por base de hashs pré-compilados).</p>
<p>Este é o típico caso onde existe a exceção, se em código compilado e local não é recomendado a senha hard-coded, neste caso em linguagem interpretada como php, asp é mais seguro que quardar no banco, pois para comprometer o salt ele precisa ter acesso aos diretórios do servidor de aplicação.</p>
<p>As páginas seguintes são uma enrolação danada e nada de código, nem vulnerável. Ai fiquei curioso para ver quais eram as sugestões para controles de sessão,uma falha comum em aplicações.</p>
<p><strong>3 - Controle inadequado contra CSRF/XSRF (Cross Site Request Forgery) - Página 402<br />
</strong></p>
<blockquote><p>&lt;?php</p>
<p>$referrer = $_SERVER['HTTP_REFERER'];<br />
if (!empty($referrer)) {<br />
$uri = parse_url($referrer);<br />
if ($uri['host'] != $_SERVER['HTTP_HOST']) {<br />
exit("Form submissions from $referrer not allowed.");<br />
}<br />
}</p>
<p>else {<br />
exit('Referrer not found. Please &lt;a href="' . $_SERVER['SCRIP_NAME'] . '"&gt;try again&lt;/a&gt;.');<br />
}</p>
<p>?&gt;</p></blockquote>
<p>O referer é um recurso do HTTP que informa de onde a requisição está vindo, mas como é coletado usando uma variável Super Global, pode ser manipulado como analisamos no início do post na falha número 1. Controles efetivos para CSRF/XSRF são token de sessão com boa entropia e solicitar uma nova autenticação em operações críticas.</p>
<p>Para forjar um referer e bypassar este controle pode ser usado scripts que geram um referer, exemplo:</p>
<blockquote><p>&lt;META HTTP-EQUIV="refresh" CONTENT="0;url=[url a ser atacada];"&gt;</p></blockquote>
<p>Não preciso nem falar que não li o livro todo. Não recomendo, o livro não acrescenta praticamente nada em segurança e ainda comete erros grosseiros.</p>
]]></content:encoded>
			<wfw:commentRss>http://wagnerelias.com/2010/03/04/php-security-nem-tudo-que-e-publicado-deve-ser-seguido/feed/</wfw:commentRss>
		<slash:comments>36</slash:comments>
		</item>
		<item>
		<title>Tratando o Top 10 da OWASP em aplicações .Net</title>
		<link>http://wagnerelias.com/2009/12/05/tratando-o-top-10-da-owasp-em-aplicacoes-net/</link>
		<comments>http://wagnerelias.com/2009/12/05/tratando-o-top-10-da-owasp-em-aplicacoes-net/#comments</comments>
		<pubDate>Sat, 05 Dec 2009 08:09:39 +0000</pubDate>
		<dc:creator>Elias Wagner</dc:creator>
				<category><![CDATA[eventos]]></category>
		<category><![CDATA[Security Developer]]></category>

		<guid isPermaLink="false">http://wagnerelias.com/2009/12/05/tratando-o-top-10-da-owasp-em-aplicacoes-net/</guid>
		<description><![CDATA[Organizando minhas apresentações eu encontrei esta apresentação que eu fiz no Tech-Ed 2007. A idéia da palestra era comparar, mostrar as diferenças entre o OWASP Top 10 2004 e o 2007 e também apresentar alternativas para tratamento das vulnerabilidades apresentadas utilizando os recursos da plataforma .Net. OWASP Top 10 e aplicações .Net - Tech-Ed 2007 [...]]]></description>
			<content:encoded><![CDATA[<p>Organizando minhas apresentações eu encontrei esta apresentação que eu fiz no Tech-Ed 2007. A idéia da palestra era comparar, mostrar as diferenças entre o OWASP Top 10 2004 e o 2007 e também apresentar alternativas para tratamento das vulnerabilidades apresentadas utilizando os recursos da plataforma .Net.
<div align="center">
<div style="width: 425px; text-align: left;" id="__ss_2623083"><a style="margin: 12px 0pt 3px; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; display: block; text-decoration: underline;" href="http://www.slideshare.net/conviso/owasp-top-10-e-aplicaes-net-teched-2007" title="OWASP Top 10 e aplicações .Net - Tech-Ed 2007">OWASP Top 10 e aplicações .Net - Tech-Ed 2007</a>
<div class="youtube-video"><object style="margin: 0px;" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=seg402welias-091201065755-phpapp02&amp;stripped_title=owasp-top-10-e-aplicaes-net-teched-2007"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=seg402welias-091201065755-phpapp02&amp;stripped_title=owasp-top-10-e-aplicaes-net-teched-2007" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></div>
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;">View more <a style="text-decoration: underline;" href="http://www.slideshare.net/">presentations</a> from <a style="text-decoration: underline;" href="http://www.slideshare.net/conviso">Conviso IT Security</a>.</div>
</div>
</div>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=49265673-604c-8566-8a92-fd87f488518b" /></div>
]]></content:encoded>
			<wfw:commentRss>http://wagnerelias.com/2009/12/05/tratando-o-top-10-da-owasp-em-aplicacoes-net/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Conteúdo da apresentação na Hacker to Hackers Conference 2009</title>
		<link>http://wagnerelias.com/2009/12/05/conteudo-da-apresentacao-na-hacker-to-hackers-conference-2009/</link>
		<comments>http://wagnerelias.com/2009/12/05/conteudo-da-apresentacao-na-hacker-to-hackers-conference-2009/#comments</comments>
		<pubDate>Sat, 05 Dec 2009 08:05:48 +0000</pubDate>
		<dc:creator>Elias Wagner</dc:creator>
				<category><![CDATA[eventos]]></category>
		<category><![CDATA[Security Developer]]></category>

		<guid isPermaLink="false">http://wagnerelias.com/2009/12/05/conteudo-da-apresentacao-na-hacker-to-hackers-conference-2009/</guid>
		<description><![CDATA[Palestrar na H2HC é sempre uma grande experiência, além de encontrar vários amigos que reencontro nestes tipos de eventos, ainda tenho a possibilidade de conversar discutir sobre assuntos pouco discutidos em meios tradicionais. Este ano eu fiz uma apresentação explorando a técnica Fuzzy para identificar falhas em aplicação Web. Encontrar um auditório cheio as 8hrs. [...]]]></description>
			<content:encoded><![CDATA[<p>Palestrar na H2HC é sempre uma grande experiência, além de encontrar vários amigos que reencontro nestes tipos de eventos, ainda tenho a possibilidade de conversar discutir sobre assuntos pouco discutidos em meios tradicionais. Este ano eu fiz uma apresentação explorando a técnica Fuzzy para identificar falhas em aplicação Web. Encontrar um auditório cheio as 8hrs. da manhã de um Domingo com chuva e pós a festa da conferência, foi sensacional. Obrigado a todos. Uma pena que a apresentação é bastante voltada para interação, discussão e apresentação de demonstrações sobre o tema, não gosto de muitos slides. ;-(</p>
<p>Mas aguardem, em breve os vídeos serão disponibilizados.</p>
<div align="center">
<div style="width: 425px; text-align: left;" id="__ss_2623135"><a style="margin: 12px 0pt 3px; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; display: block; text-decoration: underline;" href="http://www.slideshare.net/conviso/playing-web-fuzzing-h2hc-2009" title="Playing Web Fuzzing - H2HC 2009">Playing Web Fuzzing - H2HC 2009</a>
<div class="youtube-video"><object style="margin: 0px;" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=playingwebfuzzing29112009v1-091201070743-phpapp02&amp;stripped_title=playing-web-fuzzing-h2hc-2009"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=playingwebfuzzing29112009v1-091201070743-phpapp02&amp;stripped_title=playing-web-fuzzing-h2hc-2009" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></div>
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;">View more <a style="text-decoration: underline;" href="http://www.slideshare.net/">presentations</a> from <a style="text-decoration: underline;" href="http://www.slideshare.net/conviso">Conviso IT Security</a>.</div>
</div>
<p></div>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=03e99375-dab0-8c41-b77c-b33b1cca8e96" /></div>
]]></content:encoded>
			<wfw:commentRss>http://wagnerelias.com/2009/12/05/conteudo-da-apresentacao-na-hacker-to-hackers-conference-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Conteúdo da apresentação na Php Conference 2009</title>
		<link>http://wagnerelias.com/2009/12/05/conteudo-da-apresentacao-na-php-conference-2009/</link>
		<comments>http://wagnerelias.com/2009/12/05/conteudo-da-apresentacao-na-php-conference-2009/#comments</comments>
		<pubDate>Sat, 05 Dec 2009 07:59:29 +0000</pubDate>
		<dc:creator>Elias Wagner</dc:creator>
				<category><![CDATA[eventos]]></category>
		<category><![CDATA[Security Developer]]></category>

		<guid isPermaLink="false">http://wagnerelias.com/2009/12/05/conteudo-da-apresentacao-na-php-conference-2009/</guid>
		<description><![CDATA[No último dia 27 de Novembro eu tive a oportunidade de realizar uma apresentação técnica sobre o funcionamento e utilização do PHPIDS para proteger aplicações php. A apresentação foi complementada com várias demonstrações e o público interagiu bastante. Obrigado a todos os que compareceram. Protegendo Aplicações Php com PHPIDS - Php Conference 2009 View more [...]]]></description>
			<content:encoded><![CDATA[<div align="center">No último dia 27 de Novembro eu tive a oportunidade de realizar uma apresentação técnica sobre o funcionamento e utilização do PHPIDS para proteger aplicações php. A apresentação foi complementada com várias demonstrações e o público interagiu bastante. Obrigado a todos os que compareceram.</div>
<p>
<div align="center">
<div style="width: 425px; text-align: left;" id="__ss_2623153"><a style="margin: 12px 0pt 3px; font-family: Helvetica,Arial,Sans-serif; font-style: normal; font-variant: normal; font-weight: normal; font-size: 14px; line-height: normal; font-size-adjust: none; font-stretch: normal; display: block; text-decoration: underline;" href="http://www.slideshare.net/conviso/protegendo-aplicaes-php-com-phpids-php-conference-2009" title="Protegendo Aplicações Php com PHPIDS - Php Conference 2009">Protegendo Aplicações Php com PHPIDS - Php Conference 2009</a>
<div class="youtube-video"><object style="margin: 0px;" width="425" height="355"><param name="movie" value="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=phpconference27112009v1-091201071148-phpapp01&amp;stripped_title=protegendo-aplicaes-php-com-phpids-php-conference-2009"></param><param name="allowFullScreen" value="true"></param><param name="allowScriptAccess" value="always"></param><embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=phpconference27112009v1-091201071148-phpapp01&amp;stripped_title=protegendo-aplicaes-php-com-phpids-php-conference-2009" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object></div>
<div style="font-size: 11px; font-family: tahoma,arial; height: 26px; padding-top: 2px;">View more <a style="text-decoration: underline;" href="http://www.slideshare.net/">presentations</a> from <a style="text-decoration: underline;" href="http://www.slideshare.net/conviso">Conviso IT Security</a>.</div>
</div>
</div>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=d17fa5c8-e4d6-8890-93b8-b90520e8e43e" /></div>
]]></content:encoded>
			<wfw:commentRss>http://wagnerelias.com/2009/12/05/conteudo-da-apresentacao-na-php-conference-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Microsoft Hello Secure World</title>
		<link>http://wagnerelias.com/2009/10/05/microsoft-hello-secure-world/</link>
		<comments>http://wagnerelias.com/2009/10/05/microsoft-hello-secure-world/#comments</comments>
		<pubDate>Mon, 05 Oct 2009 18:34:49 +0000</pubDate>
		<dc:creator>Elias Wagner</dc:creator>
				<category><![CDATA[Security Developer]]></category>

		<guid isPermaLink="false">http://wagnerelias.com/2009/10/05/microsoft-hello-secure-world/</guid>
		<description><![CDATA[A Microsoft disponibiliza um ambiente onde é possível fazer laboratórios explorando as seguintes vulnerabilidades: XSS (Cross Site Scripting) SQLi (SQL Injection) Canonicalization Attack CSRF (Cross Site Request Forgery) Integer Overflow/Undeflow Para explorar os laboratórios online siga estes passos: 1 - acesse o seguinte endereço: http://www.microsoft.com/click/hellosecureworld/default.mspx2 - Clique no leitor biométrico para entrar nos laboratórios3 - [...]]]></description>
			<content:encoded><![CDATA[<p>A Microsoft disponibiliza um ambiente onde é possível fazer laboratórios explorando as seguintes vulnerabilidades:
<ul>
<li>XSS (Cross Site Scripting)</li>
<li>SQLi (SQL Injection)</li>
<li>Canonicalization Attack</li>
<li>CSRF (Cross Site Request Forgery)</li>
<li>Integer Overflow/Undeflow</li>
</ul>
<p>Para explorar os laboratórios online siga estes passos:</p>
<p>1 - acesse o seguinte endereço: <a href="http://www.microsoft.com/click/hellosecureworld/default.mspx">http://www.microsoft.com/click/hellosecureworld/default.mspx</a><br />2 - Clique no leitor biométrico para entrar nos laboratórios<br />3 - Instale os plugins necessários<br />4 - Clique em The V-Lab no lado inferior direito<br />5 - Escolha o teste que deseja explorar<br />6 - Enjoy!</p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=d17fa5c8-e4d6-8890-93b8-b90520e8e43e" /></div>
]]></content:encoded>
			<wfw:commentRss>http://wagnerelias.com/2009/10/05/microsoft-hello-secure-world/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>SDL (Secure Development Lifecycle) &#8211; Tão simples quanto parece?</title>
		<link>http://wagnerelias.com/2009/09/24/sdl-secure-development-lifecycle-tao-simples-quanto-parece/</link>
		<comments>http://wagnerelias.com/2009/09/24/sdl-secure-development-lifecycle-tao-simples-quanto-parece/#comments</comments>
		<pubDate>Thu, 24 Sep 2009 14:16:12 +0000</pubDate>
		<dc:creator>Elias Wagner</dc:creator>
				<category><![CDATA[Security Developer]]></category>

		<guid isPermaLink="false">http://wagnerelias.com/2009/09/24/sdl-secure-development-lifecycle-tao-simples-quanto-parece/</guid>
		<description><![CDATA[Devido a demandas por adequação a padrões, o processo de segurança em desenvolvimento de software é hoje um assunto em alta. Isto me preocupa, afinal, de onde surgiram tantos especialistas? Cheguei a comentar com um amigo: tem mais especialista que aplicação vulnerável. São inúmeras palestras e promessas milagrosas. Pessoas citam os touchpoints de Gary McGraw [...]]]></description>
			<content:encoded><![CDATA[<p>Devido a demandas por adequação a padrões, o processo de segurança em desenvolvimento de software é hoje um assunto em alta. Isto me preocupa, afinal, de onde surgiram tantos especialistas? Cheguei a comentar com um amigo: tem mais especialista que aplicação vulnerável.</p>
<p>São inúmeras palestras e promessas milagrosas. Pessoas citam os <a href="http://www.cigital.com/training/touchpoints/"><strong>touchpoints de Gary McGraw</strong></a> e o <a href="http://msdn.microsoft.com/en-us/security/cc448177.aspx"><strong>processo de SDL da Microsoft</strong></a> como se fossem íntimos e tenham implementado em vários cenários e organizações, sem contar a falácia da <a href="http://www.commoncriteriaportal.org/"><strong>ISO/IEC 15.408</strong></a>, que muitos acreditam cegamente ser uma proposta para segurança em desenvolvimento.</p>
<p>Tudo isto para buscar ser "cool" e/ou tentar abocanhar uma fatia de um mercado que vem surgindo. A pesquisa, o estudo e disseminação de conhecimento são super importantes, mas que, os que se aventuram pelo tema tenham convicção de uma coisa: <strong>não é nenhum pouco simples e fácil implementar e ter bons resultados com processos de SDL.</strong><br />
<strong><br />
Wagner, você está traindo "o movimento"? Você não acredita mais em segurança em desenvolvimento?</strong></p>
<p>Muito pelo contrário, acredito e muito, mas sei muito bem o caminho a ser percorrido e as dificuldades que encontrarei. Há pelo menos cinco anos eu estudo e vivencio como consultor, a realidades das organizações frente à segurança de software.</p>
<p>Muitas organizações não conseguem justificar mais uma área de desenvolvimento interno, como irão justificar o investimento em segurança de software? Os sábios logo dirão: <strong>Cobre do fornecedor o processo de SDL.</strong></p>
<blockquote><p>Sim, você pode cobrar do fornecedor, só não se assuste se o seguinte cenário lhe for apresentado: Eu cobro R$ 500,00 por hora de desenvolvimento, com segurança eu preciso incluir um pequeno adicional, fica R$ 600,00 por hora.</p></blockquote>
<p><strong>Como diria o Zé: não existe almoço grátis! Alguém tem que pagar a conta.<br />
</strong><br />
<strong>Como equacionar esta dificuldade de justificar e conscientizar as empresas a investir recursos em segurança em desenvolvimento?<br />
</strong><br />
Não existe resposta pronta, sugestões como: conscientize, treine, mostre o ROI, etc... Servem para uns e não servem para outros. Se eu pudesse sugerir algo, eu começaria pelo básico, não acredite em soluções milagrosas, não acredite em quem lhe promete entregar o que você não conseguiu a vida toda em um mês de trabalho e ao preço de um almoço.<br />
<strong><br />
Um processo como este leva tempo e no mínimo os seguintes aspectos devem ser considerados:</strong></p>
<ul>
<li>Compliance é o mínimo do requerido, não espere que esta demanda justifique o processo de segurança em desenvolvimento;</li>
<li>Identifique de que maneira a sua organização é afetada pela insegurança de software;</li>
<li>Tenha ciência que a maioria dos impactos relacionados a incidentes envolvendo falhas de software impacta indiretamente a organização e os valores são intangíveis. A famosa fórmula de ROI pode não lhe ajudar nestes cenários;</li>
<li>Envolva todos no processo, não seja apenas o auditor que aponta as falhas e cobra uma solução;</li>
<li>Não trate um processo de SDL como um projeto que você desenvolve meia dúzia de documentos e está feito. Busque a melhoria contínua, crie e acompanhe métricas que possam viabilizar e melhorar o processo.</li>
</ul>
<p>Com estes pontos você terá muito trabalho, a parte fácil é desenhar os fluxos e escrever cartilhas e procedimentos.</p>
<p><strong>[Update - 25 de Setembro]</strong> O Fernando Cima escreveu um post com excelentes referências para quem deseja implementar um SDL:  <a href="http://blogs.technet.com/risco/archive/2009/09/25/retorno-sobre-o-investimento-de-um-processo-seguro-de-desenvolvimento.aspx?CommentPosted=true#commentmessage">Retorno Sobre o Investimento de um Processo Seguro de Desenvolvimento</a></p>
]]></content:encoded>
			<wfw:commentRss>http://wagnerelias.com/2009/09/24/sdl-secure-development-lifecycle-tao-simples-quanto-parece/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Uma alternativa ao SSL</title>
		<link>http://wagnerelias.com/2009/08/28/uma-alternativa-ao-ssl/</link>
		<comments>http://wagnerelias.com/2009/08/28/uma-alternativa-ao-ssl/#comments</comments>
		<pubDate>Fri, 28 Aug 2009 13:21:18 +0000</pubDate>
		<dc:creator>Elias Wagner</dc:creator>
				<category><![CDATA[Security Developer]]></category>

		<guid isPermaLink="false">http://wagnerelias.com/2009/08/28/uma-alternativa-ao-ssl/</guid>
		<description><![CDATA[Muitas vezes necessitamos criptografar o tráfego de dados sensíveis em aplicação, a melhor opção para estes casos é usar SSL. Obviamente que o SSL deve ser bem implementado, pois muitas vezes ele é mal implementado e possibilita que algumas vulnerabilidades sejam exploradas. Infelizmente implementar SSL em todos os ambientes nem sempre é responsabilidade do desenvolvedor, [...]]]></description>
			<content:encoded><![CDATA[<p>Muitas vezes necessitamos criptografar o tráfego de dados sensíveis em aplicação, a melhor opção para estes casos é usar SSL. Obviamente que o SSL deve ser bem implementado, pois muitas vezes ele é <a href="http://www.webreference.com/internet/ssl2/"><b>mal implementado e possibilita que algumas vulnerabilidades sejam exploradas.</b></a></p>
<p>Infelizmente implementar SSL em todos os ambientes nem sempre é responsabilidade do desenvolvedor, geralmente ele depende de uma área responsável por infraestrutura. Quando não existe um bom relacionamento entre as áreas e/ou um estudo de requisitos antes de colocar uma aplicação em produção, a aplicação acaba indo para produção sem o SSL e consequentemente exposta as vulnerabilidades pertinentes a <a href="http://msdn.microsoft.com/en-us/library/aa291875%28VS.71%29.aspx#vxcondesigningforsecurabilityanchortamperingwithdata"><b>data tampering</b></a>.</p>
<p>Uma alternativa para desenvolvedores é um plugin chamado <a href="http://www.jcryption.org/"><b>JCryption</b></a> para o framework javascript <a href="http://jquery.com/"><b>JQuery</b></a>. O plugin possibilita que seja criptografado as requisições POST e GET. Ele não substitui o SSL, mas pode "quebrar o galho" em algumas requisições.</p>
<p>A implementação é simples, basta seguir os <a href="http://www.jcryption.org/demo/"><b>exemplos da página do plugin</b></a>.</p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=8edbb0db-4234-82e8-be60-c485f74ca016" /></div>
]]></content:encoded>
			<wfw:commentRss>http://wagnerelias.com/2009/08/28/uma-alternativa-ao-ssl/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>Hardening de sessões em ambiente Java</title>
		<link>http://wagnerelias.com/2009/07/10/hardening-de-sessoes-em-ambiente-java/</link>
		<comments>http://wagnerelias.com/2009/07/10/hardening-de-sessoes-em-ambiente-java/#comments</comments>
		<pubDate>Fri, 10 Jul 2009 18:48:35 +0000</pubDate>
		<dc:creator>Elias Wagner</dc:creator>
				<category><![CDATA[Security Developer]]></category>

		<guid isPermaLink="false">http://wagnerelias.com/2009/07/10/hardening-de-sessoes-em-ambiente-java/</guid>
		<description><![CDATA[É bastante comum eu encontrar problemas em sessões de aplicações baseadas no ambiente Java. Estes problemas geralmente não são conhecidos por desenvolvedores, pois eles deixam todo o processo de criação e gestão de sessão a cargo do servidor de aplicação. A grande maioria dos servidores de aplicação Java não suportam ou não trazem por padrão [...]]]></description>
			<content:encoded><![CDATA[<p>É bastante comum eu encontrar problemas em sessões de aplicações baseadas no ambiente Java. Estes problemas geralmente não são conhecidos por desenvolvedores, pois eles deixam todo o processo de criação e gestão de sessão a cargo do servidor de aplicação. A grande maioria dos servidores de aplicação Java não suportam ou não trazem por padrão as configurações adequadas para garantir a segurança destas sessões. </p>
<p>Neste post eu pretendo apresentar a solução para cada um dos problemas que eu encontro em análises que eu realizo. Todas as soluções dependem de codificação e devem ser feitas pelo desenvolvedor.</p>
<p><b>1 - Falta da flag HTTPOnly nos cookies de sessão<br /></b><br />Como já podemos verificar em outro <a href="http://wagnerelias.com/2008/11/01/hardening-de-sessao-no-php/"><b>post aqui no blog</b></a>, a falta da flag HTTPOnly nos cookies de sessão é um facilitador para ataques client-side que buscam sequestrar sessão de usuário, pois sem a flag é possível capturar o ID de Sessão via javascript. <a href="http://www.owasp.org/index.php/HTTPOnly#Using_Java_to_Set_HTTPOnly"><b>Mais informações podem ser obtidas na referência da OWASP</b></a>.</p>
<p><b>Como tratar este risco<br /></b><br />Para tratar este risco é preciso reescrever o cookie mantendo os dados originais e incluindo a flag HTTPOnly.</p>
<blockquote><p>response.setHeader("Set-Cookie", <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "originalcookiename=originalvalue; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HTTPOnly");</p></blockquote>
<p><b>2 - Falta da Flag secure nos cookies de sessão</b></p>
<p>É importante que a flag secure seja setado em todo cookie de sessão. Isto irá garantir que um cookie gerado em uma conexão HTTPS (Conexão Criptografada) irá trafegar apenas por uma conexão tunelada via HTTPS. A falta desta flag permite que o cookie seja trafegado via HTTP (Texto Claro) e possa ser capturado por usuários mal intencionados que estejam capturando pacotes em rede. <a href="http://www.owasp.org/index.php/OWASP_AppSec_FAQ#What_are_these_secure_cookies.3F"><b>Mais informações podem ser obtidas na referência da OWASP.</b></a></p>
<p><b>Como tratar este risco</b></p>
<p>O tratamento deste risco é semelhante ao do HTTPOnly, basta reescrever o cookie e incluir a flag secure. Não esqueça de manter a flag HTTPOnly ao reescrever o cookie para incluir a flag secure.</p>
<blockquote><p>response.setHeader("Set-Cookie", <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; "originalcookiename=originalvalue; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Secure;HTTPOnly");</p></blockquote>
<p><b>3 - Session Fixation</b></p>
<p>Com esta vulnerabilidade o ID de sessão pode ser capturado por um ataque client-side e ser "forçado" seu uso em uma requisição. Isso possibilita burlar o sistema de autenticação da aplicação. <a href="http://www.owasp.org/index.php/Session_Fixation"><b>Mais informações podem ser obtidas na referência da OWASP.</b></a></p>
<p><b>Como tratar este risco</b></p>
<p>Para tratar este risco é necessário recriar a sessão após a autenticação. <a href="http://java.sapao.net/Home/criar-nova-ses%C3%A3o-ap%C3%B3s-a-autentica%C3%A7%C3%A3o-do-usu%C3%A1rio"><b>Um exemplo de código é dado pelo Lucas Ferreira no seu site sobre segurança em Java</b>.</a></p>
<blockquote><p><b>O código abaixo mostra como abandonar uma sessão a criar outra após a autenticação:<br /></b><br />public class ExampleLoginServlet extends HttpServlet {<br />public void doGet(HttpServletRequest request, HttpServletResponse response)<br />&nbsp;&nbsp;&nbsp;&nbsp; throws ServletException, IOException {<br />&nbsp;&nbsp;&nbsp;&nbsp; if( //autenticação bem sucedida ) {<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; request.getSession().invalidate();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; HttpSession session = request.getSession(true);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; session.setAttribute("AUTHENTICATED", new Boolean(true));<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; response.sendRedirect("PageRequiringAuthentication.jsp");</p>
<p><b>No caso de aplicações Struts 2, o código abaixo é mais apropriado:<br /></b><br />if(//autenticação bem sucedida)&nbsp; {</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; /* Renovação do identificador de sessão */<br />&nbsp;&nbsp;&nbsp;&nbsp; ((SessionMap)this.session).invalidate();<br />&nbsp;&nbsp;&nbsp;&nbsp; this.session = ActionContext.getContext().getSession();</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; session.put("AUTHENTICATED", new Boolean(true));</p>
<p>&nbsp;&nbsp;&nbsp;&nbsp; return SUCCESS;<br />&nbsp; }</p>
<p>&nbsp; else<br />&nbsp;&nbsp;&nbsp;&nbsp; return ERROR;<br />}</p></blockquote>
<p>É importante que desenvolvedores entendam que para garantir a seguranca de uma aplicação, é preciso configurar adequadamente todos os ativos que a suportam, como: Banco de Dados e Servidor de Aplicação. Um bom código sem uma infraestrutura adequada pode levar ao comprometimento da aplicação.</p>
]]></content:encoded>
			<wfw:commentRss>http://wagnerelias.com/2009/07/10/hardening-de-sessoes-em-ambiente-java/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Fiddler, uma boa opção para teste de app web</title>
		<link>http://wagnerelias.com/2009/06/08/fiddler-uma-boa-opcao-para-teste-de-app-web/</link>
		<comments>http://wagnerelias.com/2009/06/08/fiddler-uma-boa-opcao-para-teste-de-app-web/#comments</comments>
		<pubDate>Mon, 08 Jun 2009 23:08:48 +0000</pubDate>
		<dc:creator>Elias Wagner</dc:creator>
				<category><![CDATA[Security Developer]]></category>

		<guid isPermaLink="false">http://wagnerelias.com/2009/06/08/fiddler-uma-boa-opcao-para-teste-de-app-web/</guid>
		<description><![CDATA[Hoje ao analisar uma aplicação que só funcionava adequadamente no Internet Explorer, eu percebi o quanto sou dependente de alguns plugins do Firefox (HTTP Live Header, Tamper Data, Firebug, HTTPFox, entre outros). Eu realizo muitos testes manuais e eles são essenciais nestas análises, o Internet Explorer também possui alguns plugins, mas eu ainda não tive [...]]]></description>
			<content:encoded><![CDATA[<p>Hoje ao analisar uma aplicação que só funcionava adequadamente no Internet Explorer, eu percebi o quanto sou dependente de alguns plugins do Firefox (HTTP Live Header, Tamper Data, Firebug, HTTPFox, entre outros). Eu realizo muitos testes manuais e eles são essenciais nestas análises, o Internet Explorer também possui alguns plugins, mas eu ainda não tive a oportunidade de testá-los.</p>
<p>Como eu precisava de uma opção rápida, optei pelo <a href="http://www.fiddler2.com/"><strong>Fiddler</strong></a>. Já fazia um bom tempo que eu não o utilizava, a última vez foi para testar o <a href="http://websecuritytool.codeplex.com/"><strong>Watcher</strong></a>, quando foi lançado há alguns meses atrás.</p>
<p>O fiddler, atualmente na versão v2.2.2.2.2 Beta (isso mesmo, eu não me enganei na quantidade de números 2), é um sniffer bem completo e que possui uma série de plugins que ajudam muito na depuração e identificação de falhas em aplicações web. Com uma interface bastante apurada você pode mapear claramente a aplicação e inclusive documentar requisições usando a opção Comment. Para utilizar o Fiddler basta iniciá-lo e configurar o seu Internet Explorer para usar o proxy no endereço IP 127.0.0.1 (Localhost) na porta 8888.</p>
<p>Bom, vamos ao que interessa, as extensões que o Fiddler possui. Uma bem interessante e que lembra muito o modo de teste do <a href="http://code.google.com/p/ratproxy/"><strong>Ratproxy </strong></a>(análise passiva) do Google, é o Watcher. Esta extensão se acopla ao Fiddler e realiza uma série de testes de segurança da aplicação.</p>
<p>O modo de instalação do Watcher é bem simples, basta extrair os seguintes arquivos do pacote de instalação: Watcher.dll e WatcherCheckLib.dll no diretório scripts que se encontra no diretório: %userprofile%\My Documents\Fiddler2\Scripts no Windows XP e %userprofile%\Documents\Fiddler2\Scripts. Após a extração dos arquivos no diretório adequado é só reiniciar o Fiddler que irá aparecer uma aba chamada: Security Auditor.<br />
<strong><br />
Como utilizar o Watcher</strong>?</p>
<p>Na aba Security Auditor insira o domínio da aplicação que você deseja testar.</p>
<div><img style="max-width: 430px;" src="http://wagnerelias.com/wp-content/uploads/2009/06/watcher.jpg" alt="" /></div>
<p>Após definir o domínio é só clicar em Save Config e navegar na aplicação usando o Internet Explorer configurado para navegar usando o Fiddler como proxy.</p>
<p>Após navegar por toda a aplicação que você deseja testar, clique na aba Results do Watcher e confira a análise realizada.</p>
<p>O que eu achei bem interessante no Watcher foi a possibilidade de incluir, alterar as mensagens que ele analisa durante o parser nas respostas a requisições na página. Um que vale a pena gastar um tempo e incluir palavras chaves é o teste que procura por palavras chaves em comentários no código.</p>
<div><img style="max-width: 430px;" src="http://wagnerelias.com/wp-content/uploads/2009/06/comments1.jpg" alt="" /></div>
<p>Ah! Quem utiliza o Internet Explorer para testar aplicações e quer sugerir plugins, ferramentas, o comentário está ai pra isto.</p>
<p><strong>[Update 31/08/2009]</strong></p>
<p>Alguns plugins para o Internet Explorer:</p>
<p><a href="http://www.bayden.com/TamperIE/">Tamper IE:</a> Similar ao excelente Tamper Data do Firefox<br />
<a href="http://www.microsoft.com/downloadS/details.aspx?familyid=E59C3964-672D-4511-BB3E-2D5E1DB91038&amp;displaylang=en">Internet Explorer Developer Toolbar:</a> Similar ao Web developer Toolbar do Firefox<a href="http://www.httpwatch.com/"><br />
HTTP Watch:</a> Similar ao HTTP Live Header do Firefox<br />
<a href="http://www.nirsoft.net/">IECookiesView:</a> Similar ao CookieEditor do Firefox<a href="http://www.nirsoft.net/" target="_blank"></a></p>
]]></content:encoded>
			<wfw:commentRss>http://wagnerelias.com/2009/06/08/fiddler-uma-boa-opcao-para-teste-de-app-web/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Chamada de Trabalhos &#8211; OWASP AppSec Brasil 2009</title>
		<link>http://wagnerelias.com/2009/05/11/chamada-de-trabalhos-owasp-appsec-brasil-2009/</link>
		<comments>http://wagnerelias.com/2009/05/11/chamada-de-trabalhos-owasp-appsec-brasil-2009/#comments</comments>
		<pubDate>Mon, 11 May 2009 15:19:45 +0000</pubDate>
		<dc:creator>Elias Wagner</dc:creator>
				<category><![CDATA[eventos]]></category>
		<category><![CDATA[Security Developer]]></category>

		<guid isPermaLink="false">http://wagnerelias.com/2009/05/11/chamada-de-trabalhos-owasp-appsec-brasil-2009/</guid>
		<description><![CDATA[O OWASP solicita propostas de apresentações para a conferência internacional OWASP AppSec Brasil 2009, que ocorrerá na Câmara dos Deputados (Brasília, DF) de 27 a 30 de outubro de 2009. Haverão mini-cursos nos dias 27 e 28 de outubro, seguidos de sessões plenárias de trilha única nos dias 29 e 30 de outubro de 2009. [...]]]></description>
			<content:encoded><![CDATA[<p>O OWASP solicita propostas de apresentações para a conferência internacional OWASP AppSec Brasil 2009, que ocorrerá na Câmara dos Deputados (Brasília, DF) de 27 a 30 de outubro de 2009. Haverão mini-cursos nos dias 27 e 28 de outubro, seguidos de sessões plenárias de trilha única nos dias 29 e 30 de outubro de 2009. Esta conferência será promovida e organizada pela Comunidade TI-Controle e pela Câmara dos Deputados. </p>
<p>Buscamos pessoas e organizações que queiram ministrar palestras sobre segurança de aplicações. Em particular destacamos os seguintes tópicos de interesse: </p>
<dl>
<dd>
<ul>
<li> Modelagem de ameaças em aplicações (Application Threat Modeling) </li>
<li> Riscos de Negócio em Segurança de aplicações (Business Risks with Application Security) </li>
<li> Aplicações de Revisões de Código (Hands-on Source Code Review) </li>
<li> Métricas Aplicadas a Segurança de Aplicações (Metrics for Application Security) </li>
<li> Ferramentas e Projetos do OWASP (OWASP Tools and Projects) </li>
<li> Tópicos de Privacidade em Aplicações e Armazenamento de Dados (Privacy Concerns with Applications and Data Storage) </li>
<li> Práticas de Programação Segura (Secure Coding Practices) </li>
<li> Programas de Segurança para todo o Ciclo de Vida de alicações (Secure Development Lifecycle Programs) </li>
<li> Tópicos de Segurança para tecnologias específicas (AJAX, XML, Flash, etc) (Technology specific presentations on security such as AJAX, XML, etc) </li>
<li> Controles de Segurança para aplicações Web (Web Application Security countermeasures) </li>
<li> Testes de Segurança de aplicações Web (Web Application Security Testing) </li>
<li> Segurança de Web Services ou XML (Web Services-, XML- and Application Security) </li>
</ul>
</dd>
</dl>
<p>A lista de tópicos não é exaustiva; outros tópicos podem ser abordados, desde que em consonância com o tema central do evento. </p>
<p>As propostas devem conter: </p>
<dl>
<dd>
<ul>
<li> Nome do apresentador e dos demais autores </li>
<li> E-mail e telefone do apresentador </li>
<li> Curriculum resumido do apresentador e, opcionalmente, dos demais autores </li>
<li> Título da apresentação </li>
<li> Resumo e abstract </li>
<li> Lista de todos os assuntos a serem abordados durante a apresentação </li>
<li> Qualquer outro material que os autores julguem necessários (Estes materiais ficarão restritos ao comitê de programa) </li>
</ul>
</dd>
</dl>
<p>Cada apresentação terá 45 minutos de duração, seguidos de 10 minutos para perguntas da platéia. Todas as apresentações deverão estar em conformidade com as regras definidas pelo OWASP em seu "Speaker Agreement". </p>
<p><b>Datas importantes:</b> </p>
<dl>
<dd>  A data limite para apresentação de propostas é 11 de julho de 2009 às 23:59, horário de Brasília. </dd>
<dd>  A notificação de aceitação ocorrerá até o dia 7 de agosto de 2009. </dd>
<dd>  A versão final das apresentações deverá ser enviada até o dia 15 de setembro de 2009. </dd>
</dl>
<p>As propostas devem ser enviadas para o e-mail: <b>appsec.brasil@camara.gov.br</b> </p>
<p>Para mais informações, favor consultar as seguintes páginas: </p>
<dl>
<dd>  Página da conferência: <a href="https://www.owasp.org/index.php/AppSec_Brasil_2009_%28pt-br%29" class="external free" title="https://www.owasp.org/index.php/AppSec_Brasil_2009_(pt-br)" rel="nofollow">https://www.owasp.org/index.php/AppSec_Brasil_2009_(pt-br)</a> </dd>
<dd>  Perguntas frequentes: <a href="https://www.owasp.org/index.php/AppSec_Brasil_2009_-_FAQ_%28pt-br%29" class="external free" title="https://www.owasp.org/index.php/AppSec_Brasil_2009_-_FAQ_(pt-br)" rel="nofollow">https://www.owasp.org/index.php/AppSec_Brasil_2009_-_FAQ_(pt-br)</a> </dd>
<dd>  OWASP Speaker Agreement (em inglês): <a href="http://www.owasp.org/index.php/Speaker_Agreement" class="external free" title="http://www.owasp.org/index.php/Speaker_Agreement" rel="nofollow">http://www.owasp.org/index.php/Speaker_Agreement</a> </dd>
<dd>  Comunidade TI-Controle: <a href="http://www.ticontrole.gov.br/" class="external free" title="http://www.ticontrole.gov.br" rel="nofollow">http://www.ticontrole.gov.br</a> </dd>
<dd>  Câmara dos Deputados: <a href="http://www.camara.gov.br/" class="external free" title="http://www.camara.gov.br" rel="nofollow">http://www.camara.gov.br</a> </dd>
</dl>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" src="http://img.zemanta.com/pixy.gif?x-id=ac541e4a-2de4-8e27-a81e-2fb70f97bf5a" /></div>
]]></content:encoded>
			<wfw:commentRss>http://wagnerelias.com/2009/05/11/chamada-de-trabalhos-owasp-appsec-brasil-2009/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>OWASP AppSec Brazil 2009 &#8211; Brasília, 27-30 de outubro de 2009</title>
		<link>http://wagnerelias.com/2009/04/30/owasp-appsec-brazil-2009-brasilia-27-30-de-outubro-de-2009/</link>
		<comments>http://wagnerelias.com/2009/04/30/owasp-appsec-brazil-2009-brasilia-27-30-de-outubro-de-2009/#comments</comments>
		<pubDate>Thu, 30 Apr 2009 21:05:22 +0000</pubDate>
		<dc:creator>Elias Wagner</dc:creator>
				<category><![CDATA[Security Developer]]></category>

		<guid isPermaLink="false">http://wagnerelias.com/?p=644</guid>
		<description><![CDATA[Após a perseverança do Eduardo Neves, e o excelente trabalho do Lucas Ferreira, conseguimos aprovar o Primeiro OWASP AppSec Brazil. A conferência será realizada nos dias 27 a 29 de outubro de 2009 nas dependências da Câmara dos Deputados, em Brasília, DF é agora o primeiro OWASP AppSec Brazil 2009. Isso é uma vitória do [...]]]></description>
			<content:encoded><![CDATA[<p>Após a perseverança do <strong><a href="http://camargoneves.com">Eduardo Neves</a></strong>, e o excelente trabalho do <strong><a href="http://www.sapao.net/">Lucas Ferreira</a></strong>, conseguimos aprovar o Primeiro OWASP AppSec Brazil. A conferência será realizada nos dias 27 a 29 de outubro de 2009 nas dependências da Câmara dos Deputados, em Brasília, DF é agora o primeiro OWASP AppSec Brazil 2009. Isso é uma vitória do Capítulo OWASP Brasil que está tentando trazer o evento para o nosso país desde novembro de 2008 e finalmente conseguiu discutir o assunto com todos os envolvidos e conseguir a aprovação necessária para isso.</p>
<p>A Conferência será promovida pelo OWASP Brasil com o suporte da <a href="http://www.ti-controle.gov.br/" target="_blank">Comunidade TI-Controle</a> para tratar os diferentes assuntos relacionados a Segurança de Aplicações, tais como:</p>
<ul>
<li>Desenvolvimento seguro</li>
<li>Segurança e arquitetura de software</li>
<li>Processos de desenvolvimento de sistemas seguros</li>
<li>Ferramentas para análise de segurança de aplicações</li>
<li>Bibliotecas e frameworks de segurança para aplicações web</li>
<li>Auditoria e testes de segurança em aplicações</li>
<li>Metodologias gerenciais para melhoria da segurança no desenvolvimento de software</li>
<li>Análise de ataques a aplicações</li>
<li>Avaliação de riscos de negócio em aplicações web</li>
<li>Segurança de web services</li>
</ul>
<p>A Conferência terá dois dias de treinamentos (27 e 28 de outubro) seguidos de dois dias de palestras (29 e 30 de outubro). As chamadas de trabalho serão divulgadas neste fim de semana. A página com as informações relacionadas está disponível na Wiki da <a href="https://www.owasp.org/index.php/AppSec_Brasil_2009" target="_blank">OWASP</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://wagnerelias.com/2009/04/30/owasp-appsec-brazil-2009-brasilia-27-30-de-outubro-de-2009/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>

