CodeCamp 2010 | Diez formas de escribir código (in)seguro
-
Upload
microsoft-argentina-y-uruguay-official-space -
Category
Technology
-
view
982 -
download
0
Transcript of CodeCamp 2010 | Diez formas de escribir código (in)seguro
![Page 1: CodeCamp 2010 | Diez formas de escribir código (in)seguro](https://reader036.fdocument.pub/reader036/viewer/2022062905/54778ff5b4af9ff6558b4916/html5/thumbnails/1.jpg)
1
![Page 3: CodeCamp 2010 | Diez formas de escribir código (in)seguro](https://reader036.fdocument.pub/reader036/viewer/2022062905/54778ff5b4af9ff6558b4916/html5/thumbnails/3.jpg)
4
Ud. puede: Copiar, distribuir, exhibir, y ejecutar la obra
Hacer obras derivadas
Bajo las siguientes condiciones:Atribución. Debe atribuir la obra en la forma especificada por el autor
No Comercial. No puede usar esta obra con fines comerciales.
Compartir Obras Derivadas Igual. Si altera, transforma, o crea sobre esta obra, sólo podrá distribuir la obra derivada resultante bajo una licencia idéntica a ésta.
http://creativecommons.org/licenses/by-nc-sa/2.5/ar/
Licencia de uso:Creative Commons 2.5
![Page 4: CodeCamp 2010 | Diez formas de escribir código (in)seguro](https://reader036.fdocument.pub/reader036/viewer/2022062905/54778ff5b4af9ff6558b4916/html5/thumbnails/4.jpg)
5
TemarioRiesgoRedes externas vs internasBugs “simples”Validación de archivosXSS y SQL InjectionCookiesControl en producciónConclusiones
![Page 5: CodeCamp 2010 | Diez formas de escribir código (in)seguro](https://reader036.fdocument.pub/reader036/viewer/2022062905/54778ff5b4af9ff6558b4916/html5/thumbnails/5.jpg)
7
Cuando hablamos de Seguridad, en realidad
¿de qué hablamos?
R I E S G O
![Page 6: CodeCamp 2010 | Diez formas de escribir código (in)seguro](https://reader036.fdocument.pub/reader036/viewer/2022062905/54778ff5b4af9ff6558b4916/html5/thumbnails/6.jpg)
9
Superficie de ataque
Administradores UsuariosAutenticados
Anónimos
Remoto
Restringido
Local
![Page 7: CodeCamp 2010 | Diez formas de escribir código (in)seguro](https://reader036.fdocument.pub/reader036/viewer/2022062905/54778ff5b4af9ff6558b4916/html5/thumbnails/7.jpg)
11
Redes Internas vs Externas
Se ingresa a Intranet, sitios de backend o de administración a través de URL públicasProblemas asociados:
El enemigo interno y el abuso de conocimientoEl descubrimiento “fortuito” de personal externo
Si sólo personal interno conoce el acceso, entonces nadie podrá acceder desde el exterior
![Page 8: CodeCamp 2010 | Diez formas de escribir código (in)seguro](https://reader036.fdocument.pub/reader036/viewer/2022062905/54778ff5b4af9ff6558b4916/html5/thumbnails/8.jpg)
12
Redes Internas vs Externas
![Page 9: CodeCamp 2010 | Diez formas de escribir código (in)seguro](https://reader036.fdocument.pub/reader036/viewer/2022062905/54778ff5b4af9ff6558b4916/html5/thumbnails/9.jpg)
13
Bugs ”simples”Encontramos un pequeño bug que podríamos resolver en un momento pero nos llevaría más tiempo implementarlo en producción que arreglarlo,así que…
lo dejamos así, total funciona
![Page 10: CodeCamp 2010 | Diez formas de escribir código (in)seguro](https://reader036.fdocument.pub/reader036/viewer/2022062905/54778ff5b4af9ff6558b4916/html5/thumbnails/10.jpg)
14
Bugs ”simples”Resolvemos el bug y realizamos una vaga descripción de la resolución porque resulta demasiado complicado explicarlo
No detallamos los pasos para reproducir el error porque son triviales o muy complicados
![Page 11: CodeCamp 2010 | Diez formas de escribir código (in)seguro](https://reader036.fdocument.pub/reader036/viewer/2022062905/54778ff5b4af9ff6558b4916/html5/thumbnails/11.jpg)
15
Bugs “solucionado”
![Page 12: CodeCamp 2010 | Diez formas de escribir código (in)seguro](https://reader036.fdocument.pub/reader036/viewer/2022062905/54778ff5b4af9ff6558b4916/html5/thumbnails/12.jpg)
16
Validación de archivos
Falta de validación de archivos incluidos o subidos permiten la ejecución de los mismos en el servidor local o remotoSe debe validar y rechazar cualquier tipo de archivo MIME no permitido
Cargo los archivos en forma dinámica en tiempo de ejecución. ¡Qué buena idea!
![Page 13: CodeCamp 2010 | Diez formas de escribir código (in)seguro](https://reader036.fdocument.pub/reader036/viewer/2022062905/54778ff5b4af9ff6558b4916/html5/thumbnails/13.jpg)
17
RFI y LFI
![Page 14: CodeCamp 2010 | Diez formas de escribir código (in)seguro](https://reader036.fdocument.pub/reader036/viewer/2022062905/54778ff5b4af9ff6558b4916/html5/thumbnails/14.jpg)
18
Inyección de archivos
![Page 15: CodeCamp 2010 | Diez formas de escribir código (in)seguro](https://reader036.fdocument.pub/reader036/viewer/2022062905/54778ff5b4af9ff6558b4916/html5/thumbnails/15.jpg)
19
“Validación” al subir archivos
![Page 16: CodeCamp 2010 | Diez formas de escribir código (in)seguro](https://reader036.fdocument.pub/reader036/viewer/2022062905/54778ff5b4af9ff6558b4916/html5/thumbnails/16.jpg)
20
Evitar RFI y LFIUrlScan por defecto bloquea: exe, bat, cmd, com, htw, ida, idq, htr, idc, printer, ini, pol, dat, etc.En PHP se puede utilizar Mod_Security y/o SushosinTodas las validaciones se deben realizar en ambos lados: cliente y servidor
![Page 17: CodeCamp 2010 | Diez formas de escribir código (in)seguro](https://reader036.fdocument.pub/reader036/viewer/2022062905/54778ff5b4af9ff6558b4916/html5/thumbnails/17.jpg)
21
XSS – Cross-Site ScriptEjecución de código no validado en el cliente a través de la inyección del mismo por diversos métodos
![Page 18: CodeCamp 2010 | Diez formas de escribir código (in)seguro](https://reader036.fdocument.pub/reader036/viewer/2022062905/54778ff5b4af9ff6558b4916/html5/thumbnails/18.jpg)
22
Las galletitas
![Page 19: CodeCamp 2010 | Diez formas de escribir código (in)seguro](https://reader036.fdocument.pub/reader036/viewer/2022062905/54778ff5b4af9ff6558b4916/html5/thumbnails/19.jpg)
23
Las galletitas
Las cookies pueden ser obtenidas desde el cliente a través de scripts sencillos y a través de ataques XSSSi el browser soporta HTTP-Only, se puede bloquear la lectura y escritura de las cookies en el cliente
Programar, comer y beber¡That’s life!
![Page 20: CodeCamp 2010 | Diez formas de escribir código (in)seguro](https://reader036.fdocument.pub/reader036/viewer/2022062905/54778ff5b4af9ff6558b4916/html5/thumbnails/20.jpg)
24
XSS y Phishing
![Page 21: CodeCamp 2010 | Diez formas de escribir código (in)seguro](https://reader036.fdocument.pub/reader036/viewer/2022062905/54778ff5b4af9ff6558b4916/html5/thumbnails/21.jpg)
25
Control de Cookies
Sin HTTP-Only
Con HTTP-Only
Controlar la información en las cookiesImplementar HTTP-Only
![Page 23: CodeCamp 2010 | Diez formas de escribir código (in)seguro](https://reader036.fdocument.pub/reader036/viewer/2022062905/54778ff5b4af9ff6558b4916/html5/thumbnails/23.jpg)
27
Cross Domain RequestLos archivos no alcanzaron así que cargamos img, frames, forms, CSS, JS, etc. desde múltiples dominios
Cross-site HTTP requests: solicitudes HTTP que se realizan desde diferentes dominiosLa W3C ha propuesto un nuevo estándar para controlar el Cross Domain Request
Todos los navegadores lo soportan excepto Opera (por ahora)
![Page 24: CodeCamp 2010 | Diez formas de escribir código (in)seguro](https://reader036.fdocument.pub/reader036/viewer/2022062905/54778ff5b4af9ff6558b4916/html5/thumbnails/24.jpg)
28
X-Frame Origin
Frame
![Page 25: CodeCamp 2010 | Diez formas de escribir código (in)seguro](https://reader036.fdocument.pub/reader036/viewer/2022062905/54778ff5b4af9ff6558b4916/html5/thumbnails/25.jpg)
29
RIA: Rich Internet Applications
Las aplicaciones no se validan porque no tienen vulnerabilidades, o las mismas no pueden explotarse
![Page 26: CodeCamp 2010 | Diez formas de escribir código (in)seguro](https://reader036.fdocument.pub/reader036/viewer/2022062905/54778ff5b4af9ff6558b4916/html5/thumbnails/26.jpg)
30
Dos políticas a implementar
Mismo origen: si dos sitios comparten el mismo [protocolo:puerto] entonces tienen el mismo origenPuede ser utilizado para restringir la ejecución sólo desde dominios válidosSandBox: la ejecución se realiza en un entorno controlado y no se accede a recursos que no han sido específicamente autorizadosLos procesos son considerados de “baja integridad” y no pueden acceder a procesos de integridad mayor (MIC y UIPI)
![Page 27: CodeCamp 2010 | Diez formas de escribir código (in)seguro](https://reader036.fdocument.pub/reader036/viewer/2022062905/54778ff5b4af9ff6558b4916/html5/thumbnails/27.jpg)
31
URL RedirectPara controlar los “abandonos”de mi sitio, redirecciono a sitios externos mediante un script
![Page 28: CodeCamp 2010 | Diez formas de escribir código (in)seguro](https://reader036.fdocument.pub/reader036/viewer/2022062905/54778ff5b4af9ff6558b4916/html5/thumbnails/28.jpg)
32
Bad URL Redirect
![Page 29: CodeCamp 2010 | Diez formas de escribir código (in)seguro](https://reader036.fdocument.pub/reader036/viewer/2022062905/54778ff5b4af9ff6558b4916/html5/thumbnails/29.jpg)
33
Control de URLRegistrar y administrar las URL del sitio
¿Ya dije que las validaciones se deben hacer de ambos lados?
![Page 30: CodeCamp 2010 | Diez formas de escribir código (in)seguro](https://reader036.fdocument.pub/reader036/viewer/2022062905/54778ff5b4af9ff6558b4916/html5/thumbnails/30.jpg)
34
Control de URL y Salt
Intentar utilizar HMAC para generar datos codificados y checksum en información sensible
Ponele SALT a tu vida
![Page 31: CodeCamp 2010 | Diez formas de escribir código (in)seguro](https://reader036.fdocument.pub/reader036/viewer/2022062905/54778ff5b4af9ff6558b4916/html5/thumbnails/31.jpg)
35
SQL Injection
![Page 32: CodeCamp 2010 | Diez formas de escribir código (in)seguro](https://reader036.fdocument.pub/reader036/viewer/2022062905/54778ff5b4af9ff6558b4916/html5/thumbnails/32.jpg)
36
SQL Injection
Creo que ya lo dije: las validaciones se deben hacer de ambos lados
![Page 33: CodeCamp 2010 | Diez formas de escribir código (in)seguro](https://reader036.fdocument.pub/reader036/viewer/2022062905/54778ff5b4af9ff6558b4916/html5/thumbnails/33.jpg)
37
Testing en producciónEl testing es rápido así que lo realizamos en el servidor productivo
El desarrollo y el testing debenrealizarse en servidores != producción
![Page 34: CodeCamp 2010 | Diez formas de escribir código (in)seguro](https://reader036.fdocument.pub/reader036/viewer/2022062905/54778ff5b4af9ff6558b4916/html5/thumbnails/34.jpg)
38
Asumir que cualquier entrada es maliciosa
Validar todas las entradas
Validar todas las salidas
Codificar cada entrada y salida
Utilizar aplicaciones para validación
Validar permisos de la aplicación y sus usuarios
Conclusiones y pasos a aplicar
![Page 35: CodeCamp 2010 | Diez formas de escribir código (in)seguro](https://reader036.fdocument.pub/reader036/viewer/2022062905/54778ff5b4af9ff6558b4916/html5/thumbnails/35.jpg)
39
Finalmente: mi preferidaSin palabras…
![Page 36: CodeCamp 2010 | Diez formas de escribir código (in)seguro](https://reader036.fdocument.pub/reader036/viewer/2022062905/54778ff5b4af9ff6558b4916/html5/thumbnails/36.jpg)
40
ReferenciasMicrosoft Security Development Lifecycle v5http://bit.ly/9piMph Threat Analysis and Modeling (TAM) v3http://bit.ly/cTP0Uq FoundStone Free Toolshttp://bit.ly/aep4qsWebGoathttp://bit.ly/btPp9n Damn Vulnerable Web App (DVWA) http://bit.ly/9NeO8F Writing Secure Codehttp://amzn.to/aEytaE Sanitize HTMLhttp://bit.ly/b9fn0R URLScanhttp://bit.ly/aX8V4X Practical Windows Sandboxing (3 partes)http://bit.ly/adWAIW - http://bit.ly/cBgWW9 - http://bit.ly/9lSw97
![Page 38: CodeCamp 2010 | Diez formas de escribir código (in)seguro](https://reader036.fdocument.pub/reader036/viewer/2022062905/54778ff5b4af9ff6558b4916/html5/thumbnails/38.jpg)
42
Los mejores proyectos de las células Microsoft, los grupos de investigación de
estudiantes, son seleccionados para participar en el espacio del DEMOFEST.
¡Conócelos!
Participá del DEMOFEST
![Page 39: CodeCamp 2010 | Diez formas de escribir código (in)seguro](https://reader036.fdocument.pub/reader036/viewer/2022062905/54778ff5b4af9ff6558b4916/html5/thumbnails/39.jpg)
43
Necesitamos tu Feedback!
Completá los FORM de avaluación que estarán en nuestra WEB:www.codecamp.com.arNecesitamos de tu feedback para mejorar.
![Page 40: CodeCamp 2010 | Diez formas de escribir código (in)seguro](https://reader036.fdocument.pub/reader036/viewer/2022062905/54778ff5b4af9ff6558b4916/html5/thumbnails/40.jpg)
44
© 2008 Microsoft Corporation. Todos los derechos reservados. Microsoft, Windows, Windows Vista y otros nombres de producto son y pueden ser marcas registradas y registros en Estados
Unidos y en otros países.La información contenida en el presente es sólo para fines informativos y representa la visión actual de Microsoft Corporation a la fecha de esta presentación. Debido a que Microsoft debe
responder a las cambiantes condiciones del mercado, no se debe interpretar como un compromiso por parte de Microsoft, y Microsoft no puede garantizar la precisión de ninguna
información provista después de la fecha de esta presentación. MICROSOFT NO OFRECE GARANTÍA ALGUNA, EXPRESA, IMPLÍCITA O DE LEY, RESPECTO A LA INFORMACIÓN EN ESTA
PRESENTACIÓN.