Está en la página 1de 41

Enero 2011: Sony demanda a modders por hacer

jailbreaking e ingeniera reversa de la PS3.


Abril 2011: PSN recibe ataques DDOS y SQL
Injection los cuales roban informacin de tarjetas
de crdito de sus usuarios. Sony cierra PSN por 24
das.
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.

Costo de los ataques para Sony:

USD 24x10
Costo de prevencin:

< USD 10000


Fuente: Veracode, "Sony PSN Breach Infographic"

[cci]

Ciclo de
Charlas
Informticas

Seguridad de Software: Una Introduccin


Cristin Rojas

Consultor en Seguridad de Software Investigador Asistente CLCERT Universidad de Chile

Primera parte:

Es importante la seguridad?

Seguridad de Software: Una Introduccin

6 mitos sobre seguridad


Por qu los buenos desarrolladores
escribimos mal cdigo? 3 factores
cruciales
La trinidad de los problemas
No? Importancia de la seguridad

Seguridad de Software: Una Introduccin

Mito 1: Seguridad 100%

Seguridad de Software: Una Introduccin

Mito 2: Seguridad "Next"


No, si mi framework trae
seguridad integrada. No
tengo de qu preocuparme.

Seguridad de Software: Una Introduccin

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... an.

Seguridad de Software: Una Introduccin

Mito 3: "Nunca nos han atacado"

"Pero cmo podra alguien atacarnos si somos una


empresa chica/PYME/startup"

Generalmente no tienen medidas de seguridad


implementadas

Faltan especialistas que desarrollen polticas de


seguridad

83% de los ataques son oportunistas, ms que


orientados
Biztech: "Hackers Have Their Eye On Small Business"

Seguridad de Software: Una Introduccin

Mito 4: "Tenemos un firewall"

Seguridad de Software: Una Introduccin

Mito 5: Los ataques slo vienen de afuera

La incidencia de ataques
desde dentro de la
organizacin bordea el
20%
Y pueden no
necesariamente ser
ataques
Los usuarios son el peor
enemigo de una aplicacin

Seguridad de Software: Una Introduccin

Mito 5: Los ataques slo vienen de afuera

Los usuarios son ms


peligrosos que los
mismos crackers:

Curiosos

Torpes

Crdulos

Malvolos

Petulantes

Seguridad de Software: Una Introduccin

Mito 6: Slo para "juquers"


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 Introduccin

Por qu los buenos desarrolladores


escribimos mal cdigo?

Seguridad de Software: Una Introduccin

Factores tcnicos

El todo es ms que la suma de sus


partes (NOT!)
Hay fallas de seguridad que surgen
espontneamente Por qu?

Seguridad de Software: Una Introduccin

Factores psicolgicos

Programar es una actividad difcil y frustrante


Nosotros descansamos en la abstraccin... los
chicos malos se fijan en los detalles
Nunca debemos confiar ciegamente en el cdigo
de otro (ahora... anda a que alguien llegue a
desconfiar del de uno)

Seguridad de Software: Una Introduccin

Desarrolladores escriben cdigo


while(true) {
Especialista en seguridad dice "UR DOIN IT WRONG!"
Desarrolladores hacen cambios
}

Seguridad de Software: Una Introduccin

Factores del mundo real

La fuente de nuestro cdigo fuente


El desarrollo de software es un proceso
democrtico
La presin de producir, producir, producir

Margen, margen, margen!!! Y calidad, cundo?

Seguridad de Software: Una Introduccin

Factores del mundo real

Cun seguro? Lo suficiente

Cundo dejarn de vendernos esta porquera?


Cuando Ustedes dejen de comprarla

Si se emplea tiempo en chequear posibles fallas de


seguridad, habr menos ingenieros dedicados a aadir
nuevas caractersticas

Muchas compaas restan importancia a incidentes

Se nos ensea a desarrollar, pero no en forma


segura

Seguridad de Software: Una Introduccin

Interconectividad
Extensibilidad
Complejidad
(La Trinidad de los problemas)

Seguridad de Software: Una Introduccin

No? importancia de la seguridad

ROI (margen)
Ejercicio: Cotizaras
voluntariamente en una Isapre?
Es bacn la seguridad?

Seguridad de Software: Una Introduccin

Segunda parte:

Cmo asegurar nuestro


software?

Seguridad de Software: Una Introduccin

Educacin

Sabemos qu
vulnerabilidades hay y
cmo mitigarlas?

Tutoriales en lnea
(OWASP Top 10,
CWE/Sans Top 25...)

Libros

Seguridad de Software: Una Introduccin

Educacin

Aplicaciones dbiles a
propsito

NOWASP (Mutillidae)

Google Gruyre

OWASP WebGoat

Seguridad de Software: Una Introduccin

Anlisis de seguridad

Minimizar la superficie
de ataque:
1) Esa caracterstica es
realmente importante?
2) Quien necesita esa
funcionalidad y desde
dnde?
3) Reducir privilegios

Acceso
remoto
Acceso
restringido

Acceso
local

yo
a
M

Acceso
slo para
admin

e
d
e
ici
f
r
pe
u
rs

ue
q
ata

Acceso para
usuarios

Acceso
annimo

Seguridad de Software: Una Introduccin

Anlisis de seguridad

Threat Modeling: Herramienta que busca obtener


una visin general del sistema en trminos de
seguridad:
1)

Determinar dependencias y supuestos

2)

Modelar el sistema

3)

Determinar las amenazas

4)

Calcular riesgos

5)

Mitigar

Seguridad de Software: Una Introduccin

Utilizar herramientas automatizadas

Anlisis Interno

Analizadores estticos

Anlisis externo
(pentesting)

Fuzzers

Seguridad de Software: Una Introduccin

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

Precaucin con el anlisis externo

Utilizar sandboxing

NUNCA hacer las pruebas sobre un sitio en produccin.

Seguridad de Software: Una Introduccin

Utilizar herramientas automatizadas

Analizadores estticos:

Findbugs, PMD, CodePro Analytix (Java)

RATS, Flawfinder (C/C++/PHP/Python)

FXCop (.NET)

Brakeman (Rails)

Seguridad de Software: Una Introduccin

Utilizar herramientas automatizadas

Fuzzers:

Websecurify

W3AF

Skipfish

Sandboxes

Chroot

Virtualizadores: Virtualbox (vagrant), VMWare...

Seguridad de Software: Una Introduccin

Aplicar buenas prcticas

Diseo simple
Prepared Statements y permisos para bases de
datos
Validar entradas (contra XSS, inyecciones varias,
usar lista blanca)
Poner atencin a las configuraciones por defecto.
Suelen ser inseguras.

Seguridad de Software: Una Introduccin

Aplicar buenas prcticas

Completa mediacin: Revisar privilegios siempre


antes de hacer una operacin crtica
Atentos a los privilegios (privilegio mnimo,
separacin de privilegios)
Compartimentalizar la aplicacin
Aceptabilidad psicolgica: No hacer el sistema tan
seguro que termine siendo inusable

Seguridad de Software: Una Introduccin

Seguridad de Software: Una Introduccin

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 Introduccin

Desarrollar un "Security Response"

El software nunca quedar perfecto, por lo tanto es


bueno armar un plan de respuesta a incidentes
Fomentar la divulgacin: Abierta o responsable?
Adelantarse: Encontrar las vulnerabilidades antes
que un investigador/cracker/ocioso lo haga
Al lanzar un parche, no preocuparnos slo de
corregir, sino tambin de evitar regresiones

Seguridad de Software: Una Introduccin

Demo
(Un intento por hacer bacn la seguridad)
Fuente: https://github.com/injcristianrojas/swsec-intro

Seguridad de Software: Una Introduccin

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/

Aplicacin de demostracin JEE/Maven


https://github.com/injcristianrojas/swsec-intro

Seguridad de Software: Una Introduccin

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 Introduccin

Blbliografa

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 Introduccin

Muchas gracias por su


atencin.
Preguntas?
Comentarios?
Contacto:
injcristianrojas@gmail.com

Seguridad de Software: Una Introduccin

También podría gustarte