GoConqr has a new look! Let us know what you think.

Flashcards

Módulo 2

Selim Nazar Programacion Segura English 49 cards

Módulo 2

Cards in this deck (49)

  1. 1¿En qué consiste la seguridad basada en roles?La seguridad basada en roles provee permisos en base al rol del usuario. Es utilizada cuando se debe restringir el acceso a los recursos.
  2. 2¿Cuáles son los tres tipos de objetos Principal?1. Windows Principal
    2. Generic Principals
    3. Custom Principals
  3. 3¿Qué objetos utiliza el framework .NET para autenticar usuarios?1. Identity
    2. Principal
  4. 4¿En qué consiste el objeto WindowsPrincipal?Es la representacion de un usuario de Windows y sus roles
  5. 5¿Cómo se puede acceder al objeto WindowsPrincipal?¿Cómo se puede acceder al objeto WindowsPrincipal?
  6. 6¿En qué consiste el objeto GenericPrincipal?Se utiliza cuando se debe crear un Principal que no este relacionado con un usuario de Windows. Al crearlo se le debe indicar un nombre de usuario y los roles del mismo.
  7. 7¿En qué consiste el Code Access Security (CAS)?Es un mecanismo de seguridad por medio del cual se restringen los privilegios de los ensamblados.
  8. 8¿Qué propósitos tiene el uso del Code Access Security?1. Proteger el codigo de uso malicioso.
    2. Permitir ejecutar el código en una ubicacion desconocida con proteccion.
    3. Forzar niveles de confianza.
  9. 9¿En qué trust level se ejecutan las aplicaciones ASP .NET por default?En Full trust mode.
  10. 10¿Qué es la Evidencia?Es la información que se obtiene sobre el ensamblado en base a la política de seguridad. Se utiliza en el modelo de seguridad basado en evidencia para otorgar privilegios al ensamblado.
  11. 11¿De qué información esta compuesta la evidencia?1. Strong Name
    2. Digital Signature (developer)
    3. URL
    4. Site
    5. Zone
  12. 12¿Cuáles son los tipos de permiso?1. Code Access Permissions
    2. Identity Permissions
    3. Role Based Permissions
  13. 13¿Quiénes recolectan Evidencia, en la seguridad basada en Evidencia?El CLR (Common Language Runtime) y el host del dominio de aplicación.
  14. 14¿Qué son los Code Access Permissions?Estos permisos son utilizados para restringir el acceso de un ENSAMBLADO a recursos y operaciones del sistema. Son aplicados a código manejado (Managed Code).
  15. 15¿Qué derechos tienen los Code Access Permissions?Tienen permiso para acceder a:
    1. Recursos protegidos (archivos)
    2. Operaciones protegidas (como código no manejado)
  16. 16¿Qué son los Identity Permissions?Son permisos que son concedidos a un ENSAMBLADO en base a información obtenida de su identidad (evidencia).
  17. 17¿Qué son los Role-based Permissions?Son permisos otorgados en base al objeto Principal, es decir en base a la identidad y roles del USUARIO
  18. 18¿En qué consiste el concepto Type Safety?Es código que ha sido escrito de modo que previene el acceso mas allá de los limites de un objeto.
    Esto se puede obtener definiendo correctamente las propiedades publicas y privadas, así como validando los limites de sus variables o arreglos.
  19. 19¿En qué consiste el permiso SkipVerification?Permite compilación JIT (Just in Time) de código que no sea Type Safe.
    Puede ser necesario en caso que se tenga que ejecutar ensamblados no manejados, pero se debe tener cuidado al otorgar el permiso.
  20. 20¿Qué es el Stack Walk?Todo código tiene demandas de permisos y el Stack Walk es el proceso que verifica que todos los callers en la pila (stack) tengan los permisos requeridos.
  21. 21Explique un ejemplo de un StackWalk• Función A en clase A demanda permisos para escribir archivos en el disco duro.
    • Funcion B en clase B ejecuta función A
    • Funcion C en clase C ejecuta función B
    Esto significa que el stack walk verificará que las clases B y C tengan los permisos demandados por clase A.
  22. 22Al otorgar, denegar o demandar permisos, ¿Qué características posee la sintaxis Imperativa?• Se coloca directamente dentro del código por medio de instancias del objeto Permission .
    • Se ejecuta al llegar a la linea de código donde se usa el objeto Permission (o sea que se puede poner dentro de bloques IF).
  23. 23Al otorgar, denegar o demandar permisos, ¿Qué características posee la sintaxis Declarativa?• Se coloca en la sección de metadata del código.
    • Se puede declarar a nivel de clase o miembros.
    • Se ejecuta al instancias la clase o al acceder al miembro.
  24. 24¿Qué es el Isolated Storage?Es un mecanismo que permite almacenar data de modo que una Aplicación A que se ejecutan en una misma maquina no pueda conocer la data de una Aplicación B.
    Importante: El Isolated Storage que el ensamblado tenga permisos otorgados por el CAS para ser accedido.
  25. 25¿Cómo funciona el Isolated Storage?Cuando un ensamblado intenta acceder a un store, el Isolated Storage lo busca (Si no existe lo crea). Cada store tiene una identidad basada en el usuario y el ensamblado.
  26. 26¿Cúales son los niveles de aislamiento del Isolated Storage?1. User and Assembly
    2. User, Assembly y Application Domain
  27. 27¿Qué limitantes tiene el Isolated storage?• No se debe usar como el medio de almacenamiento primario.
    • No se debe guardar información sensible o secreta.
    • No se debe guardar grandes cantidades de data.
    • No se recomienda cuando código manejado y no manejado deben acceder a data compartida.
  28. 28¿Qué herramientas se requieren para administrar el Isolated Storage?• Caspol.exe o Mscorcfg.msc para configurar las politicas de seguridad que requiere el ensamblado.
    • Storeadm.exe para listar, crear o eliminar stores.
  29. 29¿Qué son las Security Demands?Es un mecanismo por medio del cual podes asegurar que solo los callers directos e indirectos que posean un permiso o conjunto de permisos puedan ejecutar nuestro código.
    Este mecanismo provoca un Stack walk.
  30. 30¿Qué sucede cuando el Stack walk detecta que un caller no tiene un de los permisos requeridos por un ensamblado?Levanta una excepción del tipo SecurityException.
  31. 31¿Cuáles son los modos de sintaxis para las Security Demands?Pueden ser Declarativas o Imperativas.
  32. 32¿Qué son las Link Demands?Son demandas de permisos que solo aplican al caller inmediato de un ensamblado.
    No se ejecuta un Stack walk en este caso, ya que no se revisan todos los callers.
  33. 33¿Cémo se soluciona el siguiente problema potencial de seguridad? C -> B -> A - Código A tiene una Link Demand - Código B llama el Código A (B tiene el permiso solicitado por A) - Código C llama el Código B (pero C no requiere el permiso solicitado por A)Se añade una Link Demand al Código B, para que el Codigo C deba cumplir con la demanda de A.
  34. 34¿Qué son las Inheritance Demands?Esta demanda provoca que cualquier clase X que herede de una clase A deba poseer el permiso indicado en la clase A para poder ejecutarse.
    Si una clase Y hereda de la clase X, también deberá tener el permiso para poder ejecutarse.
  35. 35¿Qué métodos hay para sobrescribir los Security Checks?1. Assert
    2. Deny
    3. PermitOnly
  36. 36¿En qué consiste el método Assert?Cuando una clase posee un Assert sobre un permiso, cualquier caller de esa clase no requerirá poseer ese permiso para ejecutarla.
    Importante: este método se debe utilizar con cuidado.
  37. 37¿En qué consiste el método Deny?Se utiliza para denegar algún permiso en particular a un método o clase.
    Por ejemplo: La función A tiene denegado el permiso para escribir en el registro de Windows. Esto provocaría que al ejecutar alguna otra función de escriba en el registro de Windows se levante una excepción.
  38. 38¿En qué consiste el método PermitOnly?Es similar al método Deny, pero funciona como una lista blanca, en donde solo los recursos a los que se otorgan permisos pueden ser accedidos.
  39. 39¿En qué consiste el atributo SuppressUnmanagedCodeSecurityAttribute?Cuando este atributo se asigna a una clase o método, causa que cualquier caller que utilice esa clase no requiera tener permisos para ejecutar código no manejado.
    Esto sirve para que toda la cadena de callers no requieran ese permiso.
  40. 40¿Cuáles son las amenazas comunes a los ensamblados .NET?1. Privilege Elevation
    2. Code Injection
    3. Information Disclosure
    4. Tampering
  41. 41¿Qué es el Código Privilegiado?Es código que tiene acceso a recursos y operaciones privilegiadas.
  42. 42¿Por qué se recomienda que las clases se declaren como Sealed (que no permitan herencia)?Porque muchos ataques dependen de código que es derivado de clases pobremente escritas.
  43. 43¿En qué consiste el Strong Name Signing?Consiste en otorgar un Strong Name (una identidad única) a un ensamblado por medio de llaves publicas y privadas, las cuales son generados con la utilería sn.exe
    Esto protege de Spoofing y Tampering.
  44. 44¿En qué consiste la Obfuscation?Se hace por medio de un herramienta, la cual convierte el código a un formato ilegible de tal manera que no sea posible comprender su lógica interna.
  45. 45¿Cómo se protegen los ensamblados con un Publisher Certificate?Se debe obtener un certificado digital de una CA de confianza como VeriSign. Este certificado se utiliza para firmar digitalmente el código. De este modo, se puede verificar la identidad del Publisher del código y de este modo asegurar su procedencia.
  46. 46¿Qué peligros representa la serialización de objetos?Si una clase maneja data sensible y a la vez implementa la interfaz ISerializable, puede ocurrir que un atacante escriba su data en un archivo. Por eso, es posible hacer que esta clase demande el permiso necesario para serializar (SerializationFormatter).
  47. 47¿Qué vulnerabilidades existen en ensamblados Multithreaded?1. Habilitación del cache de los Security Checks. No se debe hacer cache de estos.
    2. Ejecución de métodos o constructores estáticos. Estos métodos se deben declarar como Synchronized.
    3. Declaración del método Dispose(). Este debe ser declarado como Synchronized.
  48. 48Enumere las herramientas de seguridad de .NETCaspol.exe
    Cert2spc.exe
    Certmgr.exe
    Makecert.exe
    Peverify.exe
    SecAnnotate.exe
    SignTool.exe
    Sn.exe
    Storeadm.exe
  49. 49Enumere algunas mejores practicas para la seguridad con el Framework .NET• Firme el ensamblado con Authenticode y certificados X.509.
    • Otorgue permisos para escribir al log de evento.
    • Inspeccione APIs no manejadas peligrosas.
    • Utilice CAS, certificados digitales y demandas de seguridad.
    • Aplique políticas de seguridad

Information

Description
.NET Framework Security
Created by
Selim Nazar
Views
31
Rating

Feedback

What is it about?

What do you think of the new look?

How do you like it?