tutorial que pom español dependencias comandos central agregar maven

que - maven tutorial español



¿Cómo sabemos que podemos confiar en el repositorio central de Maven? (3)

Lo siento si esta pregunta no es apropiada para StackOverflow, no es una pregunta de codificación.

Soy nuevo en Maven y tengo curiosidad por saber cómo puede haber un repositorio central de Maven que parece ser accesible de forma gratuita. Por lo que sé, es mantenido por una compañía llamada SonaType. ¿Lo están financiando? ¿Por qué? ¿Actúa como un vehículo de generación de plomo para el resto de su negocio? Creo que si entendiera sus razones sabría si o cómo y cuándo confiar en ello.


Con cualquier cosa, lea los Términos / Servicio: http://repo1.maven.org/terms.html . Si después de eso no tienes un tono cálido y borroso, entonces eres libre de no usarlo. Hay otros repositorios expertos por ahí, pero la mayoría de los que conozco en el mundo del desarrollo utilizan el repositorio central y nunca ha tenido un problema. Francamente, si no confías en ninguno de los repos, puedes lanzar tu propio repositorio (Say Artifactory).

En lo que respecta a SonaType. Son una empresa de servicios con valor agregado y la Repo Central es más o menos buena voluntad. Muchas empresas tienen este modelo de negocio. Diga cebo para un gancho.

Recomendación -> Asegúrese de tener puesto un sombrero de papel de aluminio mientras usa el Central Repo GRINS . De acuerdo. Sólo una pequeña broma allí.


Excelente pregunta, especialmente porque el uso de bibliotecas de terceros inseguros se encuentra ahora en el Top 10 de OWASP. Desafortunadamente, la mayoría de las personas confían en la confianza de Maven Central. Creo que son demasiado optimistas.

Mucha gente piensa que debido a que tiene que firmar archivos enviados a Maven, se puede confiar en el software. Desafortunadamente, lo que pasan por alto es que una firma no tiene sentido si no puede estar seguro de que la clave que firmó la biblioteca pertenece a la fuente original que la proporcionó a Maven . Este parece ser el caso de Maven.

Explicación Made Simple

Para simplificar la explicación, considere la siguiente analogía. Cuando va al aeropuerto para volar a algún lugar, debe presentar una identificación para demostrar que es quien dice ser. Para viajes locales, una licencia de conducir es suficiente. La persona que verifica su identificación tiene algunas cosas que verificar:

  • MISMA FUENTE: ¿El nombre en la licencia de conducir coincide con el nombre en el boleto? Esto evita que Osama bin Laden reserve un boleto con el nombre de Barack Obama.
  • AUTENTICIDAD DE FUENTE: La imagen en la licencia de conducir se parece a la persona que se está registrando. Esto evita que Osama bin Laden robe la licencia de conducir de Barack Obama y la use para registrarse bajo su nombre.
  • AUTENTICIDAD DEL DOCUMENTO: La licencia de conducir es auténtica. Esto evita que Osama bin Laden obtenga una licencia de conducir falsificada que tenga su foto, pero que de otra manera tenga el nombre de Barack Obama.

Ahora continúe con la misma analogía para verificar un objeto proveniente de Maven. La documentación de Maven afirma que se requieren firmas de PGP (consulte: Guía para cargar artefactos en el repositorio Central ) en las bibliotecas que se cargan allí (aunque Sonatype afirma que muchos paquetes antiguos no tienen las firmas ). Piense que la licencia de conducir es análoga a una clave y que el boleto es análogo al artefacto de Maven, y haga las mismas preguntas:

  1. MISMA FUENTE: ¿La clave que firmó la biblioteca está asociada a alguien de la misma fuente original que firmó la biblioteca?
  2. AUTENTICIDAD DE FUENTE: ¿Podemos verificar que esa clave realmente pertenece a la misma fuente original que la firmó?
  3. AUTENTICIDAD DEL DOCUMENTO: ¿La firma PGP en el artefacto (biblioteca) se revisa como una firma válida?

Para verificar la misma fuente, uno simplemente descarga la clave pública asociada con el artefacto desde un servidor de claves y verifica que proviene de una dirección de correo electrónico que está asociada con la fuente original. Por ejemplo, esto se puede hacer en el servidor de claves PGP MIT . Para obtener detalles específicos sobre cómo se hace esto, consulte Verificar dependencias mediante PGP .

El tercero de estos es en realidad el más fácil de hacer porque puede ser completamente automatizado (consulte la guía de inicio rápido de GPG, sección sobre verificación de firmas extraídas ). Esta parte no requiere intervención manual.

La segunda parte es donde está la brecha. A pesar de que la firma se retira y el servidor de claves MIT afirma que la clave está asociada con la fuente original, ¿cómo sabemos que realmente fue creada por esa fuente original y no por otra persona? De hecho, solo para fines de demostración, he creado una clave para Mickey Mouse en el servidor de claves MIT. Podría haber creado fácilmente una clave que parece estar asociada con oracle.com o spring.io o whitehouse.gov.

Entonces, ¿qué es realmente la amenaza?

En un mundo donde las personas envían correos electrónicos que contienen malware ejecutable y la NSA está rompiendo SSL, sería ingenuo pensar que estos mismos sombreros negros no están dirigidos a los repositorios de software que están agrupados en numerosas aplicaciones en todo el mundo. De hecho, hay al menos tres ejemplos serios que fueron capturados .

Entonces, para ser claro, si fuera un sombrero negro, esto es exactamente lo que haría (Para el registro: ¡¡¡No soy un sombrero negro !!!). Tomaría un paquete de código abierto que es ampliamente utilizado. Luego, colaría mi puerta trasera en el código fuente del paquete y lo construiría localmente. El siguiente paso es crear un par de claves que esté asociado a una dirección de correo electrónico de la fuente original. Subo esa clave al servidor de claves MIT (que acepta la dirección de correo electrónico sin ninguna validación) y luego firmo mi paquete malicioso. Por último, subo mi paquete malicioso junto con las firmas a Maven y ríete a medida que mi malware se adopta en productos poco a poco en todo el mundo. Afirmo que es poco probable que este ataque sea capturado en el corto plazo.

¿Qué puede hacer para confiar en el software que descarga de Maven?

Desafortunadamente, no hay una respuesta simple para esto. Cuanto más haga para confiar en el software que está utilizando, menos productivo se volverá. Debe haber compensaciones realistas que realice que equilibren la seguridad y la productividad.

Para ser breve (ya que ya he resoplado e insuflado demasiado), solo citaré dos fuentes que pueden ayudarlo a elegir mejor las bibliotecas de terceros. La primera es seguir los consejos de la Sección 5 del documento Fortify Attacking the Build , especialmente el proceso de verificación de seguridad.

La segunda recomendación es que Sonatype tiene un producto llamado CLM que puede ayudar a su empresa a analizar el software que está utilizando, incluida la información sobre los defectos conocidos y el número de organizaciones que utilizan el mismo producto.

¿Qué hay en él para Sonatype?

Además de los productos Nexus y CLM de Sonatype que pueden vender, también vale la pena leer este artículo . Sonatype está liderando el equilibrio entre la eficiencia del desarrollo de software y la confianza de las soluciones de código abierto. Aún no tienen todo resuelto (no revelarán los correos electrónicos privados que intercambié con ellos), pero van en la dirección correcta.


Los términos y condiciones de Sonatype son mencionados por Jason. El contenido contiene un enlace sobre cómo enviar contenido:

La sección de requirements es particularmente interesante. En resumen, se espera que todos los remitentes proporcionen lo siguiente:

  1. Javadoc y codigo fuente
  2. Firmar digitalmente los archivos enviados.
  3. Corregir metadatos del proyecto.
    • Identificadores GAV (Grupo, Artefacto, Versión)
    • Nombre y campos de descripción y URL del proyecto
    • Desarrolladores trabajando en el proyecto.
    • Información de licencia
    • Ubicación de los repositorios de código fuente

Esta información publica todo lo que usted y yo necesitamos saber sobre el código, cómo se creó y, lo que es más importante, quién lo construyó. El uso de GPG nos permite verificar que los desarrolladores hayan creado los binarios indicados en el archivo POM del proyecto. Además, Maven Central genera automáticamente sumas de comprobación SHA, lo que le permite verificar la integridad de los archivos descargados por su proceso de compilación.

Entonces, ¿qué saca Sonatype de esto?

  1. Es una gran herramienta de publicidad cuando se vende la edición profesional de su software de alojamiento de repositorios.
    • Una característica profesional útil es la capacidad de restringir los artefactos que pueden descargarse de Maven Central. Útil para hacer cumplir las normas o inquietudes sobre el software de terceros.
  2. Maven Central se ha convertido en el repositorio más grande del mundo de software Java de código abierto. Sonatype usa esto para ofrecer una serie de products a sus clientes corporativos.
    • Estos proporcionan informes detallados sobre las vulnerabilidades de seguridad asociadas con las bibliotecas de terceros utilizadas por el software de una empresa. Impresionantemente, estas herramientas se pueden integrar directamente en los procesos de desarrollo y desarrollo de software.
    • Sonatype también puede proporcionar informes sobre las licencias de software asociadas con las dependencias de terceros de su código. Muy importante para el cumplimiento y difícil de hacer en la práctica sin este tipo de herramientas.

Espero que esto ayude. Terminaría señalando que lo que está haciendo Sonatype no es muy diferente de otras iniciativas de empaquetado de software de código abierto. Redhat, Debian y Canonical invierten mucho esfuerzo en empaquetar software para una distribución segura con sus sistemas operativos. Maven Central es algo que quizás sea más amigable para los desarrolladores.