Von einem Übersetzer: Ich bin auf TheUpdateFramework gestoßen, als ich nach Bibliotheken gesucht habe, die automatische Software-Updates auf dem Desktop implementieren. Einerseits war die Beschreibung der Sicherheitsaspekte von Software-Update-Systemen, die im Folgenden vorgestellt werden, für mich interessant und detailliert. auf der anderen Seite - natürlich können Sie neben der akademischen Forschung, obwohl unter der Leitung von LinuxFoundation, viele geeignete Lösungen finden. Sie können Optionen in den Kommentaren vorschlagen.

Sicherheit
Wir können ein Software-Update-System als "sicher" betrachten, wenn:
- Sie informiert sich rechtzeitig über die neuesten verfügbaren Updates
- Alle vom Update-System heruntergeladenen Dateien sind korrekt und
- Keine schädlichen Folgen beim Überprüfen oder Herunterladen von Dateien.
Um dies zu erreichen, sind praktikable Präventionsstrategien gegen viele potenzielle Angriffe erforderlich.
Angriffe und Schwächen
Nachfolgend sind einige der bekannten Angriffe auf Software-Update-Systeme aufgeführt, einschließlich Schwachstellen, die diese Angriffe ermöglichen. Um ein sicheres Software-Update-Framework zu entwerfen, müssen Sie diese Angriffe verstehen und Schutzstrategien entwickeln. Einige dieser Mängel können abhängig von der Architektur und Implementierung eines bestimmten Software-Update-Systems miteinander zusammenhängen.
- Installieren Sie benutzerdefinierte Software . Ein Angreifer kann beliebige Dateien als Antwort auf Anforderungen zum Herunterladen ersetzen und alles, was er möchte, auf dem Client-System installieren, auch ohne die Rechtswidrigkeit solcher Aktionen festzustellen.
- Attack Rollback-Updates . Der Angreifer stellt dem Software-Update-System Dateien einer älteren Version zur Verfügung, als derzeit auf dem Client installiert ist. Der Benutzer installiert eine Version, die möglicherweise Schwachstellen enthält, ohne feststellen zu können, dass diese Version veraltet ist. Später können Sicherheitslücken von einem Angreifer ausgenutzt werden.
- Rücklaufangriffe . Der Angreifer erhöht willkürlich die Versionsnummer, wodurch sie viel höher als der aktuelle Wert ist, wodurch das Softwareupdate-System getäuscht wird und er gezwungen wird zu glauben, dass aufeinanderfolgende Updates tatsächlich versuchen, die Softwareversion auf den Client zurückzusetzen, auf eine frühere, veraltete Version. In einigen Situationen, zum Beispiel wenn es die maximal mögliche Versionsnummer gibt, kann der Kriminelle dieses Maximum verwenden, so dass das Update-System niemals ein neues Update installieren kann.
- Angriffe auf unbegrenztes Einfrieren . Der Angreifer gibt weiterhin Dateien, die der Client bereits gesehen hat, an das Softwareupdate-System zurück. Infolgedessen bleibt der Client über neue Softwareversionen im Dunkeln.
- Angriffe auf endlose Daten . Als Antwort auf eine Anforderung zum Herunterladen gibt der Angreifer einen endlosen Datenstrom zurück, der dem Client direkt Schaden zufügt (z. B. das Auffüllen einer Festplatte oder eines Arbeitsspeichers).
- Greift eine langsame Reaktion an . Der Angreifer reagiert auf Clients mit einem sehr langsamen Datenfluss, was letztendlich dazu führt, dass der Client den Aktualisierungsprozess nicht abschließen kann.
- Angriffe übermäßiger Abhängigkeiten . Der Angreifer informiert den Client darüber, dass für die Installation der erforderlichen Software auch Software von Drittanbietern installiert werden muss ( hi, mail.ru - ca. Per. ). Diese Software von Drittanbietern stammt möglicherweise aus einer zuverlässigen Quelle, weist jedoch bekannte Schwachstellen auf, die ein Angreifer ausnutzen könnte.
- Gemischte Kombinationsangriffe . Der Angreifer gibt dem Client einen Snapshot des Repositorys zurück, der Dateien enthält, die nie zur gleichen Zeit in derselben Revision vorhanden waren. Dies kann zur Installation veralteter Versionen von Abhängigkeiten und anderer, komplexerer Konsequenzen führen.
- Andere Software installieren . Der Angreifer gibt eine vertrauenswürdige Datei an den Client zurück. Dies ist einfach nicht das, was der Client installieren wollte.
- Schädliche Spiegel, die Updates verhindern . Ein Angreifer steuert einen der Repository-Spiegel und kann damit verhindern, dass Clients Updates von anderen, nicht infizierten Spiegeln erhalten.
- Wichtige Sicherheitslücken . Ein Angreifer, der einen einzelnen Schlüssel im System (oder mehrere Schlüssel mit einer Anzahl von nicht mehr als einem bestimmten Schwellenwert) gefährden kann, kann Clients gefährden. Diese Angriffe können sowohl beim Vertrauen in einen einzelnen Online-Schlüssel (z. B. beim Schutz von Updates nur mit SSL-Verschlüsselung) als auch im Fall eines einzelnen Offline-Schlüssels (bei den meisten Software-Update-Systemen, die Schlüssel zum Signieren verwenden) auftreten.
Sicherheitsprinzipien
Um sicherzustellen, dass das System vor allen oben beschriebenen Angriffen geschützt ist, basiert die Architektur und Implementierung des Update Framework (TUF) auf mehreren grundlegenden Konzepten. Details darüber, wie TUF die oben beschriebenen Informationen überträgt, finden Sie in der Metadatendokumentation .
Vertrauen
Wenn Sie den heruntergeladenen Dateien vertrauen, müssen Sie davon ausgehen, dass die Dateien von einer Partei ohne anfällige Architekturlösungen bereitgestellt wurden. Die beiden oft schwer fassbaren Aspekte des Vertrauens in ein Software-Update-System sind:
- Vertrauen sollte nicht für immer gewährt werden. Das Vertrauen muss widerrufen werden, wenn es nicht aktualisiert wird.
- Vertrauen sollte nicht für alle Teilnehmer gleichermaßen gegeben werden. Diese Art der gemeinsamen Vertrauenswürdigkeit bedeutet, dass Sie nur den Mitgliedsdateien vertrauen können, deren Bereitstellung durch dieses Mitglied durch die Stammrolle angegeben wird.
Hauptrisikominderung (Kompromissbeständigkeit)
Kryptografische Signaturen sind ein wesentlicher Bestandteil der Sicherheit in Software-Update-Systemen. Die Sicherheit der in diesen Signaturen verwendeten Schlüssel wirkt sich direkt auf die Sicherheit der Clients aus, die das System schützt. Anstatt naiv zu glauben, dass private Schlüssel niemals kompromittiert werden können, sollten sichere Software-Update-Systeme vorsehen, wie Clients vor der Möglichkeit geschützt werden können, diese Schlüssel zu kompromittieren. Dies ist das Grundprinzip des Widerstands gegen Kompromisse.
Das Sichern von Clients, wenn ein Schlüssel kompromittiert wird, umfasst:
- Schneller und sicherer Austausch und Rückruf von Schlüsseln.
- Minimales Vertrauen in Schlüssel mit hohem Kompromissrisiko. Schlüssel, die online gespeichert oder in Automatisierungssystemen verwendet werden, sollten im Falle eines Kompromisses keine unmittelbare Bedrohung für die Kunden darstellen.
- Verwenden mehrerer Schlüssel und Schwellenwert- / Quorumsignaturen.
Integrität
Die Gewährleistung der Integrität im Update Framework (TUF) gilt nicht nur für einzelne Dateien, sondern auch für das gesamte Repository. Es ist ziemlich offensichtlich, dass Clients überprüfen sollten, ob einzelne Dateien korrekt sind. Schon nicht so offensichtlich, aber für Kunden ist es immer noch sehr wichtig, dass die Prüfung des gesamten Repositorys korrekt ist. Wenn eine vertrauenswürdige Quelle beispielsweise zwei Dateien bereitstellt, sollte das Softwareupdate-System die neuesten Versionen beider Dateien (nicht nur eine) und nur die Versionen dieser beiden Dateien anzeigen, die gleichzeitig im Repository vorhanden sind.
Relevanz
Da Softwareupdates häufig Schwachstellen beheben, ist es für Softwareupdate-Systeme wichtig, die neuesten verfügbaren Versionen zu erhalten. Ein Angreifer kann versuchen, den Client zu zwingen, veraltete Versionen der Software zu installieren, oder den Client einfach davon überzeugen, dass keine neuen Updates vorhanden sind.
Relevanz sicherstellen bedeutet:
- Akzeptieren Sie niemals Dateien, die älter sind als die bereits installierten.
- Identifizieren Sie mögliche Probleme beim Empfang von Updates.
Es ist anzumerken, dass es nicht immer möglich ist, ein erfolgreiches Update durchzuführen, wenn ein Angreifer auf Client-Anfragen reagiert. Der Client muss jedoch in der Lage sein, die Wahrscheinlichkeit von Aktualisierungen zu bestimmen, die er nicht erhalten kann.
Implementierungssicherheit
Neben einer sicheren Architektur arbeitet TUF auch gegen Implementierungsschwachstellen, einschließlich Schwachstellen, die bei Software-Update-Systemen häufig auftreten. In einigen Fällen wird hierfür die Aufnahme zusätzlicher Informationen in die Update-Metadaten verwendet. Wenn Sie beispielsweise die erwartete Größe der heruntergeladenen Datei kennen, kann TUF die Menge der heruntergeladenen Daten begrenzen. Infolgedessen ist TUF gegen den oben diskutierten unendlichen Datenangriff geschützt.