Vous êtes sur la page 1sur 20

Seguridad en Sistemas Informticos (SSI)

Programaci%n Segura

Carlos Prez Conde


Departament d'Informtica Escola Tcnica Superior d'Engin eria !ni"ersitat de #al$ncia 1

1 !"#!"$

Carlos Prez, Dpto. de Informtica, ETSE, UVEG

&i'liograf(a espec(fica

OWASP Top 10 2007!


Project Lead: Andrew van der Stock Co-author : !e"" W#$$#a% & 'ave W#cher http:((www)owa p)or*(#nde+)php(OWASP,Top,Ten,Project

WASC: Threat C$a

#"#cat#on

Co-author : !e"" W#$$#a% & 'ave W#cher http:((www)we-app ec)or*(project (threat(

'a%n .u$nera-$e L#nu+ /'.L0


Project Lead: Andrew van der Stock Co-author : !e"" W#$$#a% & 'ave W#cher http:((www)da%nvu$nera-$e$#nu+)or*(

1 !"#!"$

Carlos Prez, Dpto. de Informtica, ETSE, UVEG

)*+SP Top ,- .--/0


A1 1 Cro S#te Scr#pt#n* /2SS0

A2 1 3nject#on 4$aw A5 1 6a$#c#ou 4#$e 7+ecut#on A8 1 3n ecure '#rect O-ject 9e"erence A: 1 Cro S#te 9e;ue t 4or*er< /CS940 #on 6ana*e%ent A= 1 3n"or%at#on Leaka*e and 3%proper 7rror >and$#n* A7 1 ?roken Authent#cat#on and Se A@ 1 3n ecure Cr<pto*raph#c Stora*e AA 1 3n ecure Co%%un#cat#on A10 1 4a#$ure to 9e tr#ct B9L Acce
1 !"#!"$ Carlos Prez, Dpto. de Informtica, ETSE, UVEG

&

+, 1 Cross Site Scripting (2SS)

>T6L *enerado por e$ c$#ente e ejecutado por e$ nave*ador wereflejado: enlaces en correos, pginas web... almacenado: correo web, foros, blogs... inyeccin a travs de DOM: manipulando document. !", document.location...#

So$uc#Cn
validar y$o codificar todos los parmetros antes de incluirlos en pginas %&M" validar usando principalmente 'listas blancas( evitar errores de canonicali)acin

1 !"#!"$

Carlos Prez, Dpto. de Informtica, ETSE, UVEG

+. 1 In3ection 4la5s (particularl S67 in3ection)


Exploits of a Mum
http://xkcd.com/327/

1 !"#!"$

Carlos Prez, Dpto. de Informtica, ETSE, UVEG

'

In ecci%n S67
)a*e+ador ,eLogin: carlos Password: *************

Ser*idor de aplicaciones
SELECT user_id FROM Students WHERE user_name !carlos! and user_"assword !mi#"w#secreto!$

.ase de datos
1 !"#!"$ Carlos Prez, Dpto. de Informtica, ETSE, UVEG

In ecci%n S67
)a*e+ador ,eLogin: Ro%ert!&$ 'ROP T()LE Students$ ## Password: ****

Ser*idor de aplicaciones
SELECT user_id FROM Students WHERE user_name !Ro%ert!&$ 'ROP T()LE Students$ ##! and user_"assword !aaaa!$

.ase de datos
1 !"#!"$ Carlos Prez, Dpto. de Informtica, ETSE, UVEG

Soluciones para la in ecci%n S67


Do con"#ar en $a va$#dac#Cn rea$#Eada por e$ c$#ente Dor%a$#Ear $o va$ore de entrada Ap$#car va$#dac#Cn en e$ erv#dor 9e tr#n*#r $o t#po de dato aceptado Cod#"#car < va$#dar $a a$#da ;ue e *enera B ar pre"erente%ente F$# ta -$anca G Tratar de "or%a e*ura $o errore Ap$#car e$ pr#nc#p#o de$ %enor pr#v#$e*#o

1 !"#!"$

Carlos Prez, Dpto. de Informtica, ETSE, UVEG

+8 1 9alicious 4ile E:ecution

7%p$eo de "#chero o no%-re de "#chero proporc#onado por e$ u uar#o


include *_RE+,EST-!.ilename/0$ datos en fic*eros de sesin, registros, imgenes subidas... usar flujos como 1li%:22 ogg:22 +ue ignoran allow_url_.o"en allow_url_include

So$uc#one
usar referencias indirectas diferenciar datos validados de los del usuario validar la entrada usando 'listas blancas( filtrar los intentos de acceso remoto desde el servidor web usar mecanismos de aislamiento: c*root, jail, m+uinas virtuales... usar mecanismos del lenguaje: tainting, allow,url,fopen...
Carlos Prez, Dpto. de Informtica, ETSE, UVEG

1 !"#!"$

+; 1 Insecure Direct )'3ect <eference

La ap$#cac#Cn e+pone una re"erenc#a a un o-jeto #nterno


fic*ero, directorio registro de una base de datos

7je%p$o :
3select name 4language453o"tion 6alue 4.r45Fran7ais32o"tion532select5 re9uire_once :*_RE+,EST-!language/0;4lang;"<"4&$

manipulable con inyeccin del byte nulo: 4;;2;;2;;2;;2etc2"asswd=>>4 ?nteger;"arse?nt: re9uest;getParameter: 4cart?'4 & &$ 4SELECT * FROM ta%le WHERE cart?' 4 A cart?'$

int cart?' String 9uer@

se puede cambiar 'cart-D( para acceder a cual+uier carro de compra

1 !"#!"$

Carlos Prez, Dpto. de Informtica, ETSE, UVEG

1"

Soluciones para Insecure Direct )'3ect <eference


7v#tar e+poner $a re"erenc#a .a$#dar toda $a re"erenc#a a o-jeto .er#"#car $a autor#Eac#Cn en todo $o acce o B ar Hnd#ce o %apa de re"erenc#a
<tt":22www;eBam"le;com2a""licationC.ile D

.er#"#car $a autor#Eac#Cn
int cart?' ,ser user ?nteger;"arse?nt: re9uest;getParameter: 4cart?'4 & &$ :,ser&re9uest;getSession:&;get(ttri%ute: 4user4 &$ String 9uer@ 4SELECT * FROM ta%le WHERE cart?' 4 A cart?' A 4 (E' user?' 4 A user;get?':&$

1 !"#!"$

Carlos Prez, Dpto. de Informtica, ETSE, UVEG

11

+= 1 Cross Site <e>uest 4orger (CS<4)

Provocar ;ue e$ nave*ador *enere pet#c#one >TTP ocu$ta a recur o re tr#n*#do Se aprovecha $a autent#"#cac#Cn #%p$Hc#ta

autentificacin %&&. /ej: usuario y contrase0a# coo1ies autentificacin 22" del cliente autentificacin basada en -ps

7je%p$o
3img src 4<tt":22%anF;com2trans.er;doCacct M(R?(Gamount D>>>>>4 widt< 4D4 <eig<t 4D4 %order 4>45

1 !"#!"$

Carlos Prez, Dpto. de Informtica, ETSE, UVEG

1%

Soluciones para CS<4

DO "unc#ona
sar .O2& en ve) de 34& sar coo1ies secretas

SH "unc#ona
sar testigos aleatorios 5nicos en los formularios

1 !"#!"$

Carlos Prez, Dpto. de Informtica, ETSE, UVEG

1&

+? 1 Information 7ea@age and Improper Error Aandling

La ap$#cac#one "#$tran #n"or%ac#Cn en #-$e


sobre su configuracin, dise0o interno... datos privados a los +ue tienen acceso

La #n"or%ac#Cn puede er u ada para otro ata;ue 7je%p$o :


comentarios en el cdigo fuente
<TR> <!--If the image files are missing, restart VADER --> <TD bgColor="#ffffff" ol!"an="#" height="$%"&i'th="#(%">)nbs"*<+TD> <+TR>

mensajes de error
An Error ,as - .rre'/ Error 0essage1 !2stem/Data/-leDb/-leDbE3 e"tion1 !2nta3 error 4missing o"erator5 in 6.er2 e3"ression 7.sername = 777 an' "ass&or' = 7g77/ at ///

1 !"#!"$

Carlos Prez, Dpto. de Informtica, ETSE, UVEG

1#

Soluciones para el filtrado de informaci%n

Co%pro-ar $a ap$#cac#Cn con todo t#po de dato de entrada #nvI$#do < ana$#Ear $o %en aje *enerado 7 trate*#a co%Jn para *e t#onar e+cepc#one 'e ha-#$#tar o $#%#tar $o deta$$e %o trado o-re errore /e pec#a$%ente de capa #nterna : ?'& SO)))0 Do u ar $o *e tore de error por de"ecto Karant#Ear ;ue $o ca%#no de ejecuc#Cn en #-$e devue$ven %en aje de error #dLnt#co en %I o %eno e$ %# %o t#e%po /o hacer$o a$eator#o0

1 !"#!"$

Carlos Prez, Dpto. de Informtica, ETSE, UVEG

1'

+/ 1 &ro@en +utBentication and Session 9anagement




4a$$o a$ prote*er credenc#a$e < token de e #Cn So$uc#one


usar 22" e6clusivamente para todo acceso autenticado /78# encriptar todas las credenciales y to1ens para almacenarlos /79# planificacin cuidadosa
no e6poner datos sensibles en !"s o registros utili)ar un 5nico mecanismo de autentificacin no usar direcciones -., consultas al D:2 o 'referrer *eaders( para autenticacin ser cuidadoso con el env;o de contrase0as a direcciones de correo limitar o eliminar el uso de coo1ies para la autentificacin o gestin de sesiones /ej: recordar al usuario en el sitio web# no aceptar id. de sesin nuevos, preestablecidos o invlidos en !"s o peticiones /evitar 'session fi6ation attac1s(# crear una nueva sesin tras la autentificacin o cambio de nivel de privilegio proporcionar enlaces para desconectarse utili)ar mecanismos de autodescone6in
Carlos Prez, Dpto. de Informtica, ETSE, UVEG

1 !"#!"$

1(

+C 1 Insecure Cr ptograpBic Storage

4a$$o a$ encr#ptar dato

en #-$e

no encriptarlos utili)ar algoritmos criptogrficos propios usar incorrectamente algoritmos fuertes continuar usando algoritmos dbiles /MD<, 2%7=>, !?@, !?A...# usar claves preprogramadas o almacenarlas desprotegidas

A e*urar e de cu%p$#r $a nor%at#va v#*ente

1 !"#!"$

Carlos Prez, Dpto. de Informtica, ETSE, UVEG

Soluciones para +C

SC$o a$%acenar $o #%pre c#nd#-$e B ar a$*or#t%o pro-ado /no crear nuevo 0


742, !27 para criptograf;a asimtrica 2%7=B<C o mejores para '*as*ing( *ttp:$$www.owasp.org$inde6.p*p$3uide,to,?ryptograp*y

Do u ar a$*or#t%o dL-#$e /ej: 6':& S>A-10 Ke t#Cn cu#dado a de c$ave


generarlas fuera de l;nea almacenar las claves privadas con e6tremo cuidado nunca transmitirlas por canales inseguros

1 !"#!"$

Cu#dar todo $o ca%#no de acce o


web, fic*eros, bases de datos, servidores de aplicaciones
Carlos Prez, Dpto. de Informtica, ETSE, UVEG

1$

+D 1 Insecure Communications

4a$$ar a$ encr#ptar co%un#cac#one So$uc#one

en #-$e

A e*urar e de cu%p$#r $a nor%at#va v#*ente


usar 22" para cone6iones autentificadas o +ue transmiten informacin sensible /credenciales, n5meros de tarjeta de crdito, datos de salud...# encriptar la comunicacin en la infraestructura /con servidores de aplicaciones, bases de datos, "D7....# no permitir +ue se pueda pasar a un modo inseguro /ej: cuando ocurre alg5n fallo en las comunicaciones o falla alg5n componente#

1 !"#!"$

Carlos Prez, Dpto. de Informtica, ETSE, UVEG

1/

+,- 1 4ailure to <estrict !<7 +ccess

Do per%#t#r acce o a "unc#one -a Indo e en $a B9L


es un ejemplo de seguridad mediante oscuridad !"s secretas, dif;ciles de adivinar... evaluar el control de acceso en el cliente

So$uc#one
usar una matri) de control de acceso restringir el acceso a !"s y funciones en cada paso reali)ar pruebas de penetracin cuidado con fic*eros incluibles y librer;as no asumir +ue los usuarios desconocen ciertas !"s o 7.-s permitir acceso slo a ciertos tipos de fic*eros /ej: %&M", .DD...# mantener actuali)ados los componentes +ue manejan datos proporcionados por usuarios /imgenes, EM", te6tos...#
Carlos Prez, Dpto. de Informtica, ETSE, UVEG

1 !"#!"$

%"