¿Cómo extraer de forma segura un zip cargado?

6

Estoy trabajando en un proyecto para un cliente en el que les gustaría que sus usuarios carguen un archivo ZIP que se pueda extraer. Una vez extraídos, utilizaremos ciertos archivos allí, como imágenes y archivos HTML.

Está claro que esto es un gran riesgo para la seguridad, ya que no puede verificar el contenido del archivo de forma segura. Actualmente, el proyecto es solo para usuarios internos, pero les gustaría abrirlo a usuarios externos más adelante.

El proyecto se está construyendo actualmente con Laravel, y no hay bibliotecas que posiblemente puedan ayudar allí. Así que me imagino que esto probablemente será más una pregunta con respecto al servidor en sí. Pero, ¿qué medidas podríamos tomar para prevenir virus y ataques en estas cremalleras?

    
pregunta Jarrod 24.11.2016 - 14:38
fuente

4 respuestas

5

Tal vez pueda encontrar bibliotecas que podrían ayudar a detectar archivos dañinos. Pero me temo que tendrá que elegir entre ser estricto y tener un falso positivo, o perder el riesgo de dejar pasar el malware ocasionalmente.

Mi consejo aquí sería confiar en trazabilidad . Usted controla (tanto como sea posible) los archivos cargados, pero para cada uno mantiene el nombre o la identificación del usuario que lo subió. Y se anuncian en gran medida en eso. Si más tarde ocurre un problema, podrá identificar quién es el culpable. Por supuesto, solo tiene sentido si conoces a todos tus usuarios. Pero no puedo imaginar una manera de asegurar un sitio que acepte contenido dinámico para usuarios no controlados ...

    
respondido por el Serge Ballesta 24.11.2016 - 15:18
fuente
3

Hay un puñado de "servicios de descompresión" donde envías el archivo y recuperas el contenido. Siempre que la confidencialidad de los datos no sea crítica, esto eliminaría gran parte de su riesgo. Solo búscalos.

    
respondido por el Josh Bressers 24.11.2016 - 17:36
fuente
1

Supongo que falta una respuesta correcta. Entonces, la mejor manera en que podría pensar es en lo siguiente:

  1. Crea un host de bastión para cargar archivos. Y manténgalo aislado del servidor. Esto le ayudará a proteger su sitio de DOS e incluso si se produce un DOS, sería solo para un tipo particular de servicio.
  2. Limite el tamaño de la carga y cree Captcha , para que las personas no carguen archivos enormes en el host.
  3. Ejecute unzip-services y use detección basada en firmas y detección de comportamiento heurístico , intente verificar todos los archivos en busca de anomalías (posiblemente ADS), troyanos , rootkits, etc ...
  4. Siempre asigne un número de ID a las cremalleras para que se pueda rastrear al usuario que lo subió. Esto te ayudará a enfrentar a la persona que subió la amenaza maliciosa.

La mitigación completa no es posible en este caso, pero la solución permitirá reducir la amenaza a un nivel sustancial.

    
respondido por el M.S.P 25.11.2016 - 04:58
fuente
1

Los archivos zip en sí mismos no son malos. Solo su contenido es y solo si se ejecuta.

El acto de descomprimir un archivo zip es solo peligroso si su implementación del algoritmo de descompresión tiene una vulnerabilidad (por ejemplo, a un zip bomba ). Incluso cuando hay ejecutables dañinos allí, estos solo son peligrosos cuando se ejecutan como un programa.

Por lo tanto, no existe una preocupación de seguridad razonable al desempaquetar los archivos zip, tome huellas digitales de los tipos de archivos (no confíe en las extensiones) y mantenga solo los tipos de archivos en la lista blanca. Como medida de seguridad adicional, también puede analizar los archivos en busca de virus. Pero cuando no se guardan binarios desempaquetados, es probable que esto sea innecesario.

Tenga en cuenta que incrustar HTML de terceros en un sitio web es peligroso, ya que abre el sitio a las inyecciones de XSS. Solo es razonablemente seguro si los usuarios no pueden ver el HTML subido por otros usuarios.

    
respondido por el Philipp 25.11.2016 - 10:17
fuente

Lea otras preguntas en las etiquetas