Developers: Ignorance is… bliss?
Cristián Rojas, CSSLP
CLCERT Universidadde Chile
About: Cristián Rojas
●
Ingeniero Civil en
Computación y Tesista MSc-
CS DCC-UCHILE
●
Múltiples funciones en
INFOSEC:
– Mercenario-Consigliere
– Profesor-Instructor
– Investigador (CLCERT-UCHILE)
●
ISC2 Certified Secure Software
Lifecycle Professional (CSSLP)
●
INFOSEC-Privacy-Kittehs-
Beer Geek Foto: 8.8 Security Conference 2015. Meme: @RobertoRiquelme
Foto: 8.8 Security Conference 2015
Ya, ¿ahora sí?
Vulnerabilidades
Violación del principio de privilegio mínimo
●
Abuso de permisos en apps móviles
– Si tu app es para iluminar con el flash de la
cámara ¿necesitas permisos para acceder a
contactos, GPS, SMS, etc?
●
GRANT ALL PRIVILEGES ON my_db to
user;
Código de Debugging/Logging Abandonado
●
phpinfo.php
●
Código TRACE
abandonado
●
Builds generados en
modo Debug
●
Exceso de logging
– A veces con
información sensible
I want your SK now,
Mr. Anderson.
SHA1
RC4
Mala configuración SSL/TLS
Mal uso de cifrado en Reposo
●
ENCRYPT ALL THE THINGS!!!
●
Ya, pero…
– ¿Qué tipo de encriptación vas a usar?
– ¿Qué llave de cifrado?
●
Hardcodeadas
●
Basadas en información fácil de obtener
●
Algoritmos criptográficos tejidos en casa
– “Super-encriptación”
base64(md5(AES-ECB(data, DEVICE_ID)))
Mal almacenamiento de Passwords
●
Almacenamiento de
claves usando:
– Texto plano
– Hashes MD5
– Sin sal criptográfica
●
No conocen los KDF
– PBKDF2
– BCrypt
@cadcc
Exceso de confianza en secretos
●
Ocultamiento de
versiones de
servidores
●
Uso de medidas
anti-ingeniería
reversa
●
¿Eso realmente hace
más segura tu
aplicación?
Easy money!
“Terminator 2”, Tristar, 1991
Exceso de confianza en herramientas
●
Frameworks
– Ej. Ruby on Rails, Django, NodeJS, Android SDK,
iOS SDK, etc...
– ¿Tienen documentación de seguridad?
– “No, si el framework trae seguridad integrada. Yo
no tengo que preocuparme de nada”
Exceso de confianza en herramientas
●
Content Management
Systems (CMS)
– Ej. Wordpress, Drupal,
Joomla…
– ¿Qué consideraciones
de seguridad hay que
tener en cuenta?
– ¿Les hacemos un
cariñito de vez en
cuando? Eduardo Bonvallet, 1955-2015
Exceso de confianza en herramientas
●
Paneles de Control
– Ej. CPanel,
PHPMyAdmin
– Clásicos en servicios
de hosting
– Excesiva cantidad de
privilegios
– A menudo en
entornos HTTP sin
protección
Exceso de confianza en herramientas
●
“Usemos este scanner de vulnerabilidades”
(muy caro, dicho sea de paso)
– ¿Saben cómo accionar las vulnerabilidades que
reporta?
– ¿Saben cómo reconocer falsos positivos?
– ¿Son seguros para escanear ambientes de
producción?
●
La seguridad es algo que hay que pensar
¿Por qué los buenos
desarrolladores hacemos
código inseguro?
Factores Técnicos
●
“El todo es más que
la suma de sus
partes” (NOT!)
– Más que
desarrollando,
armando Legos
●
Hay fallas que surgen
espontáneamente
¿Por qué?
Factores psicológicos
●
Programar es una actividad difícil y
frustrante
●
Nunca debemos confiar ciegamente en el
código de otro (ahora... anda a que alguien
llegue a desconfiar del de uno)
●
Nosotros descansamos en la abstracción...
los chicos malos se fijan en los detalles
Factores del mundo real
●
La fuente de nuestro
código fuente
●
El desarrollo de
software es cada día
más democrático
●
La presión de
producir, producir,
producir
– Y seguridad, ¿cuándo?
Factores del mundo real
●
“¿Cuándo dejarán de vendernos esta
porquería?”
– “Cuando Ustedes dejen de comprarla”
●
Muchas compañías restan importancia a
incidentes
– Anda a contactar a alguna empresa por una
vulnerabilidad que les encontraste
Factores del mundo real
●
Cuando aprendemos
a programar,
¿vemos conceptos
de seguridad?
– ¿En cursos?
– ¿En manuales?
– ¿En documentación?
Requisitos Diseño Implementación Pruebas Operación
1X 1X
7X
15X
100X
IBM Systems Sciences Institute, “Implementing Software Inspections”
¿Qué podemos hacer?
Big Data
Cloud Computing
Mobile
Web 2.0, 3.0, 4….
Visualización
Sistemas recomendadores
Agile/Lean
Educación
●
¿Cursos?
– CC5315 (DCC-UCHILE)
– Taller de Seguridad Web (SPECT-UTFSM)
– NeoSecure: “Seguridad de Aplicaciones Web”
– ¿Algún otro?
●
¿Certificaciones?
– Certified Secure Software Lifecycle Professional (ISC2
CSSLP)
– Certified Software Development Professional (CSDP)
Educación
●
Documentación (disponible libremente)
– OWASP (Open Web Application Security Project)
●
OWASP Top 10 2013
●
Múltiple documentación online
– BSIMM-V (Build Security In Maturity Model)
– NowSecure: “42+ Best Practices for Secure iOS
and Android Development”
– CodePoet, “Locking Down Wordpress”
Educación
●
Libros
– McGraw, “Software Security”
– Howard, Lipner, “The Security Development
Lifecycle”
– Shostack, “Threat Modeling”
– Ristic, “Bulletproof SSL and TLS”
– Howard, LeBlanc, Viega, “24 Sins of Software
Security”
Herramientas
●
Configuración HTTPS
– Qualys SSL Test (online)
– Cipherscan (local)
●
Scanneres de vulnerabilidades
– OWASP ZAP
– BURP Suite
– W3AF
– wpscan (Wordpress)
Herramientas
●
Analizadores de seguridad en código
– Findbugs + Find Security Bugs (Java)
– JSPrime (NodeJS y otros frameworks JS)
– Brakeman (Rails)
– FXCop (.NET, desactualizada)
– PHP Code Sniffer + phpcs-security-audit
GRACIAS… TOTALES.
Contacto: crirojas@clcert.cl
@injenierobarsa

Developers: Ignorance is... bliss?

  • 1.
    Developers: Ignorance is…bliss? Cristián Rojas, CSSLP CLCERT Universidadde Chile
  • 2.
    About: Cristián Rojas ● IngenieroCivil en Computación y Tesista MSc- CS DCC-UCHILE ● Múltiples funciones en INFOSEC: – Mercenario-Consigliere – Profesor-Instructor – Investigador (CLCERT-UCHILE) ● ISC2 Certified Secure Software Lifecycle Professional (CSSLP) ● INFOSEC-Privacy-Kittehs- Beer Geek Foto: 8.8 Security Conference 2015. Meme: @RobertoRiquelme
  • 3.
    Foto: 8.8 SecurityConference 2015 Ya, ¿ahora sí?
  • 4.
  • 5.
    Violación del principiode privilegio mínimo ● Abuso de permisos en apps móviles – Si tu app es para iluminar con el flash de la cámara ¿necesitas permisos para acceder a contactos, GPS, SMS, etc? ● GRANT ALL PRIVILEGES ON my_db to user;
  • 6.
    Código de Debugging/LoggingAbandonado ● phpinfo.php ● Código TRACE abandonado ● Builds generados en modo Debug ● Exceso de logging – A veces con información sensible
  • 7.
    I want yourSK now, Mr. Anderson. SHA1 RC4 Mala configuración SSL/TLS
  • 9.
    Mal uso decifrado en Reposo ● ENCRYPT ALL THE THINGS!!! ● Ya, pero… – ¿Qué tipo de encriptación vas a usar? – ¿Qué llave de cifrado? ● Hardcodeadas ● Basadas en información fácil de obtener ● Algoritmos criptográficos tejidos en casa – “Super-encriptación”
  • 10.
  • 12.
    Mal almacenamiento dePasswords ● Almacenamiento de claves usando: – Texto plano – Hashes MD5 – Sin sal criptográfica ● No conocen los KDF – PBKDF2 – BCrypt @cadcc
  • 13.
    Exceso de confianzaen secretos ● Ocultamiento de versiones de servidores ● Uso de medidas anti-ingeniería reversa ● ¿Eso realmente hace más segura tu aplicación? Easy money! “Terminator 2”, Tristar, 1991
  • 14.
    Exceso de confianzaen herramientas ● Frameworks – Ej. Ruby on Rails, Django, NodeJS, Android SDK, iOS SDK, etc... – ¿Tienen documentación de seguridad? – “No, si el framework trae seguridad integrada. Yo no tengo que preocuparme de nada”
  • 15.
    Exceso de confianzaen herramientas ● Content Management Systems (CMS) – Ej. Wordpress, Drupal, Joomla… – ¿Qué consideraciones de seguridad hay que tener en cuenta? – ¿Les hacemos un cariñito de vez en cuando? Eduardo Bonvallet, 1955-2015
  • 16.
    Exceso de confianzaen herramientas ● Paneles de Control – Ej. CPanel, PHPMyAdmin – Clásicos en servicios de hosting – Excesiva cantidad de privilegios – A menudo en entornos HTTP sin protección
  • 17.
    Exceso de confianzaen herramientas ● “Usemos este scanner de vulnerabilidades” (muy caro, dicho sea de paso) – ¿Saben cómo accionar las vulnerabilidades que reporta? – ¿Saben cómo reconocer falsos positivos? – ¿Son seguros para escanear ambientes de producción? ● La seguridad es algo que hay que pensar
  • 18.
    ¿Por qué losbuenos desarrolladores hacemos código inseguro?
  • 19.
    Factores Técnicos ● “El todoes más que la suma de sus partes” (NOT!) – Más que desarrollando, armando Legos ● Hay fallas que surgen espontáneamente ¿Por qué?
  • 20.
    Factores psicológicos ● Programar esuna actividad difícil y frustrante ● Nunca debemos confiar ciegamente en el código de otro (ahora... anda a que alguien llegue a desconfiar del de uno) ● Nosotros descansamos en la abstracción... los chicos malos se fijan en los detalles
  • 21.
    Factores del mundoreal ● La fuente de nuestro código fuente ● El desarrollo de software es cada día más democrático ● La presión de producir, producir, producir – Y seguridad, ¿cuándo?
  • 22.
    Factores del mundoreal ● “¿Cuándo dejarán de vendernos esta porquería?” – “Cuando Ustedes dejen de comprarla” ● Muchas compañías restan importancia a incidentes – Anda a contactar a alguna empresa por una vulnerabilidad que les encontraste
  • 23.
    Factores del mundoreal ● Cuando aprendemos a programar, ¿vemos conceptos de seguridad? – ¿En cursos? – ¿En manuales? – ¿En documentación?
  • 24.
    Requisitos Diseño ImplementaciónPruebas Operación 1X 1X 7X 15X 100X IBM Systems Sciences Institute, “Implementing Software Inspections”
  • 25.
  • 26.
    Big Data Cloud Computing Mobile Web2.0, 3.0, 4…. Visualización Sistemas recomendadores Agile/Lean
  • 27.
    Educación ● ¿Cursos? – CC5315 (DCC-UCHILE) –Taller de Seguridad Web (SPECT-UTFSM) – NeoSecure: “Seguridad de Aplicaciones Web” – ¿Algún otro? ● ¿Certificaciones? – Certified Secure Software Lifecycle Professional (ISC2 CSSLP) – Certified Software Development Professional (CSDP)
  • 28.
    Educación ● Documentación (disponible libremente) –OWASP (Open Web Application Security Project) ● OWASP Top 10 2013 ● Múltiple documentación online – BSIMM-V (Build Security In Maturity Model) – NowSecure: “42+ Best Practices for Secure iOS and Android Development” – CodePoet, “Locking Down Wordpress”
  • 29.
    Educación ● Libros – McGraw, “SoftwareSecurity” – Howard, Lipner, “The Security Development Lifecycle” – Shostack, “Threat Modeling” – Ristic, “Bulletproof SSL and TLS” – Howard, LeBlanc, Viega, “24 Sins of Software Security”
  • 30.
    Herramientas ● Configuración HTTPS – QualysSSL Test (online) – Cipherscan (local) ● Scanneres de vulnerabilidades – OWASP ZAP – BURP Suite – W3AF – wpscan (Wordpress)
  • 31.
    Herramientas ● Analizadores de seguridaden código – Findbugs + Find Security Bugs (Java) – JSPrime (NodeJS y otros frameworks JS) – Brakeman (Rails) – FXCop (.NET, desactualizada) – PHP Code Sniffer + phpcs-security-audit
  • 32.