Escenario
Tienes un iniciador para algún software, te permite ejecutar el software, pero también te permitirá cambiar de versión y actualizar a versiones más nuevas.
Cuando se ejecuta el iniciador, descarga un archivo de manifiesto desde una URL específica (integrada en el iniciador) para obtener la lista actual de versiones. Si hay una versión más reciente, el usuario recibe una notificación y puede actualizarla. Si deciden actualizar a la nueva versión, extraerá otro manifiesto del mismo host que antes, este es el manifiesto para la versión específica.
Este archivo contiene una lista de nombres de archivos contenidos en esta versión y sus respectivos hashes SHA1. Luego, el parcheador se conectará nuevamente al mismo host para descargar los archivos cuyos hashes no coincidan con las copias locales.
En este ejemplo, todos los archivos de manifiesto y los objetos de archivo para cada versión se almacenan dentro de un único contenedor S3. Todas las solicitudes se realizan a través de HTTPS para archivos comprimidos.
¿Defectos?
Siento que esto estaría abierto a ataques debido a la descarga semiautomática de ejecutables. No sé dónde podría entrar un atacante. ¿Deben firmarse todos los archivos en el servidor remoto? ¿O será suficiente verificar el contenido del archivo con los hashes SHA1 proporcionados por el servidor?
¿Hay algo que pueda hacer para mantener esto a salvo, o debería evitarse este tipo de técnica por completo?