You are on page 1of 19

Dr.

Roberto Gm ez Crdenas

Seguridad Inform tica

Seguridad en Aplicaciones Web


Daro Herrera
dario@sm4rt.com

Lmina 1

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
Lmina 2

Seguridad en Aplicaciones

Dr. Roberto Gm ez Crdenas

Seguridad Inform tica

Seguridad en el Proceso de Desarrollo


Analizar
amenazas
Revisar conocimiento
de seguridad al encontrar nuevos elementos

Enviar a anlisis
externo
Determinar
criterios de
aceptacin

Hackeo tico de
aplicacin

Concepto
Diseo
Planes de
Concepto
Diseo CompletoPlan de Pruebas
Cdigo
Completo
Pruebas
Completo

Entrenar a los
integrantes del
equipo

Aprender y
refinar

Desarrollo
Implantacin
Implantacin
Completo

Operacin

Resolver problemas de
seguridad y hacer
revisin de cdigo

Hacer una revisin en equipo de


seguridad

Probar manipulacin de datos y


mnimos privilegios

= Continuo

Lmina 3

COSTOS

Ah!, los costos

TIEMPO

Lmina 4

Seguridad en Aplicaciones

Dr. Roberto Gm ez Crdenas

Seguridad Inform tica

Autenticacin

es el proceso de verificar que los usuarios


son quienes dicen ser
--wikipedia
http://es.wikipedia.org/wiki/Autenticacin

Lmina 5

Autorizacin

proceso de verificar si el usuario [] tiene


permiso para acceder a un dato,
funcionalidad o servicio
--wikipedia
http://es.wikipedia.org/wiki/Autorizacin

Lmina 6

Seguridad en Aplicaciones

Dr. Roberto Gm ez Crdenas

Seguridad Inform tica

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 7

Manejo de sesiones

Asegurar que los usuarios autenticados


tengan una robusta y criptogrficamente
segura asociacin con su sesin

Lmina 8

Seguridad en Aplicaciones

Dr. Roberto Gm ez Crdenas

Seguridad Inform tica

Validacin de ingresos de informacin

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

Lmina 9

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

Lmina 10

Seguridad en Aplicaciones

Dr. Roberto Gm ez Crdenas

Seguridad Inform tica

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

Lmina 11

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

Lmina 12

Seguridad en Aplicaciones

Dr. Roberto Gm ez Crdenas

Seguridad Inform tica

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 13

Bitcoras

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

Rastreo
Documentacin
Aprendizaje
Reaccin a incidentes

Lmina 14

Seguridad en Aplicaciones

Dr. Roberto Gm ez Crdenas

Seguridad Inform tica

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 15

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
Lmina 16

Seguridad en Aplicaciones

Dr. Roberto Gm ez Crdenas

Seguridad Inform tica

A1 SQL Injection
Un query de login con error de inyeccin:
SELECT * FROM users
WHERE login = 'victor'
AND password = '123'

(True? - Si regresa algo entonces es vlido!)


ASP/MS SQL Server login syntax
var sql = "SELECT * FROM users
WHERE login = '" + formusr +
"' AND password = '" + formpwd + "'";
Lmina 17

A1 SQL Injection
formusr = ' or 1=1
formpwd = lo que sea
El query final se vera as:
SELECT * FROM users
WHERE username = ' ' or 1=1

AND password = 'lo que sea'


Lmina 18

Seguridad en Aplicaciones

Dr. Roberto Gm ez Crdenas

Seguridad Inform tica

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 19

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)

Lmina 20

Seguridad en Aplicaciones

10

Dr. Roberto Gm ez Crdenas

Seguridad Inform tica

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 21

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
Lmina 22

Seguridad en Aplicaciones

11

Dr. Roberto Gm ez Crdenas

Seguridad Inform tica

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 23

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
Lmina 24

Seguridad en Aplicaciones

12

Dr. Roberto Gm ez Crdenas

Seguridad Inform tica

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 25

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.

Lmina 26

Seguridad en Aplicaciones

13

Dr. Roberto Gm ez Crdenas

Seguridad Inform tica

A5 Configuracin Inadecuada de
seguridad
Los servidores Web y los de aplicacin no son seguros por
default 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 27

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

Lmina 28

Seguridad en Aplicaciones

14

Dr. Roberto Gm ez Crdenas

Seguridad Inform tica

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 29

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
Lmina 30

Seguridad en Aplicaciones

15

Dr. Roberto Gm ez Crdenas

Seguridad Inform tica

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 31

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
Lmina 32

Seguridad en Aplicaciones

16

Dr. Roberto Gm ez Crdenas

Seguridad Inform tica

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 33

Contexto de un proceso
direcciones altas
de memoria

Direccin fija

stack
Datos dinmicos
del programa
heap
datos no inicializados
datos inicializados
READ-WRITE

Datos estticos del


programa

datos inicializados
READ-ONLY

direcciones bajas
de memoria

CDIGO

Cdigo del
programa

Lmina 34

Seguridad en Aplicaciones

17

Dr. Roberto Gm ez Crdenas

Seguridad Inform tica

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 35

Inyectando cdigo

Buffer 100 bytes

stack

El cdigo ASCII de A es 41

Cadena con
SHELL CODE

Buffer 100 bytes

Cdigo en
Ensamblador
(ejecuta SH o
ejecuta cmd.exe)

0x02fe4f0a

0x0050a78f
0x41414141
EBP

EBP

0x02fe4f0a
0x41414141

0x02fe4f0a

0x02fe4f0a

stack

0x02fe4f0a

stack

RET

RET

Cadena con 120 caracteres A

stack

NOPs

Lmina 36

Seguridad en Aplicaciones

18

Dr. Roberto Gm ez Crdenas

Seguridad Inform tica

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

Lmina 37

Seguridad en Aplicaciones

19

You might also like