Developers: Ignorance is... bliss?

32
Developers: Ignorance is… bliss? Cristián Rojas, CSSLP CLCERT Universidad de Chile

Transcript of Developers: Ignorance is... bliss?

Developers: Ignorance is… bliss?Cristián Rojas, CSSLP

CLCERT Universidad de 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 1X7X

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: [email protected]@injenierobarsa