Wie überprüfe ich, ob ein großes Paket in einem Git-Repo sicher ist?

9

Ich betrachte speziell Emacs Helm , der die folgenden Eigenschaften hat:

  • Es hat Tausende von Commits
  • Es wird größtenteils von einem Benutzer verwaltet
  • Der Betreuer hat keine anderen Profile (soziale Medien usw.), die ich bei einigen Suchanfragen finden konnte
  • es wird aktiv gepflegt (heute)

Da ich im Begriff bin, beliebigen Code auf meinem Computer zu installieren, um ihn in meinem Texteditor zu verwenden, wollte ich überprüfen, ob dies einem Überprüfungsprozess unterzogen wurde. Ich würde gerne sagen "Nun, es ist Open Source", aber ich bin wirklich weit davon entfernt, den gesamten Code selbst zu prüfen. Ich würde gerne annehmen, dass andere in der Community es überprüft haben, aber eines ist wahrscheinlich falsch, und zwei gibt es aktuelle Commits. Gibt es andere Strategien, die mir fehlen?

Für die Aufzeichnung ist der Vektor einfach: "Open Source" spielt keine große Rolle, wenn der Mitwirkende unter einem Wegwerfkonto arbeitet oder wenn es keinen Überprüfungsprozess gibt.

Djechlin
quelle
6
" Verifizieren " ist ein großes Wort. Im normalen Sinne des Wortes denke ich, dass die Antwort lautet: "Du nicht (du kannst nicht)." Sie können die Entwicklungsaktivität für eine Bibliothek verfolgen und digitale Signaturen und dergleichen überprüfen, aber ich glaube, es gibt nichts, was sicher und sicher ist.
Drew
3
Gute Frage. FWIW, der mit Emacs gelieferte Code wird überprüft (über die Emacs-diffs-Mailingliste), aber wenn ein Mitwirkender eine Sicherheitslücke hinzufügen würde, wäre er sicher in der Lage, dies zu tun, ohne bemerkt zu werden. Natürlich wäre ich überrascht, wenn es in Emacs ohnehin nicht schon viele große Sicherheitslücken gibt, daher bin ich mir nicht sicher, wie groß das Problem sein könnte. Ich denke, um eine sicherere Antwort zu erhalten, muss man sich auf bestimmte einfache Bedrohungen konzentrieren (z. B. sollte es ziemlich einfach sein, zu überprüfen, ob der Code eine Art nicht versteckte Überwachung durchführt).
Stefan
2
Der Betreuer ist seit vielen Jahren auf emacs devel aktiv, was mit einer Suche überprüft werden kann. Dies ist also eine Gewissheit: lists.gnu.org/archive/cgi-bin/…
Tom
1
@Stefan, ich dachte nur an eine Stichprobe. Aus meiner Sicht mapatomskönnte zusammen mit und in die "gefährliche" Gruppe eingeordnet start-processwerden . Natürlich würde es einige Fehlalarme geben, aber wenn das Paket keine dieser Funktionen verwendet, kann es mit großer Sicherheit als harmlos markiert werden. evalfuncall
abo-abo
1
Sie müssen die neue hinzuzufügen make-process, sowie call-process, dbus-<foo>, make-network-stream, und dann vc-do-command, vc-git-command.... Und wenn Sie setzen evalund funcalldie „gefährliche“ Kategorie in, dann die meisten / alle Pakete gefährlich sind.
Stefan

Antworten:

7

Die kurze Antwort lautet: Wenn Sie den Code nicht selbst durchlesen, vertrauen Sie sehr. Allerdings ist das Vertrauen in ein Projekt, das von einem vorgelagerten SCM stammt, etwas sicherer als eines, das beispielsweise direkt aus dem Emacs-Wiki abgerufen wurde. Grundsätzlich vertrauen Sie jedoch darauf, dass der Autor des Pakets nicht böse wird und die Fähigkeit missbraucht, beliebigen Code unter Ihrer Emacs-Sitzung auszuführen.

Es gibt einige Dinge, die dazu führen können, dass Sie sich sicherer fühlen:

  • Halten Sie sich an beliebte Pakete

Während beliebte Pakete nicht automatisch mehr überprüft werden, steigt die Wahrscheinlichkeit, dass böswilliges Verhalten erkannt wird, bevor es Sie betrifft, aufgrund der Tatsache, dass sie mehr Benutzer haben.

  • Schauen Sie sich die Codemetriken an

Auf github können Sie einen ziemlich guten Überblick über die Beitragshistorie des Projekts erhalten . Auch wenn der Hauptautor die meisten Commits mit einer Vielzahl von Autoren macht, zeigt dies, dass es andere Personen gibt, die ein aktives Interesse an der Stabilität und Effektivität des Codes haben.

  • Ziehen Sie GNU ELPA und MELPA Stable den Repositories vor, die HEADs (MELPA) verfolgen oder nicht überprüfte Einreichungen zulassen (Marmelade).

Während das Leben an der Blutungsgrenze einen gewissen Reiz für diejenigen hat, die die neuesten glänzenden Funktionen wünschen, bedeutet dies, dass Sie möglicherweise die Ersten sind, die das neueste Commit in Ihrer Umgebung akzeptieren. Selbst wenn Sie nicht böswillig sind, erhalten Sie möglicherweise ein Paket im Fluss, während eine "offizielle" Veröffentlichung zumindest eine flüchtige Überprüfung aufweist. Beispielsweise werden GNU ELPA-Pakete nur von den Benutzern von emacs-devel mit Festschreibungsrechten festgeschrieben.

Letztendlich bin ich mir sicher, dass es irgendwann zu einer Sicherheitsverletzung über das Paketsystem kommen wird, auch wenn es sich nur um ein Proof-of-Concept-Experiment handelt. Dies ist der Punkt, an dem Sie sich möglicherweise auf Ihre regelmäßigen Backups verlassen müssen.

stsquad
quelle
1
Marmelade ist ein schlechtes Archiv, wenn es um „Vertrauen“ geht. Es ermöglicht jedem, Pakete unter einem beliebigen Namen ohne Überprüfung oder Überprüfung hochzuladen. Und es ist nicht gerade gut gepflegt (sehen Sie sich nur die Anzahl der offenen Fragen an).
Mondhorn
@lunaryorn: guter Punkt, ich werde die Antwort ändern.
stsquad
@lunaryorn MELPA hat noch offenere Probleme als das Elmarmalade-Repository, daher bezweifle ich, dass dies eine verwendbare Metrik ist.
Wasamasa
@stsquad Das einzige, was MELPA Stable Ihnen bietet, sind getaggte Veröffentlichungen von Dingen, die sowieso in MELPA gelandet wären. Ich sehe also nicht, wie das sicherer ist als die Verwendung von Marmelade.
Wasamasa
1
@wasamasa Sorry, mein Kommentar wurde schlecht formuliert. Die Zahl sagt nicht viel, das ist sicher, aber die noch offenen Fragen sind zu sagen: Es gibt Null Reaktion auf neue Probleme, keine Kommentare, nicht einmal Etiketten oder Zuweisungen. Marmelade ist praktisch tot.
Mondhorn