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 !"#!"$
%"