Security Testing para Rails




   Cristián Rojas
   Especialista en Seguridad de Software
   Inexperto en desarrollo Ruby/Rails
¿Es Rails seguro?
¿Entonces por qué no probamos seguridad?


def test_sql_injection
  visit "http://www.misitiobacan.cl"
  fill_in "user", :with => "cracker"
  fill_in "password", :with => "' OR '1'='1"
  click_button "Ingresar"
  response.should_not contain("bienvenido,")
end
¿Qué vulnerabilidades puede haber?
●
    Cross site scripting (XSS)
●
    SQL injection
●
    Command injection
●
    Cross-Site Request Forgery (CSRF)
●
    Redirecciones no protegidas
●
    Acceso inseguro a archivos
●
    Rutas por defecto
●
    Validación insuficiente de modelos
●
    Abuso de mass assignment
●
    Uso peligroso de eval()
●
    …etc.
¿Qué hacemos?
gem install brakeman
        (perro)
Brakeman
●
    Es un analizador estático
●
    Detecta vulnerabilidades:
    –   Que nosotros introducimos en
        nuestras apps
    –   Inherentes a la versión Rails que
        utilizamos
●
    Se integra con rake y herramientas
    CI como Jenkins (¿ew?) o Guard
Demo
Sin embargo...
¿Será suficiente con Brakeman?
Recursos
●
    Ruby on Rails Security Guide:
    http://guides.rubyonrails.org/security.html
●
    Analizador Estático Brakeman:
    http://brakemanscanner.org/
●
    ¿Todas las vulnerabilidades se vuelven obvias?:
    http://injcristianrojas.github.com/analisis/2012/12/26/t
    odas-las-vulnerabilidades-se-vuelven-obvias/
●
    Ruby on Rails releases "extremely critical" fixes:
    http://www.scmagazine.com/ruby-on-rails-releases-extrem
    ely-critical-fixes/article/275399/
Muchas gracias por
   su atención.

   ¿Preguntas?
  ¿Comentarios?

Security Testing para Rails

  • 1.
    Security Testing paraRails Cristián Rojas Especialista en Seguridad de Software Inexperto en desarrollo Ruby/Rails
  • 2.
  • 3.
    ¿Entonces por quéno probamos seguridad? def test_sql_injection visit "http://www.misitiobacan.cl" fill_in "user", :with => "cracker" fill_in "password", :with => "' OR '1'='1" click_button "Ingresar" response.should_not contain("bienvenido,") end
  • 4.
    ¿Qué vulnerabilidades puedehaber? ● Cross site scripting (XSS) ● SQL injection ● Command injection ● Cross-Site Request Forgery (CSRF) ● Redirecciones no protegidas ● Acceso inseguro a archivos ● Rutas por defecto ● Validación insuficiente de modelos ● Abuso de mass assignment ● Uso peligroso de eval() ● …etc.
  • 5.
  • 6.
  • 7.
    Brakeman ● Es un analizador estático ● Detecta vulnerabilidades: – Que nosotros introducimos en nuestras apps – Inherentes a la versión Rails que utilizamos ● Se integra con rake y herramientas CI como Jenkins (¿ew?) o Guard
  • 8.
  • 9.
  • 11.
    Recursos ● Ruby on Rails Security Guide: http://guides.rubyonrails.org/security.html ● Analizador Estático Brakeman: http://brakemanscanner.org/ ● ¿Todas las vulnerabilidades se vuelven obvias?: http://injcristianrojas.github.com/analisis/2012/12/26/t odas-las-vulnerabilidades-se-vuelven-obvias/ ● Ruby on Rails releases "extremely critical" fixes: http://www.scmagazine.com/ruby-on-rails-releases-extrem ely-critical-fixes/article/275399/
  • 12.
    Muchas gracias por su atención. ¿Preguntas? ¿Comentarios?