62
Curso: (62612) Dise˜ no de aplicaciones seguras Fernando Tricas Garc´ ıa Departamento de Inform´ atica e Ingenier´ ıa de Sistemas Universidad de Zaragoza http://www.cps.unizar.es/ ~ ftricas/ http://moodle.unizar.es/ [email protected] 62612 Dise˜ no de aplicaciones seguras. Fernando Tricas Garc´ ıa. 1

Introduccion a un curso de Programación Segura

Embed Size (px)

DESCRIPTION

Dentro del Curso del Programa Oficial de Posgrado en Ingeniería Informática imparto con otros colegas una asignatura de Diseño de Aplicaciones Seguras (http://webdiis.unizar.es/~ftricas/Asignaturas/seguridadD/Home.html). Estas son las transparencias de la Introducción por si pueden servirle a alguien. Casi dos horas de clase. Son una actualización de las del curso pasado, que puse en: http://www.slideshare.net/fernand0/desarrollo-de-aplicaciones-segurias/

Citation preview

Page 1: Introduccion a un curso de Programación Segura

Curso: (62612) Diseno de aplicaciones seguras

Fernando Tricas Garcıa

Departamento de Informatica e Ingenierıa de SistemasUniversidad de Zaragoza

http://www.cps.unizar.es/~ftricas/

http://moodle.unizar.es/

[email protected]

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 1

Page 2: Introduccion a un curso de Programación Segura

Introduccion

Fernando Tricas Garcıa

Departamento de Informatica e Ingenierıa de SistemasUniversidad de Zaragoza

http://www.cps.unizar.es/~ftricas/

http://moodle.unizar.es/

[email protected]

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 2

Page 3: Introduccion a un curso de Programación Segura

Un ındice

I Introduccion

I Gestion de riesgos

I Seleccion de tecnologıas

I Codigo abierto o cerrado

I Principios

I Auditorıa de programas

I Desbordamiento de memoria

I Control de acceso

I Condiciones de carrera

I Aleatoriedad y determinismo

I Aplicacion de la criptografıa

I Gestion de la confianza yvalidacion de entradas

I Autentificacion con claves

I Seguridad en bases de datos

I Seguridad en el cliente

I En la web

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 3

Page 4: Introduccion a un curso de Programación Segura

Introduccion. Antes de empezar.

I Se invierte mucho tiempo, dinero y esfuerzo en seguridad anivel de red por la mala calidad de los programas.

I Algunas veces los cortafuegos, los sistemas de deteccion deintrusos (IDS) ayudan.

I Los programas malos son mucho mas abundantes de lo quecreemos.

I La forma de desarrollar los programas es responsable en granmedida del problema.

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 4

Page 5: Introduccion a un curso de Programación Segura

Cifras

I El 30 % de los proyectos en entornos empresariales se cancelansin haber sido finalizados.

I De los que se terminan, el 30 % cuesta al final entre un 150 %y un 200 % del presupuesto original.

I En 2002 el ‘National Institute of Standards and Technology’(NIST) estimo que los defectos de los programas costabanmas de 60 millardos de dolares (60 billions).

I Detectarlos a tiempo ahorrarıa 22 millardos de dolares.‘Measuring software quality. A Study of Open Source Software’

http://osvdb.org/ref/blog/open_source_quality_report.pdf

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 5

Page 6: Introduccion a un curso de Programación Segura

Cifras

I Menos del 10 % de proyectos en empresas grandes terminan atiempo, y cumpliendo el presupuesto.

I Las tasas de defectos en productos comerciales se estimanentre 10 y 17 por cada 1000 lıneas de codigo.Otras estimaciones: entre 5 y 50 fallos.

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 6

Page 7: Introduccion a un curso de Programación Segura

Mas cifras

I Diciembre de 1990: Miller, Fredrickson. ‘An empirical study ofthe reliability of Unix Utilities’ (Communications of the ACM,Vol 33, issue 12, pp.32-44).

I Entre el 25 y el 33 % de las utilidades en Unix podıaninterrumpirse o colgarse proporcionandoles entradasinesperadas.

I 1995: Miller otra vez, ejecutando Fuzz en nueve plataformastipo Unix diferentes:

I Fallos entre un 15 y un 43 %I Muchos fallos ya avisados en el 90 seguıan allıI La menor tasa de fallos: utilidades de la FSF (7 %) y a las

incluidas junto con Linux (9 %) (¿Uh?)

No consiguieron hacer fallar ningun servidor de red. Tampocoel servidor X Window. Muchos clientes de X, si

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 7

Page 8: Introduccion a un curso de Programación Segura

Cifras

I 2000: Miller y Forrester. Fuzz con Windows NT.I 45 % de los programas se colgaron o se interrumpieronI Enviar mensajes aleatorios Win32 a las aplicaciones hacıa fallar

al 100 %

I 2006: Miller, Cooksey y Moore. Fuzz y Mac OS X.I 7 % de las aplicaciones de lınea de ordenes.I De las 30 basadas en GUI solo 8 no se colgaron o se pararon.

http://pages.cs.wisc.edu/~bart/fuzz/fuzz.html

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 8

Page 9: Introduccion a un curso de Programación Segura

En dispositivos bluetooth

Resultados de robustez para 31 dispositivos Bluetooth (2007)I Solo 3 dispositivos sobrevivieron a todos los tests.I Los demas tuvieron problemas con, al menos, un perfilI La mayorıa simplemente se colgaronI En algunos casos hubo que reprogramar la memoria flash

corrupta62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 9

Page 10: Introduccion a un curso de Programación Segura

En dispositivos WiFi

Resultados de robustez para 7 puntos de acceso Wifi:

I Solo se marcan como FAIL los que son reproducibles (INCmuestra que ha habido fallos pero no faciles de repetir).

I Todos fallaron en alguna de las pruebas.

‘Wireless Security: Past, Present and Future. Sami Petajasoja, Tommi

Makila, Mikko Varpiola, Miikka Saukko and Ari Takanen’. Feb 2008.

http://www.codenomicon.com/resources/whitepapers/Codenomicon_Wireless_WP_v1_0.pdf

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 10

Page 11: Introduccion a un curso de Programación Segura

CifrasI 2004-2005. Honeypot, con varios sistemas (6: Windows, Mac,

Linux). Una semana. Fueron escaneados 46255 veces desde elexterior con un resultado de 4892 ataques directos.

I Windows XP. SP 1.I Fue atacado 4857 vecesI Infectado en 18 minutos (Blaster y Sasser)I En una hora era un ‘bot’ controlado remotamente, y

comenzo a realizar sus propios ataquesI Windows XP. SP2.

I 16 ataquesI Sobrevivio a todos ellos

I MacOS X Jaguar (3, 0), Suse Professional 9.2 (8,0), FedoraCore 3 (8,0), Red Hat 9 (0 ataques).

http://www.stillsecure.com/docs/StillSecure_DenverPost_Honeypot.pdf

I Feb-Marzo 2005: menos del 24 % de los Windows XPobservados en un estudio de AssetMetrix Research Labstenıan SP2. Menos del 7 % del total lo tenıan. 251 empresasnorteamericanas (seis meses despues de su lanzamiento).

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 11

Page 12: Introduccion a un curso de Programación Segura

Estudio OpenSSHI Julio 2002 se descubrio un fallo de desbordamiento de

memoria remotoI Dos semanas despues de la publicacion del anuncio del fallo,

mas de 2/3 de los servidores observados seguıan siendovulnerables.

I Septiembre 2002. Un gusano explotaba el fallo (Slapper).I El 60 % de servidores era todavıa vulnerable.

‘Security holes. . . Who cares? Eric Rescorla’http://www.cgisecurity.com/lib/reports/slapper-report.pdf

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 12

Page 13: Introduccion a un curso de Programación Segura

Introduccion. Antes de empezar.

I Los programas no tienen garantıa (¿todavıa?).

I La seguridad es un problema de gestion de riesgos.

I Pensemos en la seguridad durante el diseno, despues ya estarde.

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 13

Page 14: Introduccion a un curso de Programación Segura

Puede haber castigo

Cada vez se habla mas de la responsabilidad de las empresas quedesarrollan programas:

I 1999. Ambrosia Software (Rochester, N.Y.) anuncio que si algunode sus productos requerıan la reparacion de errores, el responsablede marketing comerıa insectos en alguna feria.http://www.ambrosiasw.com/PRs/eatbugs_PR.html

Parece que finalmente tuvieron que comerlos . . .

http://www.ambrosiasw.com/news/old_newsletter.php?id=34019&page=3

I 31 de diciembre de 1999. Las autoridades chinas obligaron a losejecutivos de la companıa aerea nacional a volar durante esa nocheen los vuelos programados.

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 14

Page 15: Introduccion a un curso de Programación Segura

¿Por que es importante?

I Cada vez hay mas computadores y en mas sitios.

I La gente ni sabe ni quiere saber de estos temas.

I Aun peor, saben lo que dicen las noticias.

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 15

Page 16: Introduccion a un curso de Programación Segura

Son los programas

I Dependemos (mucho) de los computadores (y sus programas).

I El principal problema es que la mayorıa de los desarrolladoresni siquiera saben que hay un problema.

I Ni los cortafuegos ni la criptografıa resolveran los problemas(el 85 % de los avisos del CERT no se pueden prevenir concriptografıa).

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 16

Page 17: Introduccion a un curso de Programación Segura

Son los programas

I Esta bien proteger la transmision pero los atacantes prefierenlos extremos

I Las aplicaciones que interactuan con Internet son las masdelicadas, pero no es imprescindible que tengan contacto conla red para ser peligrosas.

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 17

Page 18: Introduccion a un curso de Programación Segura

Son los programas

I Empezar pronto

I Conocer las amenazas

I Disenar pensando en la seguridad

I Cenir el diseno a los analisis de riesgos y las pruebas

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 18

Page 19: Introduccion a un curso de Programación Segura

Gestion del riesgo

I La seguridad es un compromiso entre muchos factores:I Tiempo hasta que se puede venderI CosteI FlexibilidadI ReutilizabilidadI Relaciones entre los anteriores

I Hay que establecer las prioridades, a veces la seguridad no esla principal necesidad.

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 19

Page 20: Introduccion a un curso de Programación Segura

Seguro o Inseguro

I Mucha gente piensa en la seguridad como algo que se tiene ono se tiene.

I Es muy difıcil probar que un sistema de complejidad medianaes seguro.

I Frecuentemente, ni si quiera vale la pena.

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 20

Page 21: Introduccion a un curso de Programación Segura

Seguro o Inseguro

I Es mas realista pensar en terminos de gestion de riesgo:

I ¿Cuanto riesgo?I ¿Cuanto cuesta reducirlo?

Recordar: los ’malos’ no crean los defectos, simplemente losutilizan.

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 21

Page 22: Introduccion a un curso de Programación Segura

Fallos en los programas

I Ano 2000: aproximadamente 20 nuevas vulnerabilidades cadasemana

I Muchas en programas con codigo, pero otras tantas en lasque no se conoce

I Unix y Windows tambien estan equilibrados

I Siguen apareciendo problemas en programas probados yusados.

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 22

Page 23: Introduccion a un curso de Programación Segura

Algunas cifras

NIST: National Institute of Standards and TechnologyNVD: National Vulnerabilities Database

Year Num. of Vulns % of Total1988 2 1001989 3 1001990 11 1001991 15 1001992 13 1001993 13 1001994 25 1001995 25 1001996 75 1001997 252 1001998 246 1001999 894 1002000 1020 1002001 1677 1002002 2156 1002003 1527 1002004 2451 1002005 4933 1002006 6608 1002007 6515 1002008 4673 100

3 de noviembre de 2008http://nvd.nist.gov/statistics.cfm?results=1

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 23

Page 24: Introduccion a un curso de Programación Segura

Mas cifras

CERT: Organizacion del Software Engineering Institute (SEI).

http://www.cert.org/stats/3 de noviembre de 2008

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 24

Page 25: Introduccion a un curso de Programación Segura

Y mas . . . la web

Figure 1. (a) Breakdown of disclosed vulnerabilities by softwaretype in May 2006, and (b) current vulnerability types disclosed in

Web-based applications. (Source: SecurityFocus.com)http://www.computer.org/portal/site/security/menuitem.6f7b2414551cb84651286b108bcd45f3/index.

jsp?&pName=security_level1_article&TheCat=1015&path=security/2006/v4n4&file=gei.xml

Resumida: http://tinyurl.com/3862ba

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 25

Page 26: Introduccion a un curso de Programación Segura

Mas cifras

http://www.cisco.com/web/about/security/cspo/docs/Cisco2007Annual_Security_Report.pdf

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 26

Page 27: Introduccion a un curso de Programación Segura

Consecuencias

http://www-935.ibm.com/services/us/iss/pdf/etr_xforce-2007-annual-report.pdf

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 27

Page 28: Introduccion a un curso de Programación Segura

¿Donde conocerlos?

I Bugtraq (http://www.securityfocus.com/)

I CERT Advisories http://www.cert.org/

I http://www.rediris.es/cert/

I Equipo de Seguridad para la Coordinacion de Emergencias enRedes Telematicas (http://escert.upc.edu/)

I ICAT Metabase (http://nvd.nist.gov/)

I OSVDB, Open Source Vulnerability Database(http://osvdb.org/)

I INTECO, http://www.inteco.es/

I RISKS Digest (http://catless.ncl.ac.uk/Risks/)

I Help Net Security http://www.net-security.org/

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 28

Page 29: Introduccion a un curso de Programación Segura

¿Y las tecnologıas?

I La complejidad introduce riesgos.I Anadir funcionalidades (no presente en el original)I Invisibilidad de ciertos problemasI Dificultad para analizar, comprender, asegurar.

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 29

Page 30: Introduccion a un curso de Programación Segura

Complejidad en navegadores

http://www.spinellis.gr/blog/20031003/index.html

Mozilla 1.3 // Explorer 5

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 30

Page 31: Introduccion a un curso de Programación Segura

La complejidad

I Windows NT → 35 millones de lıneas de codigo.

I Windows XP → 40 millones de lıneas de codigo.

I Windows Vista → 50 millones de lıneas de codigo.

I Linux 2.2 → 1.78 millones,

I Solaris 7 → 400000.

I Debian GNU/Linux 2.2 55 millones

I Red Hat 6.2 17 millones.

I Mac OS X Darwin 790000 (el kernel)

I ¡Seguimos programando en C! (en el mejor de los casos C++)

I Esto va cambiando . . . Java, .Net, . . .

I Luego hay que instalar, configurar, usar

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 31

Page 32: Introduccion a un curso de Programación Segura

La complejidad

I Windows NT → 35 millones de lıneas de codigo.

I Windows XP → 40 millones de lıneas de codigo.

I Windows Vista → 50 millones de lıneas de codigo.

I Linux 2.2 → 1.78 millones,

I Solaris 7 → 400000.

I Debian GNU/Linux 2.2 55 millones

I Red Hat 6.2 17 millones.

I Mac OS X Darwin 790000 (el kernel)

I ¡Seguimos programando en C! (en el mejor de los casos C++)

I Esto va cambiando . . . Java, .Net, . . .

I Luego hay que instalar, configurar, usar

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 31

Page 33: Introduccion a un curso de Programación Segura

Complejidad

Linux + Apache Windows + IIS

http://blogs.zdnet.com/threatchaos/?p=311

http://www.thisisby.us/index.php/content/why_windows_is_less_secure_than_linux

‘Why Windows is less secure than Linux’Abril 2006

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 32

Page 34: Introduccion a un curso de Programación Segura

Complejidad, vulnerabilidades, incidentes, . . .

Dan Geer, 2004http://www.stanford.edu/class/msande91si/www-spr04/slides/geer.pdf

‘Shared Risk at National Scale. Dan Geer’

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 33

Page 35: Introduccion a un curso de Programación Segura

En red

I Cada vez mas redesI Los ataques pueden venir de mas sitiosI Ataques automatizados/automaticosI Mas sitios para atacar, mas ataques, mas riesgo

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 34

Page 36: Introduccion a un curso de Programación Segura

Extensibilidad

I Codigo movilI ‘Enchufables’ en el navegador (‘plugins’)I Modulos, ‘drivers’I Muchas aplicaciones tienen lenguajes que permiten extenderlas.

Economicamente conveniente (reutilizacion) pero ...

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 35

Page 37: Introduccion a un curso de Programación Segura

El entorno

I Anadir seguridad a un sistema ya existente es casi imposible

I Es mejor disenar con la seguridad en mente

I Otra fuente de problemas es ‘ambiental’: un sistemacompletamente seguro en el entorno para el que fue disenado,deja de serlo en otros.

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 36

Page 38: Introduccion a un curso de Programación Segura

Pero ... ¿Que es seguridad?

Primero, es importante establecer una polıtica que describa laforma de acceder a los recursos.

I Si no queremos accesos sin autentificar y alguien accede ...

I Si alguien hace un ataque de denegacion de servicio ...

A veces es evidente lo que esta mal, y no hay que hilar tanfino, pero ...

I ¿Un escaneo de puertos es un ataque o no?I ¿Hay que responder? ¿Como?

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 37

Page 39: Introduccion a un curso de Programación Segura

Pero ... ¿Que es seguridad?

Primero, es importante establecer una polıtica que describa laforma de acceder a los recursos.

I Si no queremos accesos sin autentificar y alguien accede ...

I Si alguien hace un ataque de denegacion de servicio ...

A veces es evidente lo que esta mal, y no hay que hilar tanfino, pero ...

I ¿Un escaneo de puertos es un ataque o no?I ¿Hay que responder? ¿Como?

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 37

Page 40: Introduccion a un curso de Programación Segura

¿Tiene que ver con la confiabilidad?

‘Reliability’, confiabilidad, ¿no deberıa proporcionar seguridad?

I La confiabilidad se mide segun la robustez de la aplicacionrespecto a los fallos.

I La definicion de fallo es analoga a la definicion de polıtica deseguridad.

I Entonces, la seguridad serıa una parte de la confiabilidad: si sepuede violar alguna parte de la polıtica de seguridad, hay unfallo.Sin embargo...

I Los problemas de robustez no siempre son problemas deseguridad (Lo son mas frecuentemente de lo que se piensa, detodos modos)

I Si disenamos pensando en su robustez, seguramente tambienmejoraremos su seguridad

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 38

Page 41: Introduccion a un curso de Programación Segura

¿Tiene que ver con la confiabilidad?

‘Reliability’, confiabilidad, ¿no deberıa proporcionar seguridad?

I La confiabilidad se mide segun la robustez de la aplicacionrespecto a los fallos.

I La definicion de fallo es analoga a la definicion de polıtica deseguridad.

I Entonces, la seguridad serıa una parte de la confiabilidad: si sepuede violar alguna parte de la polıtica de seguridad, hay unfallo.Sin embargo...

I Los problemas de robustez no siempre son problemas deseguridad (Lo son mas frecuentemente de lo que se piensa, detodos modos)

I Si disenamos pensando en su robustez, seguramente tambienmejoraremos su seguridad

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 38

Page 42: Introduccion a un curso de Programación Segura

Malas practicas

Se hacen los programas, se espera a que aparezcan problemas, y seresuelven (si se puede).

I Solo se resuelven problemas conocidos por los desarrolladores

I No se trabaja ni con el tiempo, ni con la tranquilidad que hacefalta.

I Los parches habitualmente atacan al sıntoma, no al problema

I Los parches hay que aplicarlos ...

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 39

Page 43: Introduccion a un curso de Programación Segura

Las metas

I La seguridad no es una caracterıstica estatica

I 100 % seguro no existe (o es mentira)Mejor ...

I ¿Que queremos proteger?I ¿Contra quien?I ¿Contra que?

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 40

Page 44: Introduccion a un curso de Programación Segura

Prevencion

I Normalmente, se presta atencion cuando ya es tardeI El tiempo en la red es distinto (velocidad)

I Los ataques se propagan muy rapidoI Incluso se automatizan

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 41

Page 45: Introduccion a un curso de Programación Segura

Trazabilidad, auditabilidad

I Los ataques ocurriran

I Los contables lo saben (dinero)

I Estas medidas ayudan a detectar, comprender y demostrar losataques

I Es delicado

=⇒Vigilancia

I Auditorıa en tiempo realI Se puede hacer a muchos niveles

busqueda de ‘firmas’, patrones ...... pero tambien aserciones, codigo a proposito.

I A menudo, con trampas sencillas se puede capturar a unladron, o al menos evitar que haga dano.

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 42

Page 46: Introduccion a un curso de Programación Segura

Trazabilidad, auditabilidad

I Los ataques ocurriran

I Los contables lo saben (dinero)

I Estas medidas ayudan a detectar, comprender y demostrar losataques

I Es delicado

=⇒Vigilancia

I Auditorıa en tiempo realI Se puede hacer a muchos niveles

busqueda de ‘firmas’, patrones ...... pero tambien aserciones, codigo a proposito.

I A menudo, con trampas sencillas se puede capturar a unladron, o al menos evitar que haga dano.

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 42

Page 47: Introduccion a un curso de Programación Segura

Privacidad y Confidencialidad

(Privacidad ←→ Intimidad)

I Privacidad y confidencialidad son terminos muy relacionados

I Las empresas deben proteger los datos de sus clientes, inclusode los anunciantes

I Los gobiernos tambien

I No siempre comprendemos bien las consecuencias de nuestrasacciones

I Los programas deberıan asegurar la privacidad ...... pero los programas solo sirven para hacer el trabajo

I Si es posible ... no almacenar secretos

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 43

Page 48: Introduccion a un curso de Programación Segura

Seguridad multinivel

I Hay secretos ‘mas secretos’ que otros

I Ni las empresas ni los gobiernos quieren que se sepan algunosdatos

I Ademas, no todo el mundo tiene que saber lo mismo ......

I Es complejo

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 44

Page 49: Introduccion a un curso de Programación Segura

Anonimato

I Arma de doble filo

I A veces, hay razones sociales para favorecerlo (SIDA)

I Pero tambien las hay para controlarla (racismo, terrorismo,..)

I Junto con la privacidad, es de los temas mas importantes quehay que decidir.

I Global Identifier de Microsoft sirve para saber que copia deMS Office origino un documento

I WGA (Windows Genuine Advantage)

I las ‘supercookies’ de Google y Microsoft . . .

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 45

Page 50: Introduccion a un curso de Programación Segura

Anonimato

I Carnivore, Echelon, ... ¿quien nos garantiza que se usan‘adecuadamente’?

I ¿Y las galletitas? (cookies) ¿Realmente son necesarias? ¿Y sinos las roban?

I Hay empresas que las ‘coleccionan’

I ¿Y si tenemos que hacerlo nosotros? ¿Que pasa si algo vamal? ¿La comodidad es compatible con la privacidad?

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 46

Page 51: Introduccion a un curso de Programación Segura

Autentificacion

I Saber quien para saber que puede hacer

I Hasta no hace mucho bastaba con la presencia fısica

I Internet!!!I http://mibancofavorito.com

I ¿Realmente es MiBancoFavorito(TM)?I ¿Realmente es un banco?

I SSL da tranquilidad pero ... ¿que garantiza?

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 47

Page 52: Introduccion a un curso de Programación Segura

Autentificacion

I Nadie mira los datos

I De muchas formas:http://mibancofavorito.com/ →http://mibacofavorito.com/

I ¿Quien se fija?

I Si vale dinero, hay que tener cuidado.

I Algunos esquemas suponen anonimato, otros auditorıa.

I Algunos esquemas estan orientados a sesiones, otros atransacciones.

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 48

Page 53: Introduccion a un curso de Programación Segura

Integridad

I Seguir teniendo ‘lo mismo’

I Precios, cotizaciones, ... ¿y si nos los cambian?

I La informacion digital es muy facil de simular

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 49

Page 54: Introduccion a un curso de Programación Segura

Conociendo al enemigo

Es bueno conocer los errores frecuentes, sobre todo porque no sesuele hablar mucho del tema.

I Errores de programacion (buffers, condiciones de carrera,numeros aleatorios)Pero tambien ...

I La construccion es importante y tambien como se usaI Arquitectura cliente/servidorI Ingenierıa socialI Entradas maliciosas

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 50

Page 55: Introduccion a un curso de Programación Segura

Las amenazas

I Ver lo que va por la red, ponerse en medio

I Modificar lo que va por la red

I Simular lo que deberıa ir por la red

I Reemplazar el flujo de datos

I Grabar y repetir

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 51

Page 56: Introduccion a un curso de Programación Segura

Las metas de un proyecto

I Funcionalidad (resolver el problema)

I Ergonomıa -usabilidad- (a veces la seguridad interfiere con lacomodidad/conveniencia)

I Eficiencia (a nadie le gusta esperar)

I El mercado (habitualmente en contra de la simplicidad, y dela gestion de riesgos)

I Simplicidad (buena para los proyectos, buena para laseguridad)

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 52

Page 57: Introduccion a un curso de Programación Segura

Algunas listas de correo

I Secure Coding http://www.securecoding.org/list/

I WEB APPLICATION SECURITYhttp://www.securityfocus.com/archive/107

I SECPROG http://www.securityfocus.com/archive/98

I Webappsec (de OWASP):https://lists.owasp.org/mailman/listinfo/webappsec

I Web Security http://webappsec.org/lists/

I HACK http://mailman.argo.es/listinfo/hacking

I Owasp-spanishhttps://lists.owasp.org/mailman/listinfo/owasp-spanish

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 53

Page 58: Introduccion a un curso de Programación Segura

Bibliografıa

I John Viega and Gary McGraw. Building Secure Software.Addison-Wesley

I Michael Howard, David C. LeBlanc. Writing Secure Code.Microsoft Press. Second Edition.

I Innocent Code. A security wake-up call for web programmers.Sverre H. Huseby. Wiley.

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 54

Page 59: Introduccion a un curso de Programación Segura

Mas libros

I Software Security. Gary McGraw. Addison-Wesley SoftwareSecurity Series.

I OWASP Guide to Building Secure Web Applications (va porla version 3.0)http://www.owasp.org/index.php/OWASP_Guide_Project

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 55

Page 60: Introduccion a un curso de Programación Segura

Mas bibliografıa

I Mark G. Graff, Kenneth R. Van Wyk. Secure Coding:Principles and Practices. O’Reilly & Associates

I John Viega, Matt Messier. Secure Programming Cookbook forC and C++. O’Reilly & Associates.

I Gary McGraw, Edward W. Felten. Securing Java: GettingDown to Business with Mobile Code

I Computer Security. Dieter Gollmann. Wiley.

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 56

Page 61: Introduccion a un curso de Programación Segura

Bibliografıa

El otro lado.

I Greg Hoglund, Gary McGraw. Exploiting Software. How tobreak code. Addison Wesley.

I Cyrus Peikari, Anton Chuvakin. Security Warrior. O’Reilly.

I Andrews & Whittaker. How to Break Web Software. AddisonWesley.

I Tom Gallagher; Bryan Jeffries; Lawrence Landauer. HuntingSecurity Bugs. Microsoft Press.

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 57

Page 62: Introduccion a un curso de Programación Segura

Mas bibliografıa

En la red:I Security Developer Center Microsoft

http://msdn.microsoft.com/securityI ‘Improving Web Application Security: Threats and

Countermeasures’. J.D. Meier, Alex Mackman, MichaelDunner, Srinath Vasireddy, Ray Escamilla and AnandhaMurukan Microsoft Corporation(http://msdn.microsoft.com/library/default.asp?url=

/library/en-us/dnnetsec/html/ThreatCounter.asp)

I Secure Programming for Linux and Unix HOWTOhttp://www.dwheeler.com/secure-programs/

Hay mas...

62612 Diseno de aplicaciones seguras. Fernando Tricas Garcıa. 58