Überprüfen, ob Open Source-Software nicht manipuliert wurde


7

Ich bin dabei, eine OSS-Software herunterzuladen, und möchte (mit hinreichender Sicherheit) sicherstellen, dass das Einfügen von Malware nicht manipuliert wurde. Insbesondere ist es ein Passwort-Manager ( KeePassX ), der als extrem saftiges Ziel für Hacking erscheint, daher fühle ich mich besonders paranoid.

Die zwei Vektoren für das Einfügen von Malware, die mir einfallen, sind:

  • Malware findet Eingang in den offiziellen Quellcode.
  • Eine böswillige Gabelung oder ein böswilliger Build ersetzt die offizielle Gabelung auf der Website.

Die Download-Seite enthält Prüfsummen. Dies scheint jedoch nicht vor den beiden oben genannten Hacks zu schützen.

Ich habe weder das Fachwissen noch die Zeit, um ein Quellcode-Audit durchzuführen.

Was sind Best Practices für die Überprüfung von Open Source-Software sensibler Art auf Malware?


1
Die Entwickler müssen digital signieren, was sie mit ihren bekannten Schlüsseln bereitstellen. In GnuPG ist eine Überprüfungsfunktion integriert. Sie können die Integrität neuer Versionsdownloads mithilfe der aktuell installierten Version überprüfen (der Sie bereits vertrauen).
Daniel Beck

Ich würde mich nicht zu sehr mit potenziell manipulierten Quellcodes befassen. Etwas besorgniserregender sollte sein, ob es einen potenziell kompromittierbaren Abschnitt des Codes gibt, der extern manipuliert werden könnte.
Enigma

Überprüfen Sie den MD5 und bauen Sie sich aus der Quelle. Das ist der Standardweg. Wenn Sie paranoid sind, sollten Sie natürlich zuerst die Quelle überprüfen.
Mawg sagt, Monica

Antworten:


3

Wenn Sie die Quelle fürchten, was Ihre Frage impliziert, können Sie der Software auf keinen Fall vertrauen.

Die Lösung besteht darin, die Quelle nicht mehr zu fürchten.

Zu diesem Zweck können Sie sich auf die Tatsache konzentrieren, dass von Tausenden, wahrscheinlich Millionen von OSS-Softwareprojekten die Anzahl der infizierten Projekte und des genehmigten und in die Hauptcodebasis eingeführten infizierten Codes gleich Null ist.

Sie können sich auch auf die Logik des Problems konzentrieren: Aufgrund der großen Anzahl von Augen, die über jeden Teil des Codes gehen, und der extrem geringen Wahrscheinlichkeit, dass eine ausreichende Anzahl dieser Augen von den Malware-Herstellern gekauft wird, um den schändlichen Code zu erzwingen Um einbezogen zu werden, ist die Wahrscheinlichkeit, dass fehlerhafter Code es in ein solches Tool geschafft hat, ebenfalls gleich Null.

Aus diesen Gründen versuche ich, mich an seriöse, gut empfohlene, gut unterstützte und aktiv entwickelte OSS-Tools für kritische Software zu halten. In all diesen Situationen spielen wir mit Gewinnchancen. Und während die Standardquoten extrem niedrig sind, sind die Chancen, dass ein aktives Softwareprojekt infiziert wird, sogar niedriger als die Standardquoten.


Wie haben Sie CVE-2008-0166 erklärt, wenn die Wahrscheinlichkeit gleich Null ist?
Daniel Beck

@ Daniel: Es ist weder absichtlich bösartig noch Malware. Der Fehler wurde durch die Patches der Debian-Paketbetreuer verursacht.
user1686

@grawity Er argumentiert, dass Augäpfel jedes Problem lösen, das von böswilligen Committern verursacht wird. In diesem Fall war es ein versehentliches Festschreiben, aber ich bezweifle, dass Angreifer /* compromise security */Kommentare mit ihrem Code abgeben. Angriffe werden nicht auffälliger aussehen.
Daniel Beck

Die Antwort liegt wie immer in den Beweisen. Linux als führendes OSS-Projekt wäre ein besonderes Ziel für die Injektion von bösartigem Code (ähnlich wie Windows das größte und beliebteste Malware-Ziel ist), aber es hatte einfach kein signifikantes Problem damit. Da ich nicht in die Community involviert bin, kann ich nicht sagen, warum dies sicher ist. Ich würde mir jedoch vorstellen, dass die Community einen Weg gefunden hat, selbst auf verstreute, dezentrale Weise zu verifizieren und zu vertrauen. Die Beweise beweisen meine Argumentation.
music2myear

4

Wie paranoid willst du sein? Vertrauen Sie Ihrem Compiler? Es gibt eine interessante Geschichte (lesen Sie den Abschnitt Reflections on Trusting Trust ) von Ken Thompson, einem der ursprünglichen Schöpfer von Unix. Es beschreibt ein System, in dem das Anmeldeprogramm über eine Hintertür verfügt, über die er auf jeden Computer zugreifen kann. Der Compiler wird so geändert, dass der Compiler den Backdoor-Code bemerkt und einfügt, wenn jemand die saubere Quelle des Anmeldeprogramms kompiliert.

Der Compiler bemerkt auch, ob jemand die saubere Quelle des Compilers kompiliert, und fügt dort auch den richtigen Code ein. In jenen Tagen war alles als Quelle verfügbar, aber Sie würden eine binäre Version des Compilers als Startpunkt benötigen. Der bösartige Code wird also nie im Quellcode angezeigt, sondern verbreitet sich selbst, wenn Teile des Systems neu kompiliert werden. Dies wäre unglaublich schwer herauszufinden, da im Grunde genommen der laufende Code überprüft werden muss.

Zurück zur ursprünglichen Frage, müssen Sie jemandem vertrauen. Die Frage ist, wie weit die Kette hinauf muss? Bei einem bekannten Projekt wird wahrscheinlich jemand bemerken, wenn es ziemlich schnell ein Problem gibt.


2

Wenn Sie einen Spiegel der Pakete finden, können Sie diese mit ihren Prüfsummen vergleichen.

Dies würde vor dem zweiten Vektor schützen, vorausgesetzt, die Pakete wurden gespiegelt, bevor sie ersetzt wurden.

Zum Schutz vor dem ersten Vektor müssen Sie sich wahrscheinlich die Änderungen im Quellcode ansehen.


Ebenso könnte ich auch überprüfen, ob ein älterer Schnappschuss der Download-Seite dieselben Prüfsummen enthält.
Reid

1

Malware findet Eingang in den offiziellen Quellcode.

Wenn Sie sich nicht mit täglichen Builds beschäftigen, ist dies unwahrscheinlich.

Eine böswillige Gabelung oder ein böswilliger Build ersetzt die offizielle Gabelung auf der Website.

Dies würde den Zugriff auf die Website erfordern, was unwahrscheinlich ist, ohne dass jemand es bemerkt. Sie sollten sich weitaus mehr Sorgen darüber machen, dass die Website von MySQL kompromittiert wird.

Die Download-Seite enthält Prüfsummen. Dies scheint jedoch nicht vor den beiden oben genannten Hacks zu schützen.

Sicher tut es das ... Jemand musste diese Werte posten, die nicht automatisch generiert wurden.


Re. Ihr letzter Punkt: Ich gehe davon aus, dass jemand, der Zugriff auf die Veröffentlichung eines böswilligen Builds hat, auch Zugriff auf die Website hat, um neue Prüfsummen zu veröffentlichen.
Reid
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.