Die Version 1.0 des TUF-Frameworks (The Update Framework) wurde veröffentlicht. Es bietet Mittel zur sicheren Überprüfung und zum Herunterladen von Updates. Das Hauptziel des Projekts besteht darin, den Kunden vor typischen Angriffen auf Repositories und Infrastrukturen zu schützen, einschließlich der Bekämpfung der Verbreitung gefälschter Updates durch Angreifer, die Zugriff auf die Schlüssel für digitale Signaturen erlangt oder das Repository kompromittiert haben. Das Projekt wird unter der Schirmherrschaft der Linux Foundation entwickelt und findet Anwendung zur Verbesserung der Sicherheit bei der Bereitstellung von Updates in Projekten wie Docker, Fuchsia, Automotive Grade Linux, Bottlerocket und PyPI (die Integration der Verifizierung von Downloads und Metadaten in PyPI wird in naher Zukunft erwartet). Der Code der Referenzimplementierung von TUF ist in Python geschrieben und wird unter der Apache 2.0-Lizenz veröffentlicht.
Das Projekt entwickelt eine Reihe von Bibliotheken, Dateiformaten und Tools, die sich problemlos in bestehende Anwendungspatchsysteme integrieren lassen und Schutz bieten, falls die Schlüssel auf der Seite der Softwareentwickler kompromittiert werden. Um TUF zu verwenden, genügt es, die erforderlichen Metadaten in das Repository hinzuzufügen und die bereitgestellten TUF-Verfahren für das Herunterladen und die Verifizierung von Dateien in den Client-Code zu integrieren.
Das TUF-Framework übernimmt die Aufgaben der Überprüfung auf Updates, des Herunterladens von Updates und der Verifizierung ihrer Integrität. Das Update-Installationssystem überschneidet sich nicht direkt mit den zusätzlichen Metadaten, deren Überprüfung und Download TUF übernimmt. Für die Integration mit Anwendungen und Update-Installationssystemen wird eine Low-Level-API zur Verfügung gestellt, um auf die Metadaten zuzugreifen, sowie eine High-Level-Client-API ngclient, die bereit für die Integration mit Anwendungen ist.
Zu den Angriffen, gegen die TUF schützen kann, zählt die Manipulation von alten Versionen als Updates, um Sicherheitslücken in der Software zu blockieren oder den Benutzer auf eine alte, verwundbare Version zurückzusetzen, sowie die Verbreitung von schädlichen Updates, die korrekt mit einem kompromittierten Schlüssel signiert sind, und die Durchführung von DoS-Attacken auf Kunden, wie etwa das endlose Füllen von Speicherplatz durch wiederholte Updates.
Der Schutz vor der Kompromittierung der Infrastruktur des Softwareanbieters wird durch die Aufrechterhaltung separater verifizierbarer Aufzeichnungen über den Status des Repositories oder der Anwendung erreicht. Die verifizierbaren TUF-Metadaten enthalten Informationen über vertrauenswürdige Schlüssel, kryptografische Hashes zur Überprüfung der Integrität von Dateien, zusätzliche digitale Signaturen zur Beglaubigung von Metadaten, Informationen über Versionnummern und Lebensdauerdaten von Aufzeichnungen. Die zur Verifizierung verwendeten Schlüssel haben eine begrenzte Lebensdauer und erfordern eine regelmäßige Aktualisierung, um zu verhindern, dass alte Schlüssel zur Signatur verwendet werden.
Das Risiko der Kompromittierung des gesamten Systems wird durch ein Modell mit Vertrauensaufteilung verringert, bei dem jede Partei nur für den Bereich verantwortlich ist, für den sie direkt zuständig ist. Im System wird eine Hierarchie von Rollen mit eigenen Schlüsseln verwendet, zum Beispiel signiert die Root-Rolle die Schlüssel für die Rollen, die für die Metadaten im Repository verantwortlich sind, die Daten zum Zeitpunkt der Aktualisierungen und die Ziel-Builds. Im Gegenzug signiert die Rolle, die für die Builds verantwortlich ist, die Rollen, die mit der Verifizierung der gelieferten Dateien verbunden sind.

Um die Kompromittierung der Schlüssel zu verhindern, wird ein Mechanismus für den sofortigen Widerruf und Austausch von Schlüsseln eingesetzt. Jeder einzelne Schlüssel trägt nur die minimal erforderlichen Berechtigungen, und für Verifizierungsoperationen ist die Verwendung mehrerer Schlüssel erforderlich (ein Leck eines einzelnen Schlüssels ermöglicht es nicht sofort, den Kunden anzugreifen, und um das gesamte System zu kompromittieren, müssten die Schlüssel aller Teilnehmer erlangt werden). Der Kunde kann nur Dateien akzeptieren, die nach bereits erhaltenen Dateien erstellt wurden, und die Daten werden nur gemäß der in den verifizierten Metadaten festgelegten Größe hochgeladen.
Die veröffentlichte Version TUF 1.0.0 bietet eine vollständig überarbeitete und stabilisierte Referenzimplementierung der TUF-Spezifikation, die als fertiges Beispiel zur Erstellung eigener Implementierungen oder zur Integration in eigene Projekte verwendet werden kann. Die neue Implementierung enthält erheblich weniger Code (1.400 Zeilen statt 4.700), ist einfacher zu warten und lässt sich leicht erweitern, beispielsweise zur Unterstützung spezifischer Netzwerk-Stacks, Speichersysteme oder Verschlüsselungsalgorithmen.
Quelle: opennet.ru
