CodeCamp 2010 | Diez formas de escribir código (in)seguro

988 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
988
On SlideShare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
9
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

CodeCamp 2010 | Diez formas de escribir código (in)seguro

  1. 1.
  2. 2. Las presentaciones<br />El tiempo total de las presentaciones es de 1 hora y 15 minutos. Sugerimos presentaciones de 60 minutos, dejando 5-10 minutos finales para preguntas y discusión<br />La puntualidadesmuyimportantepara el orden del evento. Solicitamospuntualidad en el comienzo y cierre de laspresentaciones.<br />En www.codecamp.com.ar subiremos las PPT del evento. Le solicitamos nos envíe esta presentación una vez completa a: v-anasau@microsoft.com<br />
  3. 3. b1010 formas de escribir código (in)seguro <br />Lic. CristianBorghello, CISSP - MVP<br />Director<br />Segu-Info<br />info@segu-info.com.ar<br />
  4. 4. Licencia de uso:CreativeCommons 2.5 <br />Ud. puede:<br /><ul><li>Copiar, distribuir, exhibir, y ejecutar la obra
  5. 5. Hacer obras derivadas</li></ul>Bajo las siguientes condiciones:<br /> Atribución. Debe atribuir la obra en la forma especificada por el autor<br /> No Comercial. No puede usar esta obra con fines comerciales. <br /> 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.<br />http://creativecommons.org/licenses/by-nc-sa/2.5/ar/<br />
  6. 6. Temario<br />Riesgo<br />Redes externas vs internas<br />Bugs “simples”<br />Validación de archivos<br />XSS y SQL Injection<br />Cookies<br />Control en producción<br />Conclusiones<br />
  7. 7. Palabras de dudosa credibilidad...<br />¡El Cray es tanrápido que puede ejecutar un bucle infinito en menosde 2 segundos!<br />
  8. 8. Cuando hablamos de Seguridad, en realidad ¿de qué hablamos?<br />R I E S G O<br />
  9. 9. Diseño<br />Falla o Vuln.<br />Costo< Ganancia<br />Explotable<br />SI<br />SI<br />SI<br />Existe amenaza<br />NO<br />NO<br />NO<br />“Sin riesgo”<br />SI<br />Riesgo inaceptable<br />Riesgo (simplificado)<br />
  10. 10. Superficie de ataque<br />Remoto<br />Restringido<br />Local<br />Administradores<br />UsuariosAutenticados<br />Anónimos<br />
  11. 11. Daño: cuan grande será el daño<br />Reproducción: cuan fácil es reproducir el ataque<br />Explotación: cuan fácil es lanzar el ataque<br />Afectados: cuantos usuarios serán afectados<br />Descubrimiento: cuan fácil es encontrar la vulnerabilidad<br />Modelo de amenazas<br />http://www.microsoft.com/sdl<br />
  12. 12. Redes Internas vs Externas<br />Si sólo personal interno conoce el acceso, entonces nadie podrá acceder desde el exterior<br />Se ingresa a Intranet, sitios de backend o de administración a través de URL públicas<br />Problemas asociados:<br />El enemigo interno y el abuso de conocimiento<br />El descubrimiento “fortuito” de personal externo<br />
  13. 13. Redes Internas vs Externas<br />
  14. 14. Bugs ”simples”<br />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…<br />lo dejamos así, total funciona<br />
  15. 15. Bugs ”simples”<br />Resolvemos el bug y realizamos una vaga descripción de la resolución porque resulta demasiado complicado explicarlo<br />No detallamos los pasos para reproducir el error porque son triviales o muy complicados<br />
  16. 16. Bugs “solucionado”<br />
  17. 17. Validación de archivos<br />Cargo los archivos en forma dinámica en tiempo de ejecución. ¡Qué buena idea!<br />Falta de validación de archivos incluidos o subidos permiten la ejecución de los mismos en el servidor local o remoto<br />Se debevalidar y rechazarcualquiertipo de archivo MIME no permitido<br />
  18. 18. RFI y LFI<br />
  19. 19. Inyección de archivos<br />
  20. 20. “Validación” al subir archivos<br />
  21. 21. Evitar RFI y LFI<br />UrlScanpordefectobloquea: exe, bat, cmd, com, htw, ida, idq, htr, idc, printer, ini, pol, dat, etc.<br />En PHP se puedeutilizarMod_Security y/o Sushosin<br />Todaslasvalidaciones se debenrealizar en ambos lados:cliente y servidor<br />
  22. 22. XSS – Cross-Site Script<br />Ejecución de código no validadoen el cliente a través de la inyección del mismopordiversosmétodos<br />
  23. 23. Las galletitas<br />
  24. 24. Las galletitas<br />Programar, comer y beber<br />¡That’slife!<br />Las cookiespueden ser obtenidasdesde el cliente a través de scriptssencillos y a través de ataques XSS<br />Si el browsersoportaHTTP-Only, se puedebloquear la lectura y escritura de lascookies en el cliente<br />
  25. 25. XSS y Phishing<br />
  26. 26. Control de Cookies<br />Controlar la información en lascookies<br />Implementar HTTP-Only<br />Sin HTTP-Only<br />Con HTTP-Only<br />
  27. 27. Navegadores con HTTP-Only<br />http://www.owasp.org/<br />
  28. 28. Cross DomainRequest<br />Los archivos no alcanzaron así que cargamos img, frames, forms, CSS, JS, etc. desde múltiples dominios<br />Cross-site HTTP requests: solicitudes HTTP que se realizandesdediferentesdominios<br />La W3C ha propuesto un nuevo estándar para controlar el Cross DomainRequest<br />Todos los navegadores lo soportan excepto Opera (por ahora)<br />
  29. 29. X-FrameOrigin<br />Frame<br />
  30. 30. RIA: Rich Internet Applications<br />Las aplicaciones no se validan porque no tienen vulnerabilidades, o las mismas no pueden explotarse<br />
  31. 31. Dos políticas a implementar<br />Mismoorigen:si dos sitioscomparten el mismo [protocolo:puerto] entoncestienen el mismoorigenPuede ser utilizadopararestringir la ejecuciónsólodesdedominiosválidos<br />SandBox: la ejecución se realiza en un entornocontrolado y no se accede a recursosque no hansidoespecíficamenteautorizadosLos procesos son considerados de “bajaintegridad” y no puedenacceder a procesos de integridad mayor (MIC y UIPI)<br />
  32. 32. URL Redirect<br />Para controlar los “abandonos”de mi sitio, redirecciono a sitios externos mediante un script<br />
  33. 33. Bad URL Redirect<br />
  34. 34. Control de URL<br />Registrar y administrarlas URL del sitio<br />¿Yadijequelasvalidaciones se debenhacer de ambos lados?<br />
  35. 35. Control de URL y Salt<br />Ponele SALT a tu vida<br />Intentarutilizar HMAC paragenerardatoscodificados y checksum en información sensible<br />
  36. 36. SQL Injection<br />
  37. 37. SQL Injection<br />Creoqueya lo dije: lasvalidaciones se debenhacer de ambos lados<br />
  38. 38. Testing en producción<br />El testing es rápido así que lo realizamos en el servidor productivo<br />El desarrollo y el testingdebenrealizarse en servidores != producción<br />
  39. 39. Conclusiones y pasos a aplicar<br />Asumir que cualquier entrada es maliciosa<br />Validar todas las entradas<br />Validar todas las salidas<br />Codificar cada entrada y salida<br />Utilizar aplicaciones para validación <br />Validar permisos de la aplicación y sus usuarios<br />
  40. 40. Finalmente: mi preferida<br />Sin palabras… <br />
  41. 41. Referencias<br />Microsoft Security Development Lifecycle v5http://bit.ly/9piMph<br />Threat Analysis and Modeling (TAM) v3http://bit.ly/cTP0Uq<br />FoundStone Free Toolshttp://bit.ly/aep4qs<br />WebGoathttp://bit.ly/btPp9n<br />Damn Vulnerable Web App (DVWA) http://bit.ly/9NeO8F<br />WritingSecureCodehttp://amzn.to/aEytaE<br />Sanitize HTMLhttp://bit.ly/b9fn0R<br />URLScanhttp://bit.ly/aX8V4X<br />Practical Windows Sandboxing (3 partes)http://bit.ly/adWAIW - http://bit.ly/cBgWW9 - http://bit.ly/9lSw97<br />
  42. 42. Preguntas<br />Lic. CristianBorghello, CISSP - MVP<br />info@segu-info.com.ar<br />
  43. 43. Participá del DEMOFEST<br />Los mejores proyectos de las células Microsoft, los grupos de investigación de estudiantes, son seleccionados para participar en el espacio del DEMOFEST.<br />¡Conócelos!<br />
  44. 44. Necesitamos tu Feedback!<br />Completá los FORM de avaluación que estarán en nuestra WEB:<br />www.codecamp.com.ar<br />Necesitamos de tu feedback para mejorar.<br />
  45. 45. © 2008 Microsoft Corporation. Todos los derechosreservados. Microsoft, Windows, Windows Vista y otrosnombres de producto son y pueden ser marcasregistradas y registros en EstadosUnidos y en otrospaíses.<br />La informacióncontenida en el presenteessólopara fines informativos y representa la visión actual de Microsoft Corporation a la fecha de estapresentación. Debido a que Microsoft debe responder a lascambiantescondiciones del mercado, no se debeinterpretarcomo un compromisopor parte de Microsoft, y Microsoft no puedegarantizar la precisión de ningunainformaciónprovistadespués de la fecha de estapresentación. MICROSOFT NO OFRECE GARANTÍA ALGUNA, EXPRESA, IMPLÍCITA O DE LEY, RESPECTO A LA INFORMACIÓN EN ESTA PRESENTACIÓN.<br />

×