Die Entwickler des Python-Paket-Repositorys PyPI haben einen Plan zur Einführung einer verpflichtenden Zwei-Faktor-Authentifizierung für Pakete veröffentlicht, die als kritisch eingestuft werden. Die Bedeutung wird anhand der Anzahl der Downloads bestimmt, und die Änderung wird auf die Konten der Betreuer und Eigentümer von Projekten angewendet, die mit 1 % der am häufigsten heruntergeladenen Pakete in den letzten 6 Monaten verbunden sind. Angesichts der Tatsache, dass das PyPI-Repository derzeit über 350.000 Pakete umfasst, wird die Zwei-Faktor-Authentifizierung voraussichtlich für etwa 3.500 Pakete gelten. Um zu überprüfen, ob ein Konto in die Liste aufgenommen wird, wurde eine spezielle Seite vorbereitet. Das genaue Datum der Einführung der verpflichtenden Zwei-Faktor-Authentifizierung steht noch nicht fest, es wird jedoch angenommen, dass dies in den kommenden Monaten geschehen wird.
Im Gegensatz zur Einführung der Zwei-Faktor-Authentifizierung bei RubyGems, NPM und GitHub wird in PyPI anfangs ein Schema implementiert, das die wünschenswerte Verwendung eines Hardware-Tokens mit Zugriffsschlüsseln vorsieht. Als Grund für die empfohlene Verwendung von Tokens und dem WebAuthn-Protokoll wird eine höhere Sicherheit im Vergleich zur Generierung von Einmalpasswörtern genannt (die Möglichkeit, TOTP anstelle von Tokens zu verwenden, wird als Option verfügbar sein).
Tokens können kostenlos bezogen werden – die Firma Google hat sich als Sponsor der Initiative bereit erklärt und stellt 4.000 Titan-Schlüssel für das Projekt zur Verfügung. Jeder Betreuer kann einen Antrag auf den kostenlosen Erhalt von zwei Tokens mit USB-C- oder USB-A-Anschluss stellen. Der zweite Token wird als Backup im Falle eines Defekts oder Verlusts des Haupttokens versendet, um das Risiko des Verlusts des Zugangs zum Repository zu minimieren und die Entwickler von der Notwendigkeit zu befreien, einen komplexen Wiederherstellungsprozess zu durchlaufen.
Leider können die Tokens nur nach Österreich, Belgien, Kanada, Frankreich, Deutschland, Italien, Japan, Spanien, in die Schweiz, das Vereinigte Königreich und die USA versendet werden. Betreuer aus anderen Ländern können kompatible Tokens, die der FIDO U2F-Spezifikation entsprechen, selbst erwerben, beispielsweise sind Tokens von Yubikey und Thetis geeignet. Alternativ besteht auch die Möglichkeit, anstelle eines Tokens Anwendungen zur Authentifizierung mit Einmalpasswörtern zu verwenden, die das TOTP-Protokoll unterstützen, wie z. B. Authy, Google Authenticator und FreeOTP.
Die Initiative blieb nicht ohne Vorfall. Der Autor des Pakets Atomicwrites, das monatlich 6 Millionen Downloads und in 6 Monaten 38 Millionen Downloads verzeichnete, wollte nicht auf die Zwei-Faktor-Authentifizierung umsteigen und versuchte, seinen Download-Zähler zurückzusetzen, um sein Paket aus der Liste der kritischen Pakete zu entfernen. Dazu löschte er zunächst das Paket und lud dann eine neue Version hoch. Es wurde erwartet, dass eine solche Manipulation lediglich den Zähler zurücksetzt, aber zu dem Überraschung des Entwicklers wurden auch alle alten Versionen aus dem Repository gelöscht, was zu Problemen bei Projekten führte, die von der Bibliothek abhingen. Einige Entwickler verglichen dies mit dem Vorfall, der durch die Löschung des Pakets left-pad in NPM verursacht wurde.
Das Problem verschärfte sich dadurch, dass der Autor von atomicwrites nach der Löschung keine alten Versionen mehr hochladen konnte. Diese konnten erst am nächsten Tag nach dem Eingreifen der Administratoren von PyPI wiederhergestellt werden. Nach den Vorfällen entschied der Autor des Pakets, die Entwicklung von atomicwrites einzustellen und das Paket in die Kategorie der veralteten Pakete zu überführen. Als Grund wird angeführt, dass er das Projekt als Hobby in seiner Freizeit entwickelt und zusätzliche Anforderungen, die die Arbeit erschweren, nicht den Aufwand wert sind, den er für die kostenlose Wartung eines so populären Pakets aufwenden müsste. Der Autor von atomicwrites behauptet, dass er es vorziehen würde, einfach aus Spaß Code zu schreiben, und dass die Verantwortung für zusätzliche Schutzmaßnahmen gegen Angriffe von Dritten auf diejenigen abgewälzt werden kann, die dafür bezahlen.
Die Bibliothek atomicwrites enthält etwa 200 Zeilen Code und bietet Funktionen für atomare Dateioperationen. Als Alternative können die Standardaufrufe os.replace und os.rename verwendet werden (der Vorgang besteht darin, in eine Datei mit einem temporären Namen zu schreiben und sie nach Fertigstellung in die Zieldatei umzubenennen).
Quelle: opennet.ru
