¿Cómo verifico que un paquete grande en un repositorio de git sea seguro?

9

Estoy mirando específicamente a emacs helm , que tiene las siguientes propiedades:

  • tiene miles de commits
  • es mantenido en gran parte por un usuario
  • el mantenedor no tiene otros perfiles (redes sociales, etc.) que pude encontrar en algunas búsquedas
  • se mantiene activamente (hoy)

Como estoy a punto de instalar un código arbitrario en mi computadora para usarlo en mi editor de texto, quería verificar si esto se ha sometido a algún proceso de revisión. Me gustaría decir "bueno, es de código abierto", pero realmente estoy lejos de la capacidad de elisp de auditar todo el código yo mismo. Me gustaría asumir que otros en la comunidad lo han revisado, pero uno que probablemente sea falso, y dos hay confirmaciones de última hora. ¿Hay otras estrategias que me faltan?

Para el registro, el vector es simple: el "código abierto" no importa tanto si el contribuyente está trabajando con una cuenta desechable o si no hay un proceso de revisión.

djechlin
fuente
66
" Verificar " es una gran palabra. En el sentido regular de la palabra, creo que la respuesta es: "No lo haces (no puedes)". Puede seguir la actividad de desarrollo de una biblioteca, y puede verificar las firmas digitales y demás, pero creo que no hay nada seguro y seguro.
Dibujó el
3
Buena pregunta. FWIW, se revisa el código que viene con Emacs (a través de la lista de correo emacs-diffs), pero si algún contribuyente agregara un agujero de seguridad, estoy seguro de que podría hacerlo sin ser notado. Por supuesto, me sorprendería si de todos modos no hay muchos agujeros de seguridad accidentales grandes en Emacs, por lo que no estoy seguro de qué tan problemático pueda ser. Así que creo que para poder obtener una respuesta más tranquilizadora, uno debe enfocarse en amenazas simples y específicas (por ejemplo, debería ser bastante fácil verificar si el código realiza algún tipo de vigilancia no oculta).
Stefan
2
El mantenedor está activo en emacs devel durante muchos años, lo que se puede verificar con una búsqueda, por lo que esto es una garantía: lists.gnu.org/archive/cgi-bin/…
Tom
1
@Stefan, estaba pensando solo en una verificación al azar. Desde mi punto de vista, mapatomspodría ser incluido en el grupo "peligroso" junto con start-process, evaly funcall. Por supuesto, habría algunos falsos positivos, pero si el paquete no usa ninguna de esas funciones, puede marcarse como inofensivo con gran certeza.
abo-abo
1
Es necesario añadir la nueva make-process, así como call-process, dbus-<foo>, make-network-stream, y luego vc-do-command, vc-git-command, .... Y si se pone evaly funcallen la categoría de "peligroso", entonces la mayoría / todos los paquetes son peligrosos.
Stefan

Respuestas:

7

La respuesta breve es que a menos que lea el código usted mismo, está confiando mucho. Dicho esto, confiar en un proyecto procedente de un SCM aguas arriba es un poco más seguro que uno que se ha extraído directamente de la Wiki de Emacs, por ejemplo. Sin embargo, fundamentalmente confía en que el autor del paquete no se volverá malvado y abusará de la capacidad de ejecutar código arbitrario en su sesión de Emacs.

Hay algunas cosas que pueden hacerte sentir más seguro:

  • Se adhieren a los paquetes populares

Si bien los paquetes populares no reciben más revisiones automáticamente, el hecho de que tengan más usuarios significa que aumentan las posibilidades de detectar comportamientos maliciosos antes de que te afecten.

  • Mira las métricas del código

En github puede obtener una vista bastante buena del historial de contribuciones de los proyectos. Incluso si el autor principal realiza la mayoría de los commits, tener una amplia gama de autores muestra que hay otras personas con un interés activo en la estabilidad y efectividad del código.

  • Prefiere GNU ELPA y MELPA Estable a repositorios que rastrean HEADs (MELPA) o permiten envíos no examinados (Mermelada)

Si bien vivir en la vanguardia tiene un cierto atractivo para aquellos que desean las últimas características brillantes, significa que podría ser el primero en aceptar la última confirmación en su entorno. Incluso si no es malicioso, es posible que obtenga un paquete en un estado de cambio, mientras que una versión "oficial" tendrá al menos algún tipo de revisión superficial. Por ejemplo, los paquetes GNU ELPA solo serán comprometidos por aquellos usuarios de emacs-devel con derechos de compromiso.

En última instancia, estoy seguro de que en algún momento habrá una violación de seguridad a través del sistema de paquetes, incluso si es solo un experimento de prueba de concepto. Ese será el punto en el que tendrá que confiar en sus copias de seguridad regulares.

stsquad
fuente
1
Mermelada es un archivo pobre cuando se trata de "confianza". Permite a cualquier persona cargar paquetes con cualquier nombre, sin verificación o revisión. Y no está exactamente bien mantenido (solo mira la cantidad de problemas abiertos).
lunaryorn
@lunaryorn: buen punto, enmendaré la respuesta.
stsquad
@lunaryorn MELPA tiene problemas aún más abiertos que el repositorio de elmarmalade, por lo que dudo que esta sea una métrica utilizable.
wasamasa
@stsquad Lo único que MELPA Stable te da es etiquetar versiones de cosas que habrían terminado en MELPA de todos modos, así que no veo cómo eso es más seguro que usar Marmalade.
wasamasa
1
@wasamasa Lo siento, mi comentario fue mal redactado. El número no dice mucho, sin duda, pero los problemas abiertos son reveladores: no hay reacción ante nuevos problemas, no hay comentarios, ni siquiera etiquetas o tareas. Mermelada está efectivamente muerta.
lunaryorn