Flashcards
Módulo 7
Cards in this deck (48)
- 1¿Qué parámetros se deben considerar al diseñar mensajes de error seguros?•Information Type: que tipo de información requiere la aplicacion de parte del usuario para manejar el error.
•Information Sharing: que información se compartira con el usuario.
•Error Solving: como solicitarás que se resuelva el error. - 2¿Qué es un Error? ¿Cuáles son los tipos de errores?Son condiciones inusuales que se presentan al momento de la compilación y deben ser resueltas durante la compilación. Los tipos de error son:
•Configuration Errors
•Compilation Errors
•Parser/Sintax Errors
•Logical Errors - 3¿Qué son las Excepciones o errores de runtime? ¿Cuáles son los tipos de excepción?Son condiciones anormales que se presentan en el tiempo de ejecución del programa. Los tipos son:
•Handled Exceptions
•Unhandled Exceptions - 4¿Qué es el Exception Handling?Es el mecanismo por medio del cual se Anticipan, Detectan y Resuelven errores de programación durante la ejecución del programa.
- 5¿Por qué es necesario el correcto manejo de los errores y excepciones?•El manejo no apropiado de errores puede causar la caída de todo el sistema o su fallo durante operaciones importantes.
•Puede afectar la Confidencialidad, Integridad y Disponibilidad de datos importantes.
•Puede dar un camino al atacante para cometer un ataque. - 6¿Cuáles son los principios del manejo seguro de Excepciones?•Failing to Secure State: la aplicación se debe recuperar de inmediato a un estado seguro.
•No Critical Activities while in Unknown State: no se deben ejecutar tareas críticas cuando el sistema falla.
•No Disclosure or Tampering of Important Information: no se debe revelar información importante por medio de mensajes de error. - 7¿Cuáles son los niveles de manejo de Excepciones en ASP .NET?•Nivel de Aplicación
•Nivel de Página
•Nivel de Clase - 8¿En qué consiste el manejo de Excepciones a nivel de Clase?•Es la que se declara por medio de bloques Try, Catch y Finally en las clases.
•El bloque Finally se usa para tareas de limpieza, como cerrar archivos o limpiar buffers. - 9¿Qué ocurre cuando se dejan bloques Catch vacíos?Eso se conoce como tragar las excepciones (exception swallowing). Esto provoca que se presenten errores en la aplicación y que el usuario no se de cuenta de ello.
- 10¿Existe algún problema si al momento de levantar excepciones, siempre se use el tipo genérico Exception?Si. El. problema es que al momento de capturar esa excepción será difícil identificarla debido a que el tipo Exception es muy genérico.
Se recomienda siempre levantar tipos de excepción específicos. - 11Cuando se declaran múltiples bloques Catch para diferentes tipos de Excepción, ¿Tiene alguna relevancia el orden de los mismos?Si. Siempre se deben capturar las Excepciones mas específicas primero y por último el tipo genérico Exception.
Esto es así porque si se pone la excepción Genérica primero, nunca se ejecutará el código para las excepciones especificas. - 12¿Cuál es el mejor método para imprimir el mensaje de una Excepción en pantalla? ¿Cuáles son los métodos peligrosos?El mejor modo es imprimir el contenido de la propiedad .Message de la excepción. No se debe hacer lo siguiente:
•Imprimir el objeto Exception.ToString()
•Imprimir la propiedad Exception.StackTrace - 13¿Cuál es el mejor método para relanzar (propagar) una Excepción?Se recomienda el siguiente comando "throw;" (a secas)
Si se utiliza el comando "throw ex;", eso provoca que se limpie el stacktrace de la excepción. - 14¿Cómo se implementa el manejo de excepciones a nivel de Página?Se hace por medio de un bloque Try, Catch en el evento Page_Error.
- 15¿Cómo se implementa el manejo de excepciones a nivel de Aplicación?•Capturar el evento Application_Error en Global.asax. Se utiliza la función Server.GetLastError() para obtener el detalle de la excepción.
•Redireccionar al usuario: se hace una redirección en el evento Application_Error (la diapositiva sugiere usar Server.Transfer). - 16¿Qué aspectos se controlan con el elemento del archivo web.Config?•Se controlan excepciones no manejadas.
•Aquí se habilita una redirección automática del usuario al presentarse este tipo de excepciones.
•Es posible tener una página de redirección para cada tipo de error HTTP.
•Tiene el atributo mode el cual puede tener el valor Off | On | RemoteOnly. - 17¿Cuál es el peligro de NO configurar el elemento ?El .NET Framework va a devolver una página con una gran cantidad de información sobre la excepción, incluyendo:
•Mensaje de excepción.
•Tipo de excepción
•Linea que generó la excepción
•StackTrace - 18¿Para qué sirve el elemento ?•Se recomienda habilitarlo.
•Sirve para que el sistema levante excepciones cuando se den errores en el proceso de Garbage Collection, las cuales normalmente no son visibles. - 19LECTURA: Mejores prácticas en el manejo de EXCEPCIONES•Avoid storing sensitive information on the error message field.
•Put separate try/catch block for each thread.
•Avoid returning special values on error conditions.
•Do not use exception conditions that represent resource absence.
•Make the exception Serializable.
•Make at least three original constructors for each exception class. - 20LECTURA: Mejores prácticas en el manejo de EXCEPCIONES•Do not skip any exception to be logged into the logging system.
•Try to avoid encountering exceptions.
•Use single try and many catches.
•Arrange the catch blocks from specific to general.
•Always reach to valid state.
•Throw the closes match. - 21LECTURA: Mejores prácticas en el manejo de EXCEPCIONES•Do not throw exceptions for normal occurring events, only when out of the ordinary events occur.
•Extend the ApplicationException class.
•Use the inner exception property when re-throwing.
•Do not create lightly (use the existing exceptions).
•Name appropriately your exceptions. - 22LECTURA: Mejores prácticas en el manejo de EXCEPCIONES•Cuando una aplicación falla, toda la información sensible debe ser limpiada.
•Cuando una aplicación falla, se deben manejar las transacciones abiertas. - 23¿En qué consiste el Logging y el Auditing?•LOGGING: es el proceso de registrar el detalle de los eventos ocurridos en la aplicación.
•AUDITING: es el proceso de revisar los Logs para encontrar errores, fallos y detectar los incidentes de seguridad que han ocurrido. - 24¿Qué detalles debería incluir el log de una Aplicación?•Fechas y horas del evento
•Nombre del programa
•ID del usuario
•Detalles del evento - 25LECTURA: ¿Por qué existe la necesidad asegurar los mecanismos de Logging y Auditoría?•Las actividades críticas del usuario pueden ser rastreadas por un atacante en el Log.
•Los Logs pueden proveer información sobre la aplicación que puede ser utilizada por un atacante para realizar ataques.
•Un atacante podría inundar un log con entradas inútiles. Esto a su vez dificulta la tarea de los auditores. - 26¿Cúales son las amenazas comunes a los Logs y la Auditoría?•Denial of Service
•Log Wiping
•Log ByPass
•Log Tampering - 27¿En qué consiste una amenaza Denial of Service, cuando hablamos de Logs?Ocurre cuando un log no impone limites a su utilización de espacio en disco. Un atacante puede inundar el Log hasta llenar el disco duro, provocando que la aplicación ya no pueda funcionar.
Solución:
•Poner un limite al tamaño de los logs - 28¿En qué consiste una amenaza de Log Wiping?Es cuando un atacante los rastros de sus actividades en el Log.
Soluciones:
•Proteger los archivos de Log con ACL.
•Almacenar los Logs en un servidor aparte seguro. - 29¿En qué consiste una amenaza de Log Bypass?Es cuando un atacante causa que un Log llegue al limite de su cuota permitida de espacio en disco duro, provocando que no se registren sus actividades en el Log.
Solución:
•Se debe implementar una solución que monitoree el Log para que lo resetee apenas detecte que éste ha fallado. - 30¿En qué consiste una amenaza de Log Tampering?Ocurre cuando se registran inputs del usuario en el Log. Un usuario con los privilegios apropiados (como un administrador) puede escribir caracteres maliciosos, tags o saltos de linea para simular entradas falsas en el Log o para hacer ataques XSS.
Solución:
• Realizar validación de inputs. - 31¿Qué tipo de eventos o información se deberían registrar en el Log?•Fallos en la validación de Inputs/Outputs.
•Éxitos y fracasos de autenticación.
•Fallos de autorización.
•Fallos en el manejo de sesión.
•Errores de aplicación y eventos del sistema.
•Inicios y apagados del sistema.
•Uso de funcionalidad de alto riesgo, como conecciones de red, etc. - 32¿Qué tipos de información NO se deben registrar en el Log?•Información sensible o confidencial.
•Información sensible en texto plano o encriptado.
•Tablas completas de la base de datos o registros, ya que pueden causar que se llene el Log.
•Pedazos de código fuente. En todo caso, se puede poner una referencia al código. - 33¿Qué peculiaridades existen al guardar los Logs en el Sistema de Archivos?•Se deben guardar en una partición distinta a la de la aplicación.
•Si no se pueden guardar en otro servidor, entonces se debe restringir el acceso a los archivos por medio de ACLs. - 34¿Qué peculiaridades existen al guardar los Logs en una Base de Datos?•Se debe utilizar una base de datos distinta a la de la aplicación.
• e debe utilizar un formato estandar de sintaxis, de modo de que pueda existir interoperabilidad del log con otros sistemas.
•Estos formatos estandar incluyen Common Log File System (CLFS) o Common Event Format (CEF). - 35¿En qué consiste el concepto de Log Throttling en ASP .NET?•Se realiza con ayuda del Health Monitor System.
•Sirve para restringir la cantidad de eventos que se pueden registrar en un periodo de tiempo. Es decir, se aplica un Delay a estos registros.
•Esto sirve para evitar un ataque de Buffer Overflow. - 36¿Cómo se configura el Health Monitor en el web.config para evitar el Log Throttling?1. Se configura un proveedor de eventos con el tag y se activa la propiedad Buffer y se asigna un bufferMode.
2. El bufferMode que se designó en el paso anterior se configura con el Tag , asignandole las propiedades requeridas. - 37¿Qué características tiene el Log de Eventos de Windows?•Es un sistema centralizado ofrecido por Windows en el cual cualquier aplicación puede registrar su Log.
•Divide los eventos en tres categorias: Application, Security y System. - 38¿Cómo se pueden prevenir ataques Denial of Service en el Log de Eventos de Windows?•Designando un limite al tamaño de los logs, con la propiedad "Maximum log size".
•Esto se hace desde el Event Viewer en el panel de control:
System and Security -> Administrative Tools -> Event Viewer - 39¿De qué manera se puede evitar que un atacante se pase del Log de Windows, cuando la cuota de espacio de éste se ha llenado?El Log de Windows tiene una política de seguridad que provoca que la maquina se apague en caso que no se puedan registrar eventos de seguridad en el Log.
- 40¿Cómo se puede evitar que un Rogue Administrator (administrador malicioso) manipule el log de eventos de Windows?Se hace uso de los Audit Collection Services (ACS), los cuales se encargan de consolidar los Logs a una ubicación segura.
- 41¿En qué consiste el Tracing en .NET?•Es el proceso de llevar un seguimiento del flujo de una aplicación para evaluar su rendimiento y condiciones de error.
•Esto se hace utilizando Trace Listeners, los cuales se encargan de registrar Trace Outputs en archivos, logs o bases de datos.
•En los proyectos .NET se implementa habilitando el símbolo TRACE. - 42¿Cuáles son los tipos de Trace Listeners que existen?•DefaultTraceListener
•TextWriterTraceListener
•EventLogTraceListener - 43¿Qué riesgo de seguridad presentan los Trace Output?•Los trace output contienen message headers, los cuales pueden contener información sensible como números de tarjetas de crédito.
•Se recomienda deshabilitar el tracing o filtrar esta información sensible para que no se registre en el log. - 44LECTURA: Mejoras prácticas en cuanto a LOGGING y AUDITING•Proteja archivos de Log con ACLs.
•Guarde los archivos de log con extensiones que no sean fácilmente consultables con web requests.
•No use la extensión XML.
•Siempre use la ruta absoluta al escribir o consultar el log. - 45LECTURA: Mejoras prácticas en cuanto a LOGGING y AUDITING•No revele la ubicación del Log al usuario.
•No registre Inputs de usuario en el Log, de no ser posible entonces filtre texto o caracteres maliciosos.
•Asegure el ASP .NET Health Monitor ya que incrementa la superficie de ataque. De no necesitarlo, desactívelo.
•Always append new events to log files. - 46LECTURA: Mejoras prácticas en cuanto a LOGGING y AUDITING•No registre información sensible como nombres de usuario o contraseñas en el Log.
•Asegúrese que se registre autenticación exitosa y fallida.
•Asegúrese que se registren todos los errores de aplicación. - 47LECTURA: Mejoras prácticas en cuanto a LOGGING y AUDITING•Asegúrese que el tamaño del archivo de log sea manejable.
•Asegúrese que las excepciones siempre sean manejadas. - 48LECTURA: Herramientas de Log en .NET•Log4net •SmartInspect
•NLog •Logview4net
•Logger.NET •Logthis
•NSpring •C# Logger
•CommonData •C# Net Logger
•ObjectGuy Framework •TracerRT.NET
Information
- Description
- .NET Error Handing, Auditing and Logging
- Created by
- Selim Nazar
- Views
- 36
- Rating