sega plic web

Upload: byron-delgado

Post on 06-Oct-2015

217 views

Category:

Documents


0 download

DESCRIPTION

,,,ññññ

TRANSCRIPT

  • Seguridad Informtica

    Seguridad en Aplicaciones 1

    Dr. Roberto Gmez Crdenas

    Lmina 1

    Seguridad en Aplicaciones Web

    Daro [email protected]

    Lmina 2

    Seguridad es un Proceso

    La seguridad debe contemplarse lo antes posible en el ciclo de vida del software Entre ms tarde se implementa la seguridad ms costosa

    es

    Seguridad en el Desarrollo Al inicio del proceso A lo largo del desarrollo En la implantacin En el mantenimiento diario

    Buscar problemas de seguridad durante todo el proceso de desarrollo y continuar una vez en produccin

  • Seguridad Informtica

    Seguridad en Aplicaciones 2

    Dr. Roberto Gmez Crdenas

    Lmina 3

    Seguridad en el Proceso de Desarrollo

    Concepto DiseoCompleto

    Plan dePruebas

    CdigoCompleto

    ImplantacinConcepto Diseo

    CompletoPlanes dePruebas

    DesarrolloCompleto

    Implantacin Operacin

    Hacer una rev-isin en equipo de seguridad

    Determinar criterios de aceptacin

    Enviar a anlisis externo

    Probar manipula-cin de datos y mnimos privilegios

    = Continuo

    Resolver problemas de seguridad y hacer revisin de cdigo

    Entrenar a losintegrantes del equipo

    Analizar amenazas

    Hackeo tico de aplicacin

    Aprender y refinar

    Revisar conocimientode seguridad al encon-trar nuevos elementos

    Lmina 4

    Ah!, los costos

    COST

    OS

    TIEMPO

  • Seguridad Informtica

    Seguridad en Aplicaciones 3

    Dr. Roberto Gmez Crdenas

    Lmina 5

    Autenticacin

    es el proceso de verificar que los usuarios son quienes dicen ser

    --wikipediahttp://es.wikipedia.org/wiki/Autenticacin

    Lmina 6

    Autorizacin

    proceso de verificar si el usuario [] tiene permiso para acceder a un dato, funcionalidad o servicio

    --wikipediahttp://es.wikipedia.org/wiki/Autorizacin

  • Seguridad Informtica

    Seguridad en Aplicaciones 4

    Dr. Roberto Gmez Crdenas

    Lmina 7

    Manejo de sesin

    Longitud de la semilla de sesin Duracin de la sesin Reuso de sesin Borrado de sesin Formato de semilla de sesin

    Lmina 8

    Manejo de sesiones

    Asegurar que los usuarios autenticados tengan una robusta y criptogrficamente

    segura asociacin con su sesin

  • Seguridad Informtica

    Seguridad en Aplicaciones 5

    Dr. Roberto Gmez Crdenas

    Lmina 9

    Validacin de ingresos de informacin

    Inyeccin de scripts Inyeccin de LDAP Inyeccin de SQL Cross site scripting

    Lmina 10

    Validacin de datos

    Asegurar que la aplicacin es robusta en contra de todas las formas de entrada de

    datos, tanto obtenidas del usuario, infraestructura, entidades externas o

    sistemas de bases de datos

  • Seguridad Informtica

    Seguridad en Aplicaciones 6

    Dr. Roberto Gmez Crdenas

    Lmina 11

    Manejo de errores

    Mensajes de error de aplicacin Mensajes de error de usuario Qu hacer cuando sucede un error?

    Lmina 12

    Manejo de errores

    Los atacantes motivados gustan de ver los mensajes de error mientras van obteniendo

    informacin que los conduzca ataques de gran alcance, o a obtener informacin sensitiva.

    El manejo de errores en las aplicaciones web es raro que sea los suficientemente robusto para sobrevivir

    una prueba de penetracin

  • Seguridad Informtica

    Seguridad en Aplicaciones 7

    Dr. Roberto Gmez Crdenas

    Lmina 13

    Administracin de configuraciones

    Determinar si la aplicacin y su ambiente estn configurados correctamente Mtodos http Hosting virtual Actualizacin de servidor Programa de respaldo Configuracin de servidor Web Componentes de servidor Web Directorios comunes Opciones predeterminadas de lenguaje Acceso a consola de administracin

    Lmina 14

    Bitcoras

    Trazabilidad de eventos Recuperacin de evidencias Entender la mecnica de ataques Aprender de los errores Automatizacin:

    Rastreo Documentacin Aprendizaje Reaccin a incidentes

  • Seguridad Informtica

    Seguridad en Aplicaciones 8

    Dr. Roberto Gmez Crdenas

    Lmina 15

    Bitcoras

    Las aplicaciones bien escritas tendrn bitcoras de doble propsito para auditar y monitorear, y hacer

    mas sencillo rastrear una transaccin sin demasiado esfuerzo o acceso al sistema. Deben poseer la habilidad para rastrear o identificar fraudes

    potenciales o anomalas de fin-a-fin

    Lmina 16

    A1 - Fallas de Inyeccin

    La aplicacin Web pasa parmetros no validados cuando accede a sistemas externos o al sistema operativo local.

    Tipos de ataque Lectura, modificacin o borrado de archivos del

    sistema Lectura, modificacin o borrado de datos en una

    base de datos Ejecucin de comandos en el sistema operativo Ejecucin de comandos en la base de datos

  • Seguridad Informtica

    Seguridad en Aplicaciones 9

    Dr. Roberto Gmez Crdenas

    Lmina 17

    A1 SQL Injection

    Un query de login con error de inyeccin:SELECT * FROM usersWHERE login = 'victor'AND password = '123'

    (True? - Si regresa algo entonces es vlido!)ASP/MS SQL Server login syntax

    var sql = "SELECT * FROM usersWHERE login = '" + formusr + "' AND password = '" + formpwd + "'";

    Lmina 18

    A1 SQL Injection

    formusr = ' or 1=1 formpwd = lo que sea

    El query final se vera as:SELECT * FROM usersWHERE username = ' ' or 1=1 AND password = 'lo que sea'

  • Seguridad Informtica

    Seguridad en Aplicaciones 10

    Dr. Roberto Gmez Crdenas

    Lmina 19

    A1 Origen

    El programador no valida los datos antes de pasarlos

    Los datos que llegan en http son concatenados directamente con comandos

    Muchos tutoriales o demos en Internet tienen errores de inyeccin

    Cmo saber si soy vulnerable? Herramientas como nikto, nessus o fuzzers (diagnstico

    parcial) Revisin de Cdigo Ethical hacking evaluacin de aplicaciones

    Lmina 20

    A1 Solucin

    Una vez ms recaemos en el componente centralizado o librera que administre la validacin de entradas

    Hacer filtros que dejen pasar slo lo que est bien. Aquello con error debe ser rechazado (no tratar de arreglarlo).

    Hacer un aseguramiento del servidor para evitar lo que el atacante puede hacer si logra ejecutar (mnimos privilegios)

    Validar contra una especificacin rigurosa de lo que debe ser permitido en todas las Cabeceras Cookies Cadenas de peticin Campos de formularios Campos escondidos etc. (todos los parmetros)

  • Seguridad Informtica

    Seguridad en Aplicaciones 11

    Dr. Roberto Gmez Crdenas

    Lmina 21

    A2 Admon. de Autenticacin y Sesin Incorrectos

    Las credenciales de la cuenta y los tokens de sesin no estn bien protegidos

    Tipos de Ataques Comprometer las contraseas, claves, cookies de

    sesin u otro token Asumir la identidad de otros usuarios Robo de sesiones abiertas Reutilizacin de sesiones Cambio de usuario o contrasea Abuso de funcionalidad de contrasea olvidada

    Lmina 22

    A2 Origen

    Cada request de HTTP abre y cierra una nueva conexin TCP (no maneja sesiones)

    La mayora de los webservers y lenguajes tienen algn tipo implementado de manejo de sesiones Sin embargo, muchos programadores disean uno propio

    o cambian uno existente Por conveniencia se agrega funcionalidad para que

    el usuario administre su usuario y contrasea o la recupere en caso de olvido

    Cmo saber si soy vulnerable? Revisin de Cdigo Ethical hacking evaluacin de aplicaciones

  • Seguridad Informtica

    Seguridad en Aplicaciones 12

    Dr. Roberto Gmez Crdenas

    Lmina 23

    A3 - Cross Site Scripting

    La aplicacin Web puede ser usada como un mecanismo para transportar un ataque al navegador del usuario final

    Pueden ser almacenados o reflejados Tipos de Ataque

    Compromiso del token de sesin del usuario final Envo de usuario, contrasea y otros datos al sitio del

    atacante Ataque a la mquina local

    Divulgacin de archivos Instalacin de troyanos

    Enmascarar contenido para engaar al usuario Ataque al servidor va Server Side Includes

    Lmina 24

    A3 Tipos de Ataques

    Tipos de ataques: Navegacin forzada Insercin de comandos Cross site scripting Buffer overflow Ataques de formato de cadena de caracteres Inyeccin de SQL Manipulacin de cookies y campos escondidos

    La mayora de estos se repiten ms a detalle en puntos posteriores

  • Seguridad Informtica

    Seguridad en Aplicaciones 13

    Dr. Roberto Gmez Crdenas

    Lmina 25

    A3 Origen

    Falta de validacin de datos Desconocimiento de las implicaciones Una entrada de HTTP encuentra salida en el HTML Cdigo mal escrito Cmo saber si soy vulnerable?

    Herramientas como nikto, nessus, appscan o fuzzers (diagnstico parcial)

    Revisin de Cdigo Ethical hacking evaluacin de aplicaciones

    Lmina 26

    A4 Referencia directa insegura a objetos

    Los programadores usan referencias directas a nombres de archivos del sistema para proveer funcionalidad

    Internamente, la aplicacin puede tener acceso a archivos del sistema por llamados locales

    Todos los marcos de trabajo de desarrollo permiten este comportamiento.

  • Seguridad Informtica

    Seguridad en Aplicaciones 14

    Dr. Roberto Gmez Crdenas

    Lmina 27

    A5 Configuracin Inadecuada de seguridad

    Los servidores Web y los de aplicacin no son seguros pordefault al ser instalados

    Es complicado mantener un hardenning eficiente para estos servicios

    Muchas aplicaciones no estn desarrolladas para funcionar sobre servidores asegurados

    Tipos de Ataques Explosin de vulnerabilidades (Exploits) Acceso no autorizado a recursos sensitivos Modificacin de los recursos en el servicio Explosin de vulnerabilidades en servicios relacionados Obtencin de informacin de mensajes de error Ataques de hombre en el medio

    Lmina 28

    A6 Exposicin de datos sensitivos

    Una proteccin dbil o nula como resultado de mala implantacin de funciones criptogrficas o algoritmos de cifrado a nivel del almacenamiento

    Tipos de Ataque Fallar al no cifrar informacin crtica (@rest, in-motion, @work) Almacenamiento inseguro de llaves, certificados y contraseas Almacenamiento incorrecto de secretos en memoria Semillas pobres para generar nmeros aleatorios Eleccin pobre de algoritmo Intentar inventar el nuevo algoritmo de cifrado Fallar al incluir soporte para cambios en las llaves de cifrado y otros

    procedimientos requeridos de mantenimiento

  • Seguridad Informtica

    Seguridad en Aplicaciones 15

    Dr. Roberto Gmez Crdenas

    Lmina 29

    A7 Fallo de controles de acceso a nivel funcional

    Un atacante podra acceder a recursos web annimamente o a los que no le estaba permitido en su perfil como usuario

    Los desarrolladores parten de la base que un usuario slo navegar al dar click en los enlaces dentro de la pgina web

    Tipos de Ataque Navegacin forzada Escalamiento de privilegios Crawling inteligente de los sitios web

    Lmina 30

    A8 - Cross Site Request Forgery

    La sesin legtima del usuario puede ser aprovechada por un atacante para llevar a cabo acciones en nombre de la vctima

    Pueden ser almacenados o reflejados Todas los marcos de aplicaciones web son

    susceptibles a estos ataques Tipos de Ataque

    Compromiso del token de sesin del usuario final Envo de usuario, contrasea y otros datos al sitio del

    atacante Ejecucin de transacciones automatizada Robo de informacin privada

  • Seguridad Informtica

    Seguridad en Aplicaciones 16

    Dr. Roberto Gmez Crdenas

    Lmina 31

    A10 Redireccionamientos y reenvo no validados

    La navegacin automatizada y parametrizada del sitio web puede exponer su sitio a ataques de phishing.

    Se parte de la base que la URL del sitio es vlida, mientras que sus parmetros pueden descargar, instalar o ejecutar acciones no deseadas.

    Tipos de ataque Phishing Spam, bombardeo de propaganda basura Ejecusin de transacciones combinando CSRF

    Lmina 32

    Plus - Buffer overflow

    Componentes que no validan adecuadamente las entradas de datos pueden ser atacados y, en algunos casos, usados para tomar control de un proceso.

    Lenguajes de alto nivel son inmunes pero no hay ningn tipo de proteccin en C, C++ o ensamblador

    Tipos de Ataque Negacin de servicio Ejecucin de comandos Escalamiento de privilegios Puede ser en CGIs, rutinas, DLLs, componentes del servidor

    Web o incluso biblioteca de terceros Race conditions y format string bugs resultan en ataques

    similares al buffer overflow

  • Seguridad Informtica

    Seguridad en Aplicaciones 17

    Dr. Roberto Gmez Crdenas

    Lmina 33

    Origen

    Al programar no se valida la longitud y tamao de los datos que se reciben

    Ocurre cuando valores son escritos a un buffer de tamao fijo y al menos un valor sobrepasa el tamao designado

    Se asumen tamaos errneos Mal uso de comandos como strcpy() y strcat() Mala lgica de programacin y forma no estructurada de punteros Cmo saber si soy vulnerable?

    Si no se ha hecho un hardening adecuado o no estn las ltimas actualizaciones, es muy probable que sea vulnerable

    Herramientas como nessus pueden ayudar a detectar las ms comunes Para aplicaciones propietarias, la forma ms rpida es por medio de una

    Revisin de Cdigo

    Lmina 34

    stack

    heap

    Datos dinmicosdel programa

    Contexto de un proceso

    datos inicializadosREAD-ONLY

    datos inicializadosREAD-WRITE

    datos no inicializados

    Datos estticos del programa

    CDIGO Cdigo del programadirecciones bajasde memoria

    direcciones altasde memoria

    Direccin fija

  • Seguridad Informtica

    Seguridad en Aplicaciones 18

    Dr. Roberto Gmez Crdenas

    Lmina 35

    Stack

    Una porcin del espacio de direcciones de un proceso

    Provee un lugar de almacenaje temporal para variables locales declaradas dentro de funciones

    Se usa como un bloc de notas cuando un proceso necesita almacenaje temporal

    Guarda informacin de referencia cuando llama a una funcin Parmetros que no caben en los registros Valores guardados de los registros Direccin de donde la funcin fue llamada

    Lmina 36

    Inyectando cdigo

    Buffer 100 bytes stack

    RET

    EBPstack

    0x02

    fe4f

    0a

    0x00

    50a7

    8f

    Cadena con 120 caracteres A

    0x41

    4141

    41

    0x41

    4141

    41 El cdigo ASCII de A es 41

    Buffer 100 bytes stack

    RET

    EBPstack

    Cadena con SHELL CODE

    NOPsCdigo enEnsamblador(ejecuta SH o ejecuta cmd.exe)0x

    02fe

    4f0a

    0x02

    fe4f

    0a

    0x02

    fe4f

    0a

    0x02

    fe4f

    0a

  • Seguridad Informtica

    Seguridad en Aplicaciones 19

    Dr. Roberto Gmez Crdenas

    Lmina 37

    Solucin

    Mantener siempre todos los sistemas operativos y aplicaciones con las ltimas actualizaciones y parches

    Se deben validar todas las operaciones de entrada y salida as como las delimitaciones de todas las series

    Revisar siempre el tamao de los buffers antes de manipularlos Evitar usar funciones que no revisan delimitaciones: strcpy(), strcat(),

    sprintf(), gets(), etc. Usar funciones alternativas seguras: strncpy(), strncat(), snprintf(),

    fgets(), etc. Los programas deben ser ejecutados con el mnimo nivel de privilegios

    para realizar la tarea Usar lenguajes que prevengan los buffer overflows (Perl, Java, .Net,

    etc.) Usar libreras y herramientas al disear y compilar que prevengan este

    tipo de vulnerabilidades