Comment puis-je vérifier qu'un gros paquet dans un dépôt git est sûr?

9

Je regarde spécifiquement la barre emacs , qui a les propriétés suivantes:

  • il a des milliers de commits
  • il est largement maintenu par un utilisateur
  • le mainteneur n'a pas d'autres profils (réseaux sociaux, etc.) que j'ai pu trouver sur quelques recherches
  • il est activement maintenu (aujourd'hui)

Comme je suis sur le point d'installer du code arbitraire sur mon ordinateur pour l'utiliser dans mon éditeur de texte, je voulais vérifier si cela a subi un processus de révision. Je voudrais dire "eh bien c'est open source" mais je suis vraiment loin de la capacité évidente d'auditer tout le code moi-même. J'aimerais supposer que d'autres membres de la communauté l'ont examiné, mais l'un est probablement faux, et deux il y a des commits à la minute près. Y a-t-il d'autres stratégies qui me manquent?

Pour mémoire, le vecteur est simple: "l'open source" n'a pas beaucoup d'importance si le contributeur travaille sous un compte jetable, ou s'il n'y a pas de processus de révision.

Djechlin
la source
6
" Vérifier " est un grand mot. Au sens habituel du terme, je pense que la réponse est: "Vous ne le faites pas (vous ne pouvez pas)". Vous pouvez suivre l'activité de développement d'une bibliothèque, et vous pouvez vérifier les signatures numériques et autres, mais il n'y a rien de sûr et de certain, je crois.
Drew
3
Bonne question. FWIW, le code fourni avec Emacs est examiné (via la liste de diffusion emacs-diffs), mais si un contributeur ajoutait une faille de sécurité, je suis sûr qu'il pourrait le faire sans être remarqué. Bien sûr, je serais surpris s'il n'y avait pas déjà beaucoup de failles de sécurité accidentelles dans Emacs, donc je ne suis pas sûr de l'ampleur du problème. Je pense donc que pour pouvoir obtenir une réponse plus rassurante, il faut se concentrer sur des menaces simples et spécifiques (par exemple, il devrait être assez facile de vérifier si le code effectue une sorte de surveillance non cachée).
Stefan
2
Le mainteneur est actif sur emacs devel depuis de nombreuses années, ce qui peut être vérifié par une recherche, c'est donc une assurance: lists.gnu.org/archive/cgi-bin/…
Tom
1
@Stefan, je ne pensais qu'à une vérification ponctuelle. De mon point de vue, mapatomspourrait être mis dans le groupe "dangereux" avec start-process, evalet funcall. Bien sûr, il y aurait des faux positifs, mais si le package n'utilise aucune de ces fonctions, il peut être marqué comme inoffensif avec une grande certitude.
abo-abo
1
Vous devez ajouter le nouveau make-process, ainsi que call-process, dbus-<foo>, make-network-streamet puis vc-do-command, vc-git-command.... Et si vous mettez evalet funcalldans la catégorie « dangereux », alors la plupart / tous les paquets sont dangereux.
Stefan

Réponses:

7

La réponse courte est que si vous ne lisez pas vous-même le code, vous prenez beaucoup confiance. Cela dit, faire confiance à un projet provenant d'un SCM en amont est un peu plus sûr qu'un projet tiré directement du Wiki Emacs par exemple. Cependant, fondamentalement, vous faites confiance à l'auteur du paquet pour ne pas tourner le dos et abuser de la possibilité d'exécuter du code arbitraire sous votre session Emacs.

Certaines choses peuvent vous rassurer:

  • Tenez-vous aux forfaits populaires

Bien que les packages populaires ne soient pas automatiquement examinés davantage, le fait qu'ils aient plus d'utilisateurs signifie que les chances de détection d'un comportement malveillant avant qu'il ne vous affecte augmentent.

  • Regardez les métriques de code

Sur github, vous pouvez obtenir une assez bonne vue de l'historique des contributions des projets. Même si l'auteur principal fait la plupart des commits, avoir un large éventail d'auteurs montre qu'il y a d'autres personnes qui s'intéressent activement à la stabilité et à l'efficacité du code.

  • Préférer GNU ELPA et MELPA Stable aux référentiels de suivi des HEAD (MELPA) ou autoriser les soumissions non vérifiées (Marmalade)

Bien que vivre à la pointe de la technologie ait un certain attrait pour ceux qui veulent les dernières fonctionnalités brillantes, cela signifie que vous pourriez être le premier à accepter le dernier commit dans votre environnement. Même s'il n'est pas malveillant, vous pouvez très bien obtenir un paquet dans un état de flux tandis qu'une version "officielle" aura au moins une sorte de révision superficielle. Par exemple, les paquets GNU ELPA ne seront validés que par les utilisateurs emacs-devel disposant de droits de validation.

En fin de compte, je suis sûr qu'il y aura à un moment donné une faille de sécurité via le système de package, même si ce n'est qu'une expérience de preuve de concept. Ce sera le point sur lequel vous devrez peut-être compter sur vos sauvegardes régulières.

stsquad
la source
1
La marmelade est une archive médiocre quand il s'agit de «confiance». Il permet à quiconque de télécharger des packages sous n'importe quel nom, sans vérification ni examen. Et ce n'est pas exactement bien entretenu (il suffit de regarder le nombre de problèmes en suspens).
lunaryorn
@lunaryorn: bon point, je vais modifier la réponse.
stsquad
@lunaryorn MELPA a encore plus de problèmes ouverts que le référentiel elmarmalade, donc je doute que ce soit une métrique utilisable.
wasamasa
@stsquad La seule chose que MELPA Stable vous donne, ce sont des versions balisées de choses qui se seraient retrouvées dans MELPA de toute façon, donc je ne vois pas comment c'est plus sûr que d'utiliser Marmalade.
wasamasa
1
@wasamasa Désolé, mon commentaire a été mal formulé. Le nombre ne dit pas grand-chose, bien sûr, mais les problèmes ouverts sont éloquents: il n'y a aucune réaction sur les nouveaux problèmes, aucun commentaire, pas même des étiquettes ou des affectations. La marmelade est effectivement morte.
lunaryorn