¿Un certificado de firma de código válido significa que un instalador no ha sido manipulado en tránsito?

3

Varios proveedores de software dominantes distribuyen actualizaciones a través de HTTP o sobre HTTPS con certificados incorrectos . En general, no parece que pueda confiar en un canal seguro para garantizar que un instalador no sea manipulado en tránsito.

Parece que todos los instaladores tienen firmas válidas. Esta es una pantalla típica cuando verifico las propiedades de un archivo de instalación:

Laparteoperativadelcuadrodediálogoes"Esta firma digital está bien". Lo que no está claro es a qué parte del archivo atestigua la firma. Es de esperar que esto sea todo del archivo, pero no he encontrado una declaración de Microsoft que lo confirme. También recuerdo vagamente un tweet que dice que solo una parte de un archivo está atestiguada por una firma de código.

  1. ¿Qué partes de un archivo se comprueban con Windows cuando se comprueba si la firma de un código es "OK"?

  2. ¿Se conocen ataques de terceros que utilizan instaladores firmados correctamente de una segunda parte confiable como un vector?

pregunta alx9r 11.02.2015 - 16:33
fuente

2 respuestas

4

La firma es un hash de la parte del ejecutable antes del bloque de firma de código. La mejor práctica es tener el instalador y la aplicación firmados.

Puede estudiar algunos detalles mirando esto:
enlace

EDITAR: OK, ahora que estoy fuera del dispositivo móvil y en un teclado real, puedo explicarlo.

Como se indica en el documento al que lo he remitido, el hash que se firma se genera en relación con el archivo ejecutable completo, excepto por dos partes excluidas (a) la suma de comprobación total del archivo; y (b) las tablas de certificados. Estos no pueden incorporarse al hashing debido al problema del huevo o la gallina (por ejemplo, estos campos dependen del contenido de la tabla de certificado de atributo y, por lo tanto, sus valores no son fijos hasta que se preparan y anexan los certificados / firmas).

En cuanto a la superficie / escenarios de ataque, vemos una vez más por qué es tan importante tener buenos primitivos criptográficos, y TAMBIÉN usar las mejores prácticas. Supongo que, en teoría, un atacante podría crear una versión malintencionada de una aplicación de software y luego transferirla a un instalador e incluir algunos datos cuidadosamente calculados para generar una colisión hash con un certificado MD5 real existente del proveedor de la aplicación, adjuntando ese certificado existente / Firma al ejecutable comprometido. Si solo verificaste el instalador, podrías ser engañado. Esta es la razón por la que no se puede confiar en MD5 para este tipo de aplicaciones. También es la razón por la que, además de verificar el instalador, debe verificar el programa de aplicación en sí.

Windows 7 aceptó los hashes MD5 para la firma de código, mientras que Windows 8 y versiones posteriores requieren SHA1 o superior. (Para lo que vale la pena, busqué en los archivos de mi programa y en los antiguos instaladores ahora mismo y solo encontré uno de 2008 o algo así que usaba MD5 para el hash de la firma. Segunda edición: Retiro eso, también encontré una versión relativamente reciente de Winzip utilizando MD5).

    
respondido por el boggart 11.02.2015 - 17:43
fuente
0

Hay una diferencia entre la firma del certificado y la firma realizada con el certificado.

El primero, que es válido, significa que la Autoridad de Certificación dice que el certificado que tiene es un certificado legítimo que ellos han controlado, y la integridad de la firma de la AC le permite verificar que el certificado no haya sido manipulado. Por lo tanto, si confía en la CA, puede confiar en el certificado del sitio.

Este último se utiliza para iniciar las transacciones TLS e intercambiar una clave compartida para el cifrado simétrico de la sesión actual. Si el protocolo de enlace se puede completar, significa que el sitio con el que se está comunicando posee una copia de la clave privada relacionada con el certificado. Pero, si hay una falta de coincidencia entre el nombre de dominio en el certificado y la dirección a la que se está conectando, podría significar:

  • que el sitio web es una filial del propietario del certificado, y no se molestó en tener un certificado para el nuevo dominio
  • que el sitio web robó la clave privada del propietario legítimo

En conclusión, tal discrepancia debería llevar al rechazo de la comunicación, ya que no tiene medios para asegurar con quién está hablando.

    
respondido por el M'vy 11.02.2015 - 16:48
fuente

Lea otras preguntas en las etiquetas