supongo que un atacante dedicación y capacidad podría realizar un ataque MITM e interceptar todas las peticiones a los repositorios de Maven públicos, cuidado de inyectar malicioso bytecode en los artefactos JAR, luego recalcula y suministra los hashes SHA1.
Para el cliente, parecería un artefacto legítimo: el JAR binario y el SHA1 coinciden y serán los mismos aunque verifiquen los duplicados alternativos.
Supongo que la única solución real es solicitar que los repositorios centrales admitan HTTPS (y confíen en que TLS no se ha roto).
Alternativamente, un enfoque práctico podría ser configurar un proxy Maven (Artifactory o Nexus) servido a través de HTTPS a clientes internos. Esto reduce la superficie de ataque y significa que solo tendrá que asegurar las líneas de comunicación desde ese servidor al mundo exterior. Revisaría periódicamente que los JAR y los hash del proxy coincidan con los de las réplicas públicas mediante una red totalmente independiente y confiable.
Si realmente, realmente quiere estar segura que no sería confiando binarias de lugar, estaría descargando toda código fuente y la revisión de ellos con la mano delante de ellos la compilación de sí mismo, pero que se supone que tiene suficientes recursos calificados y tiempo para realizar las revisiones y para comenzar, confíe en toda su cadena de herramientas de construcción.
Bueno, la seguridad en las capas como siempre dicen.
He escrito una regla de plugin Enforcer para este propósito: https://github.com/gary-rowe/BitcoinjEnforcerRules –
@GaryRowe Parece que su complemento evita las descargas posteriores que no coinciden con las sumas de comprobación registradas por horneando las sumas de comprobación en la compilación (que reduce la superficie de ataque, lo cual es bueno), pero esto no parece proteger en el momento en que se crea la compilación por primera vez y la lista de suma de comprobación se escribe (o se genera). Básicamente, evitas que la construcción se envenene * a otra persona * ¿verdad? ¿Es eso una comprensión correcta de tu complemento? – Gus