Ontwikkelaars van de Python-package repository PyPI hebben een plan aangekondigd voor de verplichte invoering van tweefactorauthenticatie voor pakketten die tot de categorie van kritische pakketten behoren. De belangrijkheid wordt bepaald aan de hand van het aantal downloads en de wijziging zal worden toegepast op de accounts van de maintainers en eigenaren van projecten die verband houden met 1% van de pakketten die de afgelopen 6 maanden het meeste zijn gedownload. Aangezien de PyPI-repository momenteel meer dan 350.000 pakketten bevat, zal tweefactorauthenticatie ongeveer voor 3.500 pakketten worden toegepast. Om te controleren of een account op de lijst staat, is er een speciale pagina voorbereid. De exacte datum voor de invoering van de verplichte tweefactorauthenticatie is nog niet vastgesteld, maar het wordt verwacht dat dit in de komende maanden zal gebeuren.
In tegenstelling tot de overstap naar tweefactorauthenticatie voor RubyGems-, NPM- en GitHub-projecten, zal PyPI aanvankelijk een schema implementeren dat het wenselijk maakt om een hardware-token met toegangssleutels te gebruiken. Als reden voor het aanbevolen gebruik van tokens en het WebAuthn-protocol wordt hogere beveiliging genoemd in vergelijking met de generatie van eenmalige wachtwoorden (de mogelijkheid om TOTP in plaats van tokens te gebruiken zal beschikbaar zijn als optie).
Tokens kunnen gratis worden verkregen ā Google heeft de initiatiefneming gesponsord en heeft 4.000 Titan-sleutels voor het project toegekend. Elke maintainer kan een aanvraag indienen voor de gratis ontvangst van twee tokens met een USB-C- of USB-A-interface. De tweede token wordt als reserve verzonden voor het geval de primaire token verloren gaat of defect raakt, om het risico op verlies van toegang tot de repository te minimaliseren en ontwikkelaars te verlossen van de noodzaak om door een ingewikkelde herstelprocedure te gaan.
Helaas kunnen tokens alleen naar Oostenrijk, Belgiƫ, Canada, Frankrijk, Duitsland, Italiƫ, Japan, Spanje, Zwitserland, het Verenigd Koninkrijk en de VS worden verzonden. Maintainers uit andere landen kunnen zelf FIDO U2F-compatibele tokens aanschaffen, bijvoorbeeld Yubikey- en Thetis-tokens. Als alternatief is er ook de mogelijkheid om in plaats van een token apps te gebruiken voor authenticatie op basis van eenmalige wachtwoorden die het TOTP-protocol ondersteunen, zoals Authy, Google Authenticator en FreeOTP.
De initiatief bleef niet zonder incident. De auteur van het Atomicwrites-pakket, dat 6 miljoen downloads per maand en 38 miljoen in 6 maanden heeft, weigerde over te stappen op tweefactorauthenticatie en probeerde, om zijn pakket uit de lijst van cruciale pakketten te verwijderen, de downloadtelling te resetten. Hiervoor verwijderde hij eerst het pakket en uploadde daarna een nieuwe versie. Het werd verwacht dat een dergelijke manipulatie alleen de telling zou resetten, maar tot verbazing van de ontwikkelaar werden ook alle oude versies uit de repository verwijderd, wat leidde tot problemen voor projecten die afhankelijk waren van de bibliotheek. Sommige ontwikkelaars vergeleken dit met het incident dat volgde op het verwijderen van het pakket left-pad in NPM.
Het probleem verergerde doordat de auteur van atomicwrites na de verwijdering niet in staat was om oude versies te uploaden, die pas de volgende dag hersteld konden worden na ingrijpen van de beheerders van PyPI. Na wat er gebeurd was, besloot de auteur van het pakket om de ontwikkeling van atomicwrites stop te zetten en het pakket als verouderd te classificeren. De reden hiervoor wordt genoemd als het feit dat hij het project als een hobby ontwikkelt in zijn vrije tijd en dat extra eisen, die het werk ingewikkelder maken, de tijd die hij steekt in de gratis ondersteuning van een pakket met zo'n populariteit niet waard zijn. De auteur van atomicwrites stelt dat hij liever gewoon code zou schrijven voor de lol, en dat zorgen over extra bescherming tegen misbruik het beste op de schouders van anderen gelegd kan worden wanneer daar voor betaald wordt.
De atomicwrites-bibliotheek bestaat uit ongeveer 200 regels code en biedt functies voor atomair schrijven van bestanden. Als alternatief kunnen de standaard aanroepen os.replace en os.rename worden gebruikt (de operatie komt neer op het schrijven naar een bestand met een tijdelijke naam en het hernoemen naar het doelbestand zodra het klaar is).
Bron: opennet.ru
