2. ● Enero 2011: Sony demanda a modders por hacer
jailbreaking e ingeniería reversa de la PS3.
● Abril 2011: PSN recibe ataques DDOS y SQL
Injection los cuales roban información de tarjetas
de crédito de sus usuarios. Sony cierra PSN por 24
días.
● Mayo 2011: Aparece un sitio de phishing en un
servidor Sony
● Junio 2011: Se filtran bases de datos y cupones
de Sony Rusia, Sony Portugal, Sony Francia y Sony
Europa.
3. Costo de los ataques para Sony:
USD 24x10⁹
Costo de prevención:
< USD 10000
Fuente: Veracode, "Sony PSN Breach Infographic"
4. [cci]
Ciclo de
Charlas
Informáticas
Seguridad de Software: Una Introducción
Cristián Rojas
Consultor en Seguridad de Software – Investigador Asistente CLCERT Universidad de Chile
6. ● 6 mitos sobre seguridad
● ¿Por qué los buenos desarrolladores
escribimos mal código? 3 factores
cruciales
● La trinidad de los problemas
● ¿No? Importancia de la seguridad
Seguridad de Software: Una Introducción
8. Mito 2: Seguridad "Next"
No, si mi framework trae
seguridad integrada. No
tengo de qué preocuparme.
Seguridad de Software: Una Introducción
9. Mito 3: "Nunca nos han atacado"
● Igual que los avisos de inversiones:
"Rentabilidad pasada no asegura rentabilidad
futura"
● ¿Y para qué construir un paso de cebra frente al
colegio si nunca han atropellado a nadie ahí? (¿O
es muy tonto lo que estoy diciendo?)
● La verdad es que no nos han atacado... aún.
Seguridad de Software: Una Introducción
10. Mito 3: "Nunca nos han atacado"
● "Pero cómo podría alguien atacarnos si somos una
empresa chica/PYME/startup"
– Generalmente no tienen medidas de seguridad
implementadas
– Faltan especialistas que desarrollen políticas de
seguridad
– 83% de los ataques son oportunistas, más que
orientados
Biztech: "Hackers Have Their Eye On Small Business"
Seguridad de Software: Una Introducción
11. Mito 4: "Tenemos un firewall"
Seguridad de Software: Una Introducción
12. Mito 5: Los ataques sólo vienen de afuera
● La incidencia de ataques
desde dentro de la
organización bordea el
20%
● Y pueden no
necesariamente ser
ataques
● Los usuarios son el peor
enemigo de una aplicación
Seguridad de Software: Una Introducción
13. Mito 5: Los ataques sólo vienen de afuera
● Los usuarios son más
peligrosos que los
mismos crackers:
– Curiosos
– Torpes
– Crédulos
– Malévolos
– Petulantes
Seguridad de Software: Una Introducción
14. Mito 6: Sólo para "juáquers"
Me han contado que los mejores
crackers del mundo hacen esta pega
en 60 minutos...
Lamentablemente yo necesito a
alguien que la haga en 60 segundos.
"Swordfish", Warner Bros, 2001. Seguridad de Software: Una Introducción
15. ¿Por qué los buenos desarrolladores
escribimos mal código?
Seguridad de Software: Una Introducción
16. Factores técnicos
● “El todo es más que la suma de sus
partes” (NOT!)
● Hay fallas de seguridad que surgen
espontáneamente ¿Por qué?
Seguridad de Software: Una Introducción
17. Factores psicológicos
● Programar es una actividad difícil y frustrante
● Nosotros descansamos en la abstracción... los
chicos malos se fijan en los detalles
● Nunca debemos confiar ciegamente en el código
de otro (ahora... anda a que alguien llegue a
desconfiar del de uno)
Seguridad de Software: Una Introducción
19. Factores del mundo real
● La fuente de nuestro código fuente
● El desarrollo de software es un proceso
democrático
● La presión de producir, producir, producir
– ¡¡¡Margen, margen, margen!!! Y calidad, ¿cuándo?
Seguridad de Software: Una Introducción
20. Factores del mundo real
● “¿Cuán seguro?” “Lo suficiente”
– “¿Cuándo dejarán de vendernos esta porquería?”
“Cuando Ustedes dejen de comprarla”
– Si se emplea tiempo en chequear posibles fallas de
seguridad, habrá menos ingenieros dedicados a añadir
nuevas características
– Muchas compañías restan importancia a incidentes
● Se nos enseña a desarrollar, pero no en forma
segura
Seguridad de Software: Una Introducción
22. ¿No? importancia de la seguridad
● ROI (margen)
● Ejercicio: ¿Cotizarías
voluntariamente en una Isapre?
● ¿Es bacán la seguridad?
Seguridad de Software: Una Introducción
24. Educación
● ¿Sabemos qué
vulnerabilidades hay y
cómo mitigarlas?
– Tutoriales en línea
(OWASP Top 10,
CWE/Sans Top 25...)
– Libros
Seguridad de Software: Una Introducción
25. Educación
● Aplicaciones débiles a
propósito
– NOWASP (Mutillidae)
– Google Gruyére
– OWASP WebGoat
Seguridad de Software: Una Introducción
26. Análisis de seguridad
● Minimizar la superficie
de ataque: Acceso
remoto
1) ¿Esa característica es qu
e
ata
realmente importante? Acceso
restringido ie
de
erfic
up
2) ¿Quien necesita esa ay
o rs
Acceso M
funcionalidad y desde local
dónde?
Acceso Acceso para Acceso
3) Reducir privilegios sólo para
admin
usuarios anónimo
Seguridad de Software: Una Introducción
27. Análisis de seguridad
● Threat Modeling: Herramienta que busca obtener
una visión general del sistema en términos de
seguridad:
1) Determinar dependencias y supuestos
2) Modelar el sistema
3) Determinar las amenazas
4) Calcular riesgos
5) Mitigar
Seguridad de Software: Una Introducción
29. Utilizar herramientas automatizadas
● Limitaciones
– Las herramientas automatizadas tienen las mismas
limitaciones que los antivirus
– Por lo mismo, utilizarlas como parte de un programa de
desarrollo de software seguro
● Precaución con el análisis externo
– Utilizar sandboxing
– NUNCA hacer las pruebas sobre un sitio en producción.
Seguridad de Software: Una Introducción
32. Aplicar buenas prácticas
● Diseño simple
● Prepared Statements y permisos para bases de
datos
● Validar entradas (contra XSS, inyecciones varias,
usar lista blanca)
● Poner atención a las configuraciones por defecto.
Suelen ser inseguras.
Seguridad de Software: Una Introducción
33. Aplicar buenas prácticas
● Completa mediación: Revisar privilegios siempre
antes de hacer una operación crítica
● Atentos a los privilegios (privilegio mínimo,
separación de privilegios)
● Compartimentalizar la aplicación
● Aceptabilidad psicológica: No hacer el sistema tan
seguro que termine siendo inusable
Seguridad de Software: Una Introducción
35. Soportar todo el software
● Mucho de nuestro software depende de otro software:
– Bibliotecas externas
– Frameworks
– Etc.
● Atentos a avisos de seguridad de software externo
● Si las vulnerabilidades para ese software no se corrigen:
– Corregirlo nosotros mismos
– Buscar alternativas
Seguridad de Software: Una Introducción
36. Desarrollar un "Security Response"
● El software nunca quedará perfecto, por lo tanto es
bueno armar un plan de respuesta a incidentes
● Fomentar la divulgación: ¿Abierta o responsable?
● Adelantarse: Encontrar las vulnerabilidades antes
que un investigador/cracker/ocioso lo haga
● Al lanzar un parche, no preocuparnos sólo de
corregir, sino también de evitar regresiones
Seguridad de Software: Una Introducción
37. Demo
(Un intento por hacer bacán la seguridad)
Fuente: https://github.com/injcristianrojas/swsec-intro
Seguridad de Software: Una Introducción
38. Links interesantes
● Veracode, "Sony PSN Breach Infographic"
http://www.veracode.com/resources/sony-psn-infographic
● "Hackers Have Their Eye On Small Business"
http://www.biztechmagazine.com/article/2012/05/hackers-have-their-eye-small-business-infographic
● Veracode: "Stay Cool, Nobody is Calling Your Baby
Ugly"
http://www.veracode.com/blog/2011/10/stay-cool-nobody-is-calling-your-baby-ugly/
● Aplicación de demostración JEE/Maven
https://github.com/injcristianrojas/swsec-intro
Seguridad de Software: Una Introducción
39. Links revelantes
● OWASP Top 10
https://www.owasp.org/index.php/Top_10
● CWE/SANS Top 25 Most Dangerous Software Errors
http://www.sans.org/top25-software-errors/
● OWASP: "Threat Risk Modeling"
https://www.owasp.org/index.php/Threat_Risk_Modeling
● 42+ best practices for secure mobile development in iOS and
Android
https://viaforensics.com/resources/reports/best-practices-ios-android-secure-mobile-development/
● Microsoft: "SDL Process: Design"
http://www.microsoft.com/security/sdl/discover/design.aspx
Seguridad de Software: Una Introducción
40. Blbliografía
● McGraw: "Software Security: Building Security In"
● Viega, McGraw: "Building Secure Software"
● Howard, LeBlanc, Viega: "24 Sins of Software
Security"
● Howard, Lipner: "The Security Development
Lifecycle"
● Graff, Van Wyk: "Secure Coding: Principles &
Practices"
Seguridad de Software: Una Introducción
41. Muchas gracias por su
atención.
¿Preguntas?
¿Comentarios?
Contacto:
injcristianrojas@gmail.com
Seguridad de Software: Una Introducción