segurança em aplicações web myke hamada mykesh <at> gmail 1
whoami ciência da computação segurança da informação ruby rails c# vbscript opensource microsoft ethical hacking 2
agenda introdução ontem e hoje input validation security on ruby on rails ferramentas considerações finais conclusão referências sql injection xss csrf 3
introdução web application é um alvo fácil sql injection é uma tecnica bem documentada muitos desenvolvedores de software não tem uma real definição do que é sql injection ou xss não é objetivo desta apresentação mostrar técnicas de invasão, mas sim como previnir ataques 4
ontem páginas estáticas poucas tecnologias outros alvos 5
hoje sites dinâmicos muitas ferramentas novos vetores de ataque informação muito fácil baixo conhecimento 6
hoje (cont) owasp top 10 7
input validation você valida de que lado? números devem números strings devem ser strings o dado que é recebido é válido? o formato do dado é válido? codificação / decodificação não esqueça de validar os dados de saída!!! 8
security on ror convenção sobre configuração rails 1.2.5 (novembro/2007) componentes de validação model: sql injection view: xss controller: métodos (insecure object reference) e csrf 9
security on ror (cont) evite: strip_tags strip_links sanitize alternativas: white_list html_escape validates_email_veracity_of validates_email_format_of redcloth safe_erb csrf_killer 10
sql injection o comando inserido na entrada é interpretado como parte do código o interpretador entende o código de entrada como um comando comando é executado pelo interpretador impacto: criar, ler, atualizar e excluir dados é possível alterar a aplicação/s.o. e fazer o bypass de todos os controles de firewall/ips 11
model: sql injection Email.find_all "owner_id = 123 AND subject = '#{@params['subject']}'" "owner_id = 123 AND subject = '' OR 1 --'' subject = @params['subject'] Email.find_all [ "owner_id = 123 AND subject =?", subject ] 12
cross site scripting? xss? css? activex / javascript / vbscript / html / flash / pdf web application recebe a informação (link) codifica a parte maliciosa do link o link altera a cara do site forum e guesbooks 13
xss (cont) http://host:8987/?<script>alert('vulnerable to XSS');</script> account hijacking false advertising user settings cookie 14
view: xss http://ror/controller/action?text=<script>alert(document.cookie)</script> <%= @params['text_xss'] %> <script>alert( document.cookie )</script> <%=h post.subject %> <%=h post.text %> 15
csrf web browser carrega um site malicioso web browser envia solicitações http para um outro site tag IMG ou FORM / javascript impacto: acesso a conta bancária, envio de comentários, acesso a lista de e-mails, compras online 16
csrf site darth vader 1 2 3 vítim a 4 site dory 17
controller: csrf cuidado com controller/:action use: hide_action <img src="http://rails/order/20/delete" /> solução: use o plugin csrf_killer 18
ferramentas web inspect acunetix watchfire appscan n-stalker hacker safe metasploit framework nikto / wikto paros proxy web scarab w3af priamos nessus burp 19
considerações finais utilize filtros de validação root/sys/sa/admin/dba. nunca serão! negar acesso a s.p. e a ferramentas de admin chroot neles!!! cuidado com url parameter captcha auditar o código ids/ips hardening head, put, delete, trace 20
conclusão desenvolver código seguro é fácil priorize áreas críticas do negócio treinamento least privilege web application firewall sql proxy faça muitos testes, mas defina um escopo coma tecnologia com farofa 21
referências www.owasp.org manuals.rubyonrails.com/read/chapter/40 www.quarkruby.com/2007/9/20/ruby-on-rails-security-guide jeremiahgrossman.blogspot.com www.rorsecurity.info www.cgisecurity.com railsify.com/categories/security-production mysqlsecurity.com www.matasano.com/log www.webappsec.org ha.ckers.org/xss.html www.railslodge.com/plugins svn.techno-weenie.net/projects/plugins ferruh.mavituna.com/makale/sql-injection-cheatsheet www.foundstone.com/us/resources/proddesc/hacmecasino.htm 22