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

Flashcards

Módulo 8 - .NET Secure File Handling

Selim Nazar Programacion Segura English 34 cards

Cards in this deck (34)

  1. 1¿A que se le llama "archivo", en el ambiente .NET?Es un recurso no manejado en una aplicación, el cual no es manejado por el Common Language Runtime (CLR).
  2. 2¿Qué clases ofrece el namespace System.IO?•File
    •Path
    •Directory
    •DriveInfo
  3. 3¿En qué consiste un Path Traversal Attack?•Es cuando un atacante obtiene acceso a archivos restringidos de una aplicación por medio de su URL.
    •Esto lo consigue al probar diferentes combinaciones de las secuencias pleca-punto-punto "/..".
  4. 4Lectura: ¿Qué diferencia existe entre un Path Traversal Attack aplicado a una aplicacion alojada en un Host Windows vs un Host Linux?•En un sistema Windows, el atacante solo puede alcanzar el root de la partición donde está el sitio web.
    •En un sistema Linux, el atacante puede alcanzar todo el disco duro del servidor.
  5. 5¿Qué hace la función Server.MapPath()?Mapea una ruta virtual o relativa a su ruta física en el disco duro. Ejemplo:
    Server.MapPath("default.aspx")
    =
    C:\Inetpub\wwwroot\MiSItio\default.aspx.
  6. 6¿Cuál es la diferencia entre Server.MapPath() y Request.MapPath()?•Server.MapPath no permite salirse de la carpeta virtual del sitio web (conocida como Virtual Path). Es decir, incluso usando caracteres como /../.. no se puede alcanzar archivos fuera de C:\Inetpub\wwwroot\MiSitio.
    •Request.MapPath si lo permite.
  7. 7Lectura: El modo seguro de buscar archivos, cuando el nombre del mismo se saca de un input del usuario, es limitando la búsqueda de archivos a una carpeta en específico.//Se extrae el nombre del archivo
    string fileName = Path.GetFileName (Request.QueryString["filename"]);
    //Se busca el archivo en "Documentos"
    FileInfo file = new FileInfo(Server.MapPath( Path.Combine("Documentos", fileName)
  8. 8Lectura: Métodos para prevenir un Path Traversal Attack1. Solo procesar URI requests que no contengan File Requests.
    2. Siempre usar rutas absolutas al buscar archivos.
    3. Si se está solicitando archivos, solo devolverlos cuando el path indicado por el user input sea igual al path de nuestra carpeta designada para documentos.
  9. 9¿Qué es Canonicalization?Es el proceso de representar un archivo en su formato de nombre único estándar (NOMBRE CANÓNICO) por medio de diferentes formatos de archivo.
    Por ejemplo:
    a) c:\dir\canon.dat ; b) canon,dat
    c) ..\..\canon.dat
    Estas tres rutas se refieren al mismo archivo c:\dir\canon.dat
  10. 10¿Cuándo ocurre un Canonicalization Attack?• Ocurre cuando alguien ingresa un nombre de archivo, solicita, escribe o elimina un archivo al cual no tiene acceso permitido.
    • Es decir, tratar alcanzar archivos a los cuales no se tiene acceso y sobre-escribirlos o borrarlos.
  11. 11Lectura: ¿Qué CONTROLES ADMINISTRATIVOS existen para proteger un archivo de Canonizalization Attacks?• El web server debe soportar NTFS.
    • No almacene información sensible (codigo fuente, archivos importantes) en el web server.
    • Utilice las ACL para proteger los archivos.
  12. 12Lectura: ¿Qué CONTROLES ADMINISTRATIVOS existen para proteger un archivo de Canonizalization Attacks?•Asigne en el registro el valor 1 al DWORD NtfsDisable8dot3NameCreation
    Esto se hace para deshabilitar el soporte de nombres de archivos tipo MS-DOS (8.3 letras)
  13. 13Lectura: ¿Qué CONTROLES DE PROGRAMACIÓN existen para proteger un archivo de Canonizalization Attacks?•Solo busque archivos en carpetas seguras. No intente filtrar las carpetas que considere inseguras (utilice una lógica de white list).
    •Revise el código fuente de su aplicación, para saber si en algún momento buscar archivos en base a inputs de usuarios.
  14. 14Lectura: ¿Qué CONTROLES DE PROGRAMACIÓN existen para proteger un archivo de Canonizalization Attacks?•Asegúrese que su aplicación valide que las URLs sean absolutas. Ejemplo:
    Uri siteUri = new Uri("http://www.juggyboy.com")
    if (siteUri.IsAbsoluteUri()) {
    //La URL es válida
    }
  15. 15Para evitar Canonicalization Attacks: ¿Hay algún modo de evitar que el método Request.MapPath() puede mapear un archivo fuera de la carpeta del sitio web (Virtual path)?Si. La función Request.MapPath tiene una sobrecarga con la cual se indica si se va a permitir mapear archivos fuera del Virtual Path. Es la siguiente:
    Request.MapPath( virtualPath,
    baseVirtualDir, allowCrossAppMapping)
    Debe estar en FALSE
  16. 16Para evitar Canonicalization Attacks: ¿Por qué es mejor utilizar Server.MapPath en lugar de usar una función como Request.PhysicalApplicationPath para definir la ruta de un archivo?Porque Server.MapPath mantiene los archivos dentro del directorio de la aplicación.
  17. 17Lectura: ¿Qué CONTROLES DE PROGRAMACIÓN existen para proteger un archivo de Canonizalization Attacks?En el evento Application_BeginRequest del archivo global.asax se puede poner código para verificar que los request no incluyan solicitudes a archivos inseguros.
  18. 18Lectura: ¿De qué manera se pueden asegurar los archivos estáticos?•Ponga los archivos importantes en App_Data la cuál es una carpeta que no puede ser navegada por los usuarios.
    •Si tuviese acceso a los directorios fuere del web server, ubique los archivos alli.
    •Siempre use la ruta absoluta para ubicar los archivos.
  19. 19Lectura: ¿De qué manera se pueden asegurar los archivos estáticos por medio de configuración en el web.config?•Cree una carpeta para almacenar los archivos que deben ser protegidos.
    •Utilice el item Authorization, con el cual se puede negar o permitir el acceso a usuarios, roles, usuarios anónimos, etc. a una ruta particular.
  20. 20¿Qué nivel confianza se requiere para acceder archivos estáticos únicamente dentro del Virtual Path del sitio?Medium Trust
  21. 21¿Qué medidas de seguridad existen para subir archivos?1. Real Security: utilizar la clase HttpPostedFile/HttpHandler (mencionan las dos).
    2. Obfuscation: dejar el código ilegible en caso de una ingenieria inversa.
  22. 22Diga qué función se puede utilizar para: 1) Obtener el nombre del archivo. 2) Obtener la extensión del archivo. 3) Obtener los archivos de un directorio.1) Path.GetFileName
    2) Path.GetExtension
    3) DirectoryInfo(path).GetFiles("*.ext")
  23. 23¿De qué manera nos puede servir saber la extensión del archivo, para acceder de forma segura a archivos?Puede servir para procesar únicamente aquellos archivos que tengan una extensión en específico.
  24. 24Lectura: Apuntes sobre el Isolated Storage•La ubicación física del Isolated Storage depende del sistema operativo.
    •No almacene secretos de alto valor ya que el Isolated Storage no está protegido de código Highly Trusted, código no manejado o trusted users.
  25. 25¿Qué es una Access Control List (ACL)?Es una tabla que contiene Access Control Entries, los cuales indican los derechos de los usuarios sobre carpetas o directorios
  26. 26¿Cuál nameSpace se utiliza para consultar las ACLs?System.Security.AccessControl
  27. 27¿En qué carpeta se ubican los archivos compilados dinámicamente por el CRL?%SystemRoot%\ Microsoft.Net\ Framework\ VersionNumber\ Temporary ASP.Net Files
  28. 28Lectura: Apuntes de seguridad para acceder a archivos de forma segura•Avoid untrusted inputs for file names.
    •Use Path.GetFileName() to extract filename from any path, to safely remove all directory information.
    •Use CAS Demands to ensure that the application has the permissions to access the file system.
    •Try to use absolute file path.
  29. 29¿Cuál es el namespace de .NET que permite manejar archivos y dataStreams, y también provee soporte básico a archivos y directorios?System.IO
  30. 30¿Qué tipo de ataque utiliza un resource injection code attack en todas las URLs disponibles?Path Traversal Attack
  31. 31¿Qué tipo de ataque permite sobreescribir un archivo ejecutable con un archivo malicioso que contenga un virus o un troyano?Canonicalization Attack
  32. 32Al crear o escribir archivos, ¿Qué es mejor: utilizar rutas absolutas o utilizar rutas relativas?Siempre es mejor utilizar rutas absolutas. Estas se pueden definir con la función Path.GetFullPath.
  33. 33¿Qué representa la tilde (~) en ASP .NET?Representa el root de la ruta virtual del sitio.
  34. 34¿Qué clase se utiliza ASP para acceder a archivos almacenados en el host server?FileSystemObject
    Permite acceder a archivos, permite obtener información a file types, stored drives y file paths.

Information

Description
.NET Secure File Handling
Created by
Selim Nazar
Views
24
Rating

Feedback

What is it about?

What do you think of the new look?

How do you like it?