Autenticación y control de acceso Seguridad en Redes de Ordenadores Enrique Soriano LS, GSYC 24 de abril de 2016 (cc) 2015 Grupo de Sistemas y Comunicaciones. Algunos derechos reservados. Este trabajo se entrega bajo la licencia Creative Commons Reconocimiento NoComercial - SinObraDerivada (by-nc-nd). Para obtener la licencia completa, véase http://creativecommons.org/licenses También puede solicitarse a Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA. Términos I Identificación: Alguien dice ser un sujeto concreto. I Autenticación: Alguien demuestra su identidad. I Autorización: Otorgamiento de privilegios a un sujeto para realizar una operación de acceso sobre uno o varios objetos. I Control de acceso: Permitir o denegar una operación de acceso sobre un recurso en base a la autorización del sujeto. Autenticación I Un programa se autentica ante el sistema a nombre de un usuario y pasa a ejecutar a su nombre. I ¿Cómo te autenticas? I I I I I Algo que conoces. Algo que tienes. Algo que eres. Algo que haces. Donde estás. Contraseñas I La forma más común y sencilla de autenticación: el usuario proporciona un secreto que sólo él y el sistema conocen. I Riesgos: I I I I I Que vean nuestra contraseña. Que la adivinen. Spoofing (suplantación). Que se hagan con el almacén de contraseñas. Siempre que sea posible, es recomendable realizar una utenticación en dos pasos (Two-Factor Authentication): además de la contraseña, usar un método adicional de autenticación (P. ej. Google Authenticator, Latch, etc.). Contraseñas Que vean nuestra contraseña: I No se deben compartir. I No se deben apuntar en claro. I No se debe usar la misma contraseña para distintos servicios. I Aplicaciones keyring : Password Safe (Windows), Keychain (OSX), etc. Contraseñas Que adivinen nuestra contraseña: I Ataque de fuerza bruta. I Búsqueda inteligente. I Ataque de diccionario online. Ataque de fuerza bruta Keyspace: I Siendo S la longitud de la contraseña y N el número de sı́mbolos que se pueden usar en las contraseñas. Keyspace = s P Ni i=0 I Ejemplo: Contraseñas de sólo minúsculas y de 0 a 8 caracteres: I Ejemplo: Con mayúsculas, minúsculas, números y sı́mbolos de puntuación, de 0 a 14 caracteres: Ataque inteligente Imagen (C) xato.net Contraseñas No usar passwords comunes: Contraseñas Contraseñas de calidad: I Nnemotécnicos: TabletMipefaesstwa3 de “Mi pelı́cula favorita es star wars 3” I Rimas: SEGURIDAD-0-calamidad@casa I Repetición: hey.h0.HEY.H0.6 Contraseñas Distintas contraseñas para distintos servicios: I Se puede tener un método para generar las contraseñas para distintos servicios. I Por ejemplo, poner al principio el número de caracteres del servicio o servidor: I I I Amazon: A6m1--mej0r--SECRETO Msn: M3m1--mej0r--SECRETO Apple: A5m1--mej0r--SECRETO Contraseñas Medidas de protección: I No permitir contraseñas vacı́as en el sistema. I Obligar a cambiar las contraseñas por omisión. Ejemplo: routers adsl. I Obligar a que tengan una longitud mı́nima (no menos de 8 caracteres). I Obligar a que no sean palabras del diccionario: requerimos puntos, números, mayúsculas y minúsculas, etc. Contraseñas Medidas de protección: I Pasamos crackers para validarlas. Ejemplo: John the Ripper. I Obligar a cambiar las contraseñas periódicamente. I No permitir reusar contraseñas antiguas. I No es buena idea generar contraseñas aleatorias para los usuarios → las apuntan. Si son aleatorias, no deben ser predecibles. Contraseñas Medidas de protección: I Limitar el número de intentos de autenticación. I Aumentar el tiempo entre autenticaciones fallidas. I Compromiso: seguridad vs. obstrucción. Contraseñas Más riesgos: que nos timen. I Spoofing I Keyloggers I Ingenierı́a social I ... Contraseñas Spoofing: I Un atacante reemplaza al sujeto ante el que nos autenticamos, y nos roba la contraseña. I Seguramente no nos demos cuenta: el resultado de la autenticación parece un error al escribir la contraseña, pero no lo es. I Ataque clásico: reemplazar /bin/login I En el WWW: te conectas a una página que no es la que crees (p. ej. te engañan con phishing ). Contraseñas Medidas de protección: I Imprimir el número de intentos reales que se llevan. I Trusted Path: estar seguros de que el usuario se comunica con el sistema operativo y no con un programa falso. I Autenticación mutua: el programa de login se autentica ante el usuario antes de que el usuario se identifique y autentique. Contraseñas Keyloggers: I Software: un programa captura todo lo que tecleamos. I Hardware: espı́a el cable del teclado o la transmisión inalámbrica de ratones/teclados. Aprox. 50 Euros, 2Gb. Los hay WiFi. Contraseñas Medidas de protección: I Para PIN: mostrar una tabla por pantalla con una sustitución de los números por caracteres, distinta en cada autenticación. I Usar el ratón para introducir la contraseña. I ... pero también nos pueden engañar con hardware (150 Euros, 2 Gb de screenshots). Contraseñas Moraleja: I The Big Stick Principle. Contraseñas Si se hacen con el almacén de contraseñas: I Las contraseñas se suelen guardar cifradas. I Por lo general, se guarda un hash de la contraseña. I Ataque de diccionario offline: mucho más efectivo que online. Contraseñas Ataque de diccionario offline: I Buscar la hash que se quiere romper en una tabla precalculada de tuplas (contraseña, hash) → cambias tiempo de computación por espacio. I Rainbow-tables (p. ej. ophcrack). I Uso de Google para encontrar la hash. ¿Qué contraseña tiene esta hash SHA-1? 99800b85d3383e3a2fb45eb7d0066a4879a9dad0 ¡Búscalo en Google! Rainbow Tables Compromiso espacio/cómputo: Contraseñas Medidas de protección: I Contraseñas buenas: aumenta el keyspace objetivo de la tabla. I Hashes con salt: necesitas una tabla a medida para romper una contraseña especı́fica. I key strengthening : salt secreta. Caso: autenticación clásica en Unix Pasos de arranque: 1. Scripts de arranque (init). 2. /bin/getty 3. /bin/login Caso: credenciales en Unix Un proceso tiene credenciales 1 : I PID: identificador de proceso. I UID: identificador de usuario. I GID: identificador de grupo. I EUID: identificador de usuario efectivo, el que se usa para comprobar privilegios. I EGID: identificador de grupo efectivo, el que se usa para comprobar privilegios. I ... 1 Dependen del “sabor” de UNIX Caso: autenticación básica en Unix /etc/passwd: I Login. I Contraseña (“x” cuando tenemos shadow ) I UID. I GID. I Gecos info: datos sobre el usuario, separados por comas. I Path del home. I Programa de inicio. Caso: autenticación básica en Unix /etc/shadow: I I Login. Hash: son tres campos separados por $. I I I Algoritmo: p. ej. 1 es MD6, 6 es SHA-512. Salt Hash NOTA: Si tiene un valor que no se corresponde con una posible salida de crypt, el usuario no se podrá autenticar con contraseña (pero sı́ de otras formas). Por ejemplo, se pone ∗ o ! para evitar que el usuario entre con contraseña. Si está vacı́o, el usuario no tiene contraseña (no es recomendable). En Linux recientes, la contraseña de root es !. Caso: autenticación básica en Unix /etc/shadow (continúa): I Fecha Unix del último cambio de contraseña. I Mı́nima edad: mı́nimo número de dı́as para permitir un cambio de contraseña. I Máxima edad: dı́as tras los que tiene que cambiar la contraseña. I Dı́as, antes de la caducidad según el campo anterior, para avisar al usuario. I Dı́as de prórroga desde que caduca, cuando pasan se anula la contraseña. Caso: autenticación básica en Unix /etc/shadow (continúa): I Fecha Unix de caducidad para la cuenta. Si llega, se cancela la cuenta. No es lo mismo que la edad de la contraseña, esta es más dura. I Campo reservado para uso futuro. Caso: control de credenciales en Unix I /bin/id: Permite ver tu UID y GID. I /bin/su: Permite ejecutar un shell con otro UID. Por omisión, intenta ejecutar un shell con UID 0. I /usr/bin/sudo: Permite ejecutar un comando con otro UID, proporcionando tu propia contraseña. El fichero /etc/sudoers especifica quién puede convertirse en quién, y para qué. Caso: control de credenciales en Unix Ejemplo de sudoers (I): jose ALL = (root, bin : operator, system) ALL I jose puede, en cualquier máquina I adquirir el UID de root y bin I adquirir el GID de operator y system I para ejecutar cualquier comando Caso: control de credenciales en Unix Ejemplo de sudoers (II): ramon mono = NOPASSWD: /bin/kill, PASSWD: /bin/ls, /usr/bin/lprm I ramon puede, en la máquina mono I adquirir el UID de root I para ejecutar kill sin proporcionar contraseña I para ejecutar ls y lprm proporcionando contraseña Caso: autenticación en Windows I Windows almacena las contraseñas en SAM: \windows\system32\config\sam I El fichero está bloqueado en todo momento. Puede contener dos tipos de contraseñas cifradas: I I I LM (Lan Manager). ¡Inseguro! Windows 7 no la usa por omisión (pero se puede configurar para que las use, ojo). NTLM (NT Lan Manager): No tan seguro como deberı́a. Caso: autenticación en Windows En un terminal (cmd.exe )como administrador: Caso: autenticación en Windows Contraseñas LM (Lan Manager): I Convierte todos los caracteres de la contraseña a mayúsculas. I Rellena con 0s la contraseña hasta llegar a los 14 caracteres. I Parte la contraseña en dos bloques de 7 bytes. I Usa los dos bloques como claves para cifrar con DES para un bloque de datos conocido: 0x4b47532140232425 I Concatena el resultado de los dos cifrados DES. ¡NO podı́an haber metido más la pata! Caso: autenticación en Windows Contraseñas LM (Lan Manager): VS Caso: autenticación en Windows Contraseñas NTLM (NT Lan Manager): I Usa una hash MD4 de 128 bits, que era segura en 1991: I I Ataque de colisión en microsegundos. Ataque de pre-imagen teórico. I Diferencia entre mayúsculas y minúsculas. I No usa salt. Caso: autenticación en Windows Syskey: I I Añade una capa extra de seguridad cifrando el almacén de claves de SAM. Opción I (activada por omisión): I I I Usa una clave generada para cada sistema y que está oculta en el Registro. Viola el principio de Kerckhoffs: no sirve de nada. bkhive la encuentra, samdump2 descifra el archivo de SAM. I Opción II:Generar la clave a partir de una contraseña adicional que se introduce en el arranque. I Opción III: Almacenar la clave en un disco extraı́ble. Caso: autenticación en Windows Ophcrack rompe contraseñas débiles de Windows NT (hashes MD4) con rainbow tables: Caso: control de credenciales en Windows En Windows es común usar una cuenta de administrador. User Account Control (UAC) permite controlar los privilegios: I Un administrador tiene un token de usuario y token de administrador. I Idea: evitar el uso del token de administrador para operaciones que no lo requieren. I Cuando se intenta usar el de administrador (elevación) se presenta una ventana de diálogo UAC para pedir permiso o credenciales. Caso: control de credenciales en Windows Los diálogos de elevación usan un código de colores: I Rojo (con escudo) si el firmante de la aplicación está bloqueado, es una aplicación sin firma bajada de Internet. I Azul (con escudo) si es una aplicación administrativa de Windows (p.ej. Panel de Control). I Azul (con interrogación) si la aplicación está firmada por terceros con Authenticode y se puede verificar. I Amarillo (con escudo) si la aplicación no está firmada o está firmada pero no se puede verificar. Caso: control de credenciales en Windows Caso: control de credenciales en Windows UAC niveles I Sólo el nivel más alto impide autoelevación silenciosa. I Los niveles más bajos no usan el escritorio seguro. Caso: control de credenciales en Windows Ventajas de UAC: I No hay que usar dos cuentas (usuario y administrador). I No hay que entender para qué hay que usar la cuenta de administrador y para qué la otra. I No hay que gestionar dos perfiles distintos (carpetas, escritorios, etc.). I Aplica el principio de mı́nimo privilegio. Inconvenientes: No ha sido bien recibido por ser molesto ¿El problema es la interfaz? Algo que eres Nuestro cuerpo nos puede autenticar (biometrı́a): I Escaner de iris. I Escaner de retina. I Huellas dactilares. I Palma de la mano. I Reconocimiento de voz. I Reconocimiento facial. Algo que eres I I Aumenta el riesgo para la integridad fı́sica del usuario. Son más propensos a fallar: I I I Falso positivo: autenticación errónea. Falso negativo: aumenta la obstrucción. ¿Cómo se revoca una huella dactilar o una cara? Algo que tienes I Tu SmartPhone: Google Authenticator. I SecureID I Smart Cards I RFID / NFC I USB tokens I Fortezza I ... Algo que tienes Los dispositivos de autenticación: I Pueden disminuir la obstrucción, como NFC. I Pueden aumentar la obstrucción, como SecureID. I Hay que fiarse del HW lector: igual que con las contraseñas, puede existir spoofing. I Nuevo riesgo: puedes perder el objeto, o te lo pueden robar. I Si lo piensas, corremos los mismos riesgos a diario con las llaves de nuestra casa o las tarjetas de crédito. DNIe Por ejemplo, el DNI electrónico (DNIe): I Se usa para cualquier tipo de tramitación telemática con el estado. I Tiene la misma validez que el DNI normal. DNIe El DNI electrónico (DNIe) es una SmartCard tamper-resistant con los siguientes ficheros dentro: I Datos de filiación del titular I Imagen digitalizada de la fotografı́a. I Imagen digitalizada de la firma manuscrita. I Plantilla de la impresión dactilar de los dedos ı́ndice de cada mano. I Certificado X.509 para autenticación, y la clave privada correspondiente. I Certificado X.509 para firma, y la clave privada correspondiente. I Certificado X.509 de la autoridad emisora. La generación de claves, el cifrado/descifrado, la firma, etc. se realiza en el chip de la tarjeta. DNIe I Se entrega junto con un PIN (sic) (es una contraseña con 8-16 caracteres): algo que tienes + algo que sabes. I Se puede cambiar la contraseña desde cualquier PC si sabemos la contraseña vieja. I Se puede reestablecer la contraseña (sin conocer el viejo) en un terminal especial (Punto de Actualización del DNIe). Es necesario proporcionar la huella dactilar (la verificación se hace en el propio chip): algo que tienes + algo que eres. Otras formas I Algo que haces: por ejemplo, gestos ante una cámara, en un touchpad, etc. I Dónde estás: el simple hecho de encontrarte en una localización fı́sica (p.ej., la sala de los servidores) te autentica. Single Sign-On I Una única autenticación para usar varios servicios distintos. I ¿Tendremos Single Sign-On para todos los servicios? Combinación de métodos de autenticación SUN’s PAM (Pluggable Authentication Modules): I Objetivos: I I I I Combinar distintos métodos de autenticación proporcionados por distintos módulos independientes. Usar distintos métodos de autenticación sin modificar el código de las aplicaciones. Modificar la autenticación sin parar el sistema. PAM está disponible para distintos sabores de Unix. Linux-PAM Seis primitivas englobadas en cuatro grupos: I Auth: tareas para autenticar al usuario. I Account: tareas de gestión de los datos de una cuenta. I Password: tareas para administrar los mecanismos de la autenticación. I Session: tareas a realizar al crear y destruir sesiones. Linux-PAM Auth: I pam authenticate: sirve para autenticar al sujeto. I pam setcred: sirve para establecer y gestionar las credenciales. Tiene que llamarse después de pam authenticate y antes de establecer la sesión. Linux-PAM Session: I pam open session: realiza las tareas asociadas con el inicio de sesión. Por ejemplo, actualizar logs de entrada, etc. I pam close session: se encarga de las tareas asociadas con el fin de sesión. Por ejemplo, actualizar logs de salida, etc. Linux-PAM Account: I pam acct mgmt: verifica si la cuenta está en buenas condiciones. Por ejemplo si la contraseña caducó, si la cuenta está cancelada, etc. Linux-PAM Password: I pam chauthtok: cambia el objeto de la autenticación (p.ej., la contraseña), posiblemente comprobando que es suficientemente bueno, etc. Linux-PAM I En /etc/pam.d/ se crean ficheros con las polı́ticas para los distintos servicios. I Un fichero de polı́ticas define una pila de reglas que determina el éxito de una operación: type control module-path module-arguments I I I I type: grupo (auth, account, password, session). control: cómo afecta al resultado de la operación. module-path: módulo. module-arguments: argumentos. Linux-PAM Control: I requisite: si la operación retorna error, se acaba la autenticación con fallo. I required: si retorna error, el flujo continua aunque el resultado final ya está decidido: será un fallo. I sufficient: si retorna éxito, termina inmediatamente la con éxito. Si retornar error, se sigue llamando al resto (y si el resto funcionan, la operación acaba con éxito). I optional se ejecuta, pero lo que retorne (éxito o fallo) no se tiene en cuenta. Linux-PAM: ejemplo Aplica un retardo, da igual lo que devuelva. Si existe el fichero /etc/nologin sólo root puede autenticarse en la máquina Comprueba que el contexto anterior se ha limpiado Se leen las variables de entorno y las variables del fichero /etc/default/locale Se aplican todas las reglas del fichero de PAM common-auth (normalmente pedir password, comprobar hash) Aplica las reglas de esos tres ficheros de PAM Imprime si el usuario tiene correo. Imprime el MOTD (Message of the day) Imprime la fecha del último login. Establece los límites del usuario según /etc/security/group.conf Aplica filtros de /etc/security/group.conf para añadir al usuario a grupos dependiendo de factores como la hora, TTY, etc. Autenticación en sistemas distribuidos Sistemas distribuidos: riesgos Los riesgos a los que se expone el sistema: I Espionaje de los mensajes que viajan por la red. No se puede detectar desde los extremos. I Eliminación, modificación, e inserción de mensajes transmitidos. Este ataque es activo, y se puede detectar. I Repetición de mensajes antiguos. También es activo. Challenge-Response I Objetivo: que las contraseñas no viajen por la red. I El servidor envı́a un reto. I El cliente responde el reto. I ¡Los retos no se deben repetir! Challenge-Response CRAM-MD5: 1. C ← S : nonce 2. C calcula r = HMACMD5(nonce, pass) 3. C → S : r,login 4. S comprueba si r = HMACMD5(nonce, pass) Challenge-Response: ejemplo de relay attack 1. M ← S : nonce 2. C ← M : nonce 3. C calcula r = HMACMD5(nonce, pass) 4. C → M : r,login 5. M → S : r,login 6. S comprueba si r = HMACMD5(nonce, pass) solución: incluir información sobre los extremos de la conexión en los mensajes (p. ej. dirección IP). Protocolo ejemplo I 1. C crea m = “soy C” 2. C crea m0 = Ek (m, S) 3. C → S : m, m0 4. S verifica si m haciendo Dk (m0 ) problema: spoofing. Protocolo ejemplo I: replay attack 1. M recupera m0 = Ek (m, S) viejo 2. M → S : m, m0 3. S verifica si m haciendo Dk (m0 ) solución: timestamps e historial de nonces Protocolo ejemplo II 1. C → S : “soy C” 2. C ← S : nonce 3. C crea m = Ek (nonce, T , C , S) 4. C → S : m 5. S verifica m: el nonce es correcto y T no es viejo. Protocolo ejemplo III Versión con algoritmo de clave pública: 1. C → S : “soy C” 2. C ← S : nonce 3. C crea m = EKCpriv (nonce, T , C , S) 4. C → S : m 5. C → S : Certc 6. S verifica el Certc con la CA 7. S verifica m: descifra con el EKCpub , verifica que el nonce es correcto y T no es viejo. Needham-Schroeder I Se basa en un servidor de autenticación (A) que comparte secretos con todos los clientes y servidores. I Las claves se centralizan en A. I Establece una clave para la sesión para proporcionar un canal confidencial entre C y S: Kcs Needham-Schroeder 1. C → A : C , S, Na 2. A crea m = EKc (Na , S, Kcs , EKs (Kcs , C ) ) 3. C ← A : m 4. C consigue Na y Kcs haciendo DKc (m) 5. C verifica Na 6. C → S : EKs (Kcs , C ) 7. S consigue Kcs haciendo DKs (EKs (Kcs , C )) 8. C ← S : EKcs (Nb ) 9. C → S : EKcs (Nb − 1) 10. S verifica DKcs (Nb − 1) == Nb − 1 Needham-Schroeder Problema: si una clave de sesión vieja Kcs queda comprometida, el atacante puede reiniciar la sesión antigua si se hace pasar por C: 1. M recupera EKs (Kcs , C ) viejo. 2. M → S : EKs (Kcs , C ) 3. S consigue Kcs haciendo DKs (EKs (Kcs , C )) 4. M ← S : EKcs (Nb ) 5. M consigue Nb . 6. M → S : EKcs (Nb − 1) 7. S verifica DKcs (Nb − 1) == Nb − 1 Solución: usar timestamps y tiempos de validez. Kerberos Está basado en Needham-Schroeder. Usa dos servicios centrales (pueden ejecutar en el mismo nodo): I KDC (Key Ditribution Center): autentica al cliente. I TGS (Ticket Granting Service): proporciona tickets para acceder a los servicios. Kerberos Fase 1 Fase 2 KDC TGS TICKET? TGT? TGT TICKET TICKET+AUTHENTICATOR AUTHENTICATOR C S Kerberos Elementos: I Ln : tiempo de vida. I Tn : timestamp. I Nn : nonce. Fase 1: Conseguir un Ticket-granting ticket (TGT): 1. C → KDC : C , TGS, L1 , N1 2. KDC genera Ticketc,tgs = EKtgs (Kc,tgs , C , T1 , L1 ) 3. C ← KDC : EKc (TGS, Kc,tgs , Ticketc,tgs , L1 , N1 ) Kerberos Fase 2: Conseguir un ticket para el servicio: 1. C genera Authenticators,tgs = EKc,tgs (C , T3 ) 2. C → TGS : C , S, L2 , N2 , Ticketc,tgs , Authenticators,tgs 3. TGS genera Ticketcs = EKs (Kcs , C , T2 , L2 ) 4. C ← TGS : EKc,tgs (S, Kcs , Ticketcs , L2 , N2 ) 5. C genera Authenticatorc = EKcs (C , T4 ) 6. C → S : Authenticatorc , Ticketcs 7. S genera Authenticators = EKcs (T4 ) 8. C ← S : Authenticators Autenticación en el WWW Comúnmente: 1. Se establece un canal TLS con el servidor. 2. El cliente se autentica con login y contraseña. 3. Se instalan cookies en el cliente. 4. El cliente presenta una cookie en posteriores peticiones de esta sesión. Autenticación en el WWW Algunos atributos de las cookies relacionados con la seguridad: I Domain: sólo se puede usar para ese dominio. I Path: sólo se puede usar para esa ruta en la URL. I Expires: fecha de caducidad. I Secure: sólo para usar con HTTPS. I HttpOnly: no accesibles para scripts. Autenticación en el WWW Riesgos comunes: I Mallory puede reemplazar las cookies si se hace pasar por el servidor . I Session hijacking : Mallory se hace con la cookie (nos roba la sesión). P. ej. cuando se mezcla HTTPS con HTTP (¡muy mala idea!) hay riesgo de enviar cookies delicadas en claro. I Session fixation: Mallory nos induce a crear una sesión con un ID determinado (por tanto, puede continuar con la sesión). P. ej. phising. Autenticación en el WWW Riesgos comunes: I Cookie poisoning : Mallory forja sus propias cookies para autenticarse como otro usuario. I Cross-site scripting (XSS): Mallory introduce scripts maliciosos en las páginas que visitas (de una tercera parte) que ejecutan como si fuesen legı́timos. I Ojo: los scripts maliciosos se pueden inyectar en páginas mal hechas, en caches intermedias, en la cache del navegador, lo puede hacer el propio navegador, etc. Autenticación en el WWW: XSS Ejemplo de script inyectado que roba la cookie para el sitio en el que estamos: <SCRIPT type="text/javascript"> var adr = ’../evil.php?cakemonster=’ + escape(document.cookie); </SCRIPT> Ejemplo de https://www.owasp.org Autenticación en el WWW: XSS Ejemplo de página vulnerable: I Código HTML: <html> <body> <? php print "Not found: " . urldecode($_SERVER["REQUEST_URI"]); ?> </body> </html> I Si pedimos esta página: I Se responde: I Si pedimos esta página: I Se responde: http://testsite.test/file_which_not_exist Not found: /file_which_not_exist http://testsite.test/<script>alert("TEST");</script> Not found: / (but with JavaScript code <script>alert("TEST");</script>) Ejemplo de https://www.owasp.org Autenticación en el WWW Open ID: I Propósito: autenticación federada para el WWW. I Idea: usas un servidor de Open ID para autenticarte ante una aplicación web de un tercero sin darle tu contraseña. I Proveedores de Open ID: Google, Facebook, Yahoo!, Microsoft, AOL, MySpace. I No confundir con OAuth. I Riesgo de spoofing : se presenta una página exactamente igual que la del proveedor de Open ID, pero que no es del proveedor. Autorización en el WWW c Justen Stepka Imagen Control de acceso Control de acceso I Acceso: un sujeto activo que intenta interactuar con un objeto pasivo realizando una operación de acceso. I El sistema permite/deniega en base a: I I I Lo que le está permitido hacer al sujeto. Lo que está permitido hacerle al objeto. Errores en el diseño o la implementación pueden permitir realizar operaciones no autorizadas. Ejemplo: side-channel de Dropbox. Operaciones de acceso Ejemplos: I Añadir I Leer I Escribir I Ejecutar I Borrar I Cambiar permisos I Cambiar dueño I Listar I Buscar/atravesar Pertenencia El control de acceso puede ser I Discrecional (Discretionary Access Control o DAC): el usuario posee objetos y autoriza al resto para acceder a ellos. I Obligatorio (Mandatory Access Control o MAC): los usuarios no gestionan el acceso a los objetos. Mandatory Access Control I I Entornos muy restrictivos (p.ej., militares). Sistemas de Seguridad Multinivel (MLS): I I I I Centrados en la confidencialidad (modelo Bell-LaPaluda): I I I Usuarios con rango. Objetos con nivel de seguridad. Compartimentos. Puedes generar documentos de tu nivel o de más alto nivel. Puedes observar documentos de tu nivel o de más bajo nivel. Centrados en la integridad (modelo BIBA): I Puedes modificar documentos de tu nivel o de más bajo nivel. Mandatory Access Control Ejemplo: Mandatory Integrity Control (MIC) en Windows 7 aplica MAC BIBA antes de aplicar el control de acceso discrecional: Cuatro niveles: I Bajo (no confiable). Los ejecutables pueden ser marcados como nivel bajo si son peligrosos (p.ej. bajados de Intenet y no firmados). Sólo pueden modificar carpetas temporales, etc. I Medio (usuario). Los usuarios normales y los objetos que no tienen etiqueta de integridad tienen este nivel. I Alto (administrativo). Los administradores tiene este nivel, la carpeta de Archivos de Programa, etc. I Sistema (control total). Los servicios del sistema tienen este nivel. IBAC IBAC: Control de acceso basado en la identidad. I Access Control Matrix: filas: usuarios, columnas: objetos. esoriano paurea nemo sdemingo list.c r,w r r - a.doc r r r,w - word.exe w,x r,w,x IBAC I Access Control List: una columna de la matriz. list.c esoriano paurea nemo sdemingo r,w r r - Caso: UNIX Permisos POSIX: I Permisos rwx para dueño, grupo, y resto. I Los grupos se especifican en /etc/groups. I chmod cambia los permisos. I chown cambia el dueño de un fichero. Sólo puede hacerlo root. Caso: UNIX Permisos POSIX: I chgrp cambia el grupo de un fichero. Lo puede hacer el dueño del fichero (tiene que pertenecer al grupo al que se cambia). I sticky bit (+t) en directorios: restringe la eliminación de entradas de directorio aunque el directorio tenga permisos de escritura para todo el mundo: sólo puede borrar/renombrar el dueño y root. P. ej. /tmp Caso: ACLs en Mac OS X Ejemplo de ACLs, Mac OS X: I Conviven con los permisos UNIX. Nota: Linux (ext3) también tiene ACL extendidas, pero no son iguales (man acl). I La ACL extendida es una lista ordenada de ACEs (Access Control Entry). I Se pueden listar las ACLs extendidas con ls -le Caso: ACLs en Mac OS X I La ACL extendida es una lista de ACE (Access Control Entry). I Una ACE se compone de: I I I ¿Quién?: usuario o grupo. Permiso: Allow o Deny. Acción de acceso sobre el objeto. I Un usuario tiene acceso a un recurso si alguna ACE Allow o los permisos UNIX se lo permiten, excepto si alguna ACE Deny se lo impide → Los Deny mandan. I Es más fácil controlar el acceso determinando los permisos de los contenedores (directorios) y que los ficheros los hereden. Caso: ACLs en Mac OS X I Acciones de acceso: delete, readattr, writeattr, writeextattr, readsecurity, writesecurity, chown. I Directorios: list, search, add file, add subdirectory, delete child. I Ficheros: read, write, append, execute. I Herencia (para directorios): file inherit, directory inherit, limit inherit, only inherit. Ejemplo: chmod +a ‘‘group:wheel deny delete,file inherit,directory inherit’’ dir1 Caso: ACLs en Windows 7 Dos tipos: I DACL (Discretionary ACL): lista de ACEs que permiten o deniegan un tipo de acceso para una cuenta o grupo. I SACL (System ACL): usada para auditar, es una lista de ACEs que indican el tipo de acción que provocará una entrada en el Security Event Log. RBAC RBAC: Control de acceso basado en roles. I Rol: colección con nombre de permisos. I Se asignan roles a los sujetos/grupos del sistema. Un usuario puede tener más de un rol. Los roles pueden ser dinámicos. I Un grupo es un conjunto de usuarios, un rol es un conjunto de permisos. I Puede haber una jerarquı́a de roles. I Es útil para implementar la separación de deberes. I Escalabilidad: los usuarios del mismo tipo suelen tener los mismos privilegios. I Cómodo: en general, los usuarios cambian más frecuentemente que los privilegios que tienen las distintas clases de usuarios. Capabilities Control de acceso basado en capablities: I El sujeto presenta un capability junto con su petición para realizar una operación de acceso. I La capability puede ser un certificado firmado, un ticket, una secuencia pseudo-aleatoria, etc. I Facilita la delegación de privilegios y la escalabilidad. I Dificulta la revocación de privilegios y la auditorı́a (quién puede hacer qué en un momento dado). Autorización en el WWW: OAuth OAuth : I Propósito: autorización para usar APIs de terceros sin dar las credenciales. I El usuario permite a un tercero acceder a ciertas operaciones del API de un servicio web, sin darle tu contraseña. I Usa timestamps, nonces y firmas digitales. I Ejemplos: Twitter, YouTube. Autorización en el WWW: OAuth c Google Imagen ABAC Control de acceso basado en atributos: I Un atributo del sujeto le autoriza a acceder a un recurso. I Por ejemplo: edad, nacionalidad, etc.