Digital signierte Exe-Dateien sicher?

L

linuxfan

Gast
Wollte mal fragen, ob man einer Exe-Datei automatisch vertrauen kann, wenn sie signiert ist. Also wenn z.B. steht Hersteller "Microsoft" und die digitale Signatur als gültig befunden wird, ob dann sicher ist, dass die Exe-Datei auch von Microsoft höchstpersönlich kommt und nicht nachträglich verändert wurde. Also dass kein Hacker solche Dateien manipuliert ins Internet stellen kann. Bzw. wie das Risiko dafür in der Praxis aussieht, wenn man von irgendwo was lädt, was gültig signiert ist.
 
jo, das ist der sinn der signatur.
ist die intakt, wurde auch nix verändert.
 
Und wie sieht das mit kleinen Änderungen aus, könnte z.B. jemand eine Fälschung erstellen, bei der es dann heißt (übertriebenes Beispiel), Hersteller "Micro$oft" oder "Microsoft GmbH", und die Signatur erscheint gültig, aber es ist halt nicht der originale Hersteller "Microsoft" sondern die Datei entstammt der Werkstatt des Hackers. Gibt es solche Fallen, oder worauf müsst man achten? Als Variablen, auf die der User achten kann, sehe ich nämlich nur diese beiden Dinge: den Herstellernamen und als zweites die Prüfung "Signatur OK".
Tut mir Leid wenn ich jemanden nerven sollte, aber ich weiß nicht, wo ich das sonst fragen kann.
 
nein.
jede änderung macht die signatur kaputt.
 
A: nein natürlich sind sie nicht automatisch sicher. Jeder kann per Authenticode signieren.
Wie überall kommt es darauf an, ob man dem Herausgeber vertraut oder nicht.

B: Änderungen am Code (nach Signatur) sind ausgeschlossen, nach aktuellem Kenntnisstand. Eben diese Integrität sollen Zertifikate ja sicherstellen.

C: bedingt, der Name der Herausgebers ist erstmal frei wählbar, ebenso wie der Name jedes Zertifikats. Aber nicht jeder signiert das. Wenn da steht "Microsoft" und das Ganze stammt von Letz Encrypt, dann wird da wohl ein Wurm drin sein.
 
  • Gefällt mir
Reaktionen: linuxfan
Intakt, wahrscheinlich ja. Sicher, nicht unbedingt.

Es sind bereits Malwarekampagnen mit gültigen Signaturen gefahren worden.

Auch wenn das bei Microsoft eher unwahrscheinlich ist, kann die ausführbare Datei dennoch bekannte Sicherheitslücken enthalten. DLL Hijacking ist ein Beispiel dafür, wie signierte EXE-Dateien dazu gebracht werden, Code des Angreifers auszuführen.

Schließlich haben vor allem staatliche Akteure Zugriff auf Zertifizierungsstellen, mit denen sie gefälschte Zertifikate ausstellen können, solange kein Certificate Pinning verwendet wird.
 
linuxfan schrieb:
Wollte mal fragen, ob man einer Exe-Datei automatisch vertrauen kann, wenn sie signiert ist.

Soll ich Dir das Dokument signieren in dem Du postulierst dass Elvis lebt und von der Basis im Innern der Hohlerde aus die Eroberung der Erde vorbereitet? Über den Preis für meine Signatur können wir uns sicherlich einigen.
 
  • Gefällt mir
Reaktionen: EuleMM
Naja, Authenticode ist ja eigentlich nur eine digitale Unterschrift für eine Datei. Ich weiß, daß diese Datei vom angegeben Herausgeber stammt und kann diesen daher verantwortlich machen für den Mist. Ohne Authenticode ginge das nicht, dann kann der sich rauswinden.

Weitergehende Ansprüche gibts aber nicht und kann es auch nicht geben. Evtl könnte man noch mit Applocker nachhelfen (richtige Windowsedition vorausgesetzt) und alles Unsignierte verbieten, aber...

@Hayda Ministral Naiv! Wenn Dein Name da druntersteht (und das wird er in Deinem Szenario) dann belastet dich das auch. Geld ist nicht alles.
 
Was ist denn das beste Linux-Tool, um eine Signatur auf Gültigkeit/Vertrauenswürdigkeit zu überprüfen? Weiß das hier jemand? Im Linux-Bereich des Forums soll ich ja nicht fragen.
 
Zuletzt bearbeitet von einem Moderator:
Im Linux-Bereich wird eigentlich überall mit gpg gearbeitet und die Schlüssel dazu werden auf den Seiten der "Hersteller" verbreitet. Die Validierung übernimmt dann dein Paketmanagement für dich, aber du kannst das auch für einzelne Dateien händisch tun, mit den richtigen gpg-Parametern.

Diese Windows-Signaturen werden (so machen wir das zumindest) mit einem Zertifikat erstellt, das wir per USB-Token von einer CA zugeschickt bekommen haben und dem daher von Windows (und anderen) vertraut wird. Das gibt es auch in einer EV-Version (extended validation), womit der Defender dann auch nicht mehr anschlagen soll. Kostet nur etwas mehr Geld und Aufwand, so eins zu bekommen.

Wie du allerdings unter Linux eine "Windows-Signatur" validierst, kann ich dir nicht aus der Hüfte sagen. Geht sicherlich, aber ist ein etwas exotischer use case, weil du eine exe ja nicht unter Linux ausführen wirst.
 
Zuletzt bearbeitet:
Das Zertifikat ist für die Ausführung irrelevant. Es hängt nur hinten dran.

Zertifikate validiert man mit OpenSSL. Vertrauenswürdiger geht es nicht. Ein bißchen Google nach OpenSSL und Authenticode sollte ein paar Ansätze liefern... aber von der Sache her ist Authenticode auch nichts anderes als das, was Checksums, GPG und andere Signaturen machen:
  • Es gibt eine zu validierende Nachricht. Das ist der Inhalt der Email, der Inhalt der ISO-Datei, der Inhalt der EXE/DLL.
  • Über diese Nachricht wird eine Signatur erstellt. Der eine nimmt dazu GPG. Der andere X.509 (Zertifikate).
  • Die Signatur wird veröffentlicht, entweder der Datei anhängend (immer nur am Ende, da die Nachricht ja unveränderlich ist / Authenticode) oder als eigene Datei (GPG, wobei man auch dort die Signatur direkt an die Nachricht anhängen kann).

Prüfung von Authenticodesignaturen sind daher immer zweiteilig (GPG und alle anderen auch).
A paßt die Signatur zur Nachricht?
B ist das Zertifikat selbst vertrauenswürdig?

A kann man automatisiert prüfen. B wird schon schwieriger, außer man hat eine Datenbank mit vertrauenswürdigen Herausgebern (cf. dieser Zweig im Zertifikatsspeicher).


Ich persönlich würde, da es ja nun plattformunabhängiges PowerShell gibt, erstmal dieses anschauen. Dort gibt es die PSGallery mit fertigen Funktionen. Stand 'jetzt' seh ich dort drei Module mit Bezug auf PKI - evtl beinhalten die schon etwas in der Richtung. Falls nicht, wäre mein nächster Schritt zu schauen was Net Core 3.x in dieser Richtung bereitstellt (PS setzt darauf auf) und ob sich damit mit ausreichend wenig Aufwand ein Validierungsscript zusammenschreiben läßt.

Denn wenn es darum geht, ob man dem Validator selber trauen kann, dann baut man diesen am besten selber zusammen unter Verwendung vertrauenswürdiger Funktionen - dann hat man das selber gebaut und die Frage nach dem Vertrauen erübrigt sich.

-- Natürlich ist PS nur eine von sehr vielen Optionen unter Linux. Google mit den Termen Authenticode, Validate und der Programmier/Scriptsprache der Wahl füttern sollte ziemlich schnell zutage führen, ob und falls ja, mit wieviel Aufwand sich damit sowas bewerkstelligen läßt.
 
Zurück
Oben