Actualización automática ejecutable del cliente

3

Escenario

Actualmente estoy desarrollando una aplicación que debería actualizarse automáticamente (si corresponde) cada vez que se ejecuta. La actualización implicaría reemplazar el main.exe y cualquier activo en una carpeta de activos .

Mi lógica de diseño actual para 'MyApplication' es:


Mi pregunta se refiere a la subrutina update.exe , a saber,

Problema
Mi preocupación es que el proceso puede reducirse a buscar un ejecutable de una URL. Soy un poco cauteloso con la seguridad de esto, ya que a) todas las actualizaciones se distribuyen a todos los clientes b) la descarga es un ejecutable y actualmente se "supone" que no está controlada.

Si mi sitio web fuera hackeado, cualquier archivo ejecutable podría ser apuntado y descargado, causando un daño incalculable a todos los clientes. No me preocupa tanto la autenticación de los clientes, sino la autenticación de la respuesta del servidor como auténtica.

Solutions

  • ¿Es esto una preocupación, como creo que es?
  • ¿Qué medidas de cliente y / o servidor debo implementar?

Si es relevante, tengo acceso a 2 (o más) servidores web, bases de datos MySQL backend y control total sobre el contenido del lado del cliente y del servidor.


¡Gracias por cualquier ayuda, puedo aclarar aspectos si no tiene sentido!

    
pregunta Benjy1996 31.01.2016 - 13:07
fuente

1 respuesta

3

Básicamente, tiene dos problemas en su proceso: proporcionar la actualización y tenerla instalada.

Autenticación del servidor

En primer lugar, sí, necesita autenticar el servidor. Esto significa que la comunicación con el servidor debe realizarse en un canal cifrado seguro. Asegúrese de tomarse el tiempo para comprender los ataques en SSL para que no use algo que haya caducado . Envíe el certificado con su aplicación y cifre todos los intercambios. Envíe una clave pública adicional para verificar las firmas, diferente de la utilizada para asegurar el canal.

Actualizar arquitectura de distribución

En segundo lugar, debe asegurarse de que los clientes puedan confiar en lo que se les brinda. Suponiendo lo peor, su servidor podría verse comprometido. Puedes tomar dos pasos para mitigar esto. En primer lugar, asegúrese de que el servidor utilizado para las actualizaciones esté dedicado. No ejecute su API en un servidor web que hospeda su blog personal. Ejecute solo la API de actualización y piense detenidamente sobre cómo mantener este servidor y cómo conectarse a él. Mantenlo actualizado. Haga que un probador de penetración lo rompa por usted.

En segundo lugar, (gracias a @ Steffen-Ullrich por recordarme esto) asegúrese de que el servidor solo distribuya el contenido que haya validado. Cuando publique una versión de software, debe firmar su tarball / binario de liberación con una clave privada (aquella para la cual envió la clave pública) y liberar la firma junto con el tarball. Por lo tanto, su proceso implica cargar la firma y el binario en el servidor de actualización y luego los clientes lo recuperan del servidor. Si su servidor está comprometido, los clientes ya no recibirán actualizaciones, pero al menos no recibirán ejecutables falsos / maliciosos.

Reemplazando el binario en el sistema operativo

Sorpresa sorpresa. Esto es 2016, no solo reemplaza los ejecutables de todo el sistema en un sistema operativo sin el permiso del usuario. Tendrá que conducir a sus usuarios a través de un diálogo de permiso UAC cada vez que desee cambiar el binario . Esto, por supuesto, va a ser molesto para ellos.

Si espera que sus clientes necesiten absolutamente la última actualización cada vez que se lance (y suponiendo que no puede hacer que su aplicación se instale con un nivel de integridad como lo hacen los proveedores de navegadores), podría ser más transparente y agradable para sus usuarios. para actualizar su aplicación a través de la tienda de aplicaciones de Microsoft (diciendo "podría" ya que nunca he enviado una aplicación allí y no estoy seguro de ese punto).

    
respondido por el Steve DL 31.01.2016 - 13:26
fuente

Lea otras preguntas en las etiquetas