Deweloperzy repozytorium pakietów Python PyPI opublikowali plan przejścia na obowiązkową weryfikację dwuetapową dla pakietów, które zaliczają się do kategorii krytycznych. Krytyczność ustalana jest na podstawie liczby pobrań, a zmiana ta będzie dotyczyć kont opiekunów i właścicieli projektów związanych z 1% pakietów wiodących pod względem liczby pobrań w ciągu ostatnich 6 miesięcy. Biorąc pod uwagę, że w tej chwili repozytorium PyPI zawiera ponad 350 tys. pakietów, weryfikacja dwuetapowa zostanie wprowadzona dla około 3500 pakietów. Aby sprawdzić, czy Twoje konto znajduje się na liście, przygotowano specjalną stronę. Dokładna data wprowadzenia obowiązkowej weryfikacji dwuetapowej nie została jeszcze określona, ale zakłada się, że nastąpi to w najbliższych miesiącach.
W przeciwieństwie do przejścia na weryfikację dwuetapową w projektach RubyGems, NPM i GitHub, w PyPI początkowo wprowadzony zostanie system, który zaleca korzystanie z sprzętowego tokena z kluczami dostępu. Jako powód zalecanego zastosowania tokenów oraz protokołu WebAuthn podaje się wyższy poziom bezpieczeństwa w porównaniu do generowania jednorazowych haseł (możliwość korzystania z TOTP zamiast tokenów będzie dostępna jako opcja).
Tokeny będą dostępne za darmo — firma Google została sponsorem inicjatywy i przeznaczyła dla projektu 4000 kluczy Titan. Każdy opiekun może złożyć wniosek o darmowe uzyskanie dwóch tokenów z interfejsem USB-C lub USB-A. Drugi token wysyłany jest jako zapasowy na wypadek awarii lub utraty głównego, aby zminimalizować ryzyko utraty dostępu do repozytorium i uwolnić twórców od konieczności przechodzenia przez skomplikowaną procedurę odzyskiwania dostępu.
Niestety, tokeny mogą być wysyłane tylko do Austrii, Belgii, Kanady, Francji, Niemiec, Włoch, Japonii, Hiszpanii, Szwajcarii, Wielkiej Brytanii i Stanów Zjednoczonych. Opiekunowie z innych krajów mogą samodzielnie zakupić kompatybilne z specyfikacją FIDO U2F tokeny, takie jak Yubikey i Thetis. Alternatywnie, przewidziano także możliwość stosowania zamiast tokena aplikacji do weryfikacji opartych na jednorazowych hasłach, które wspierają protokół TOTP, takich jak Authy, Google Authenticator i FreeOTP.
Inicjatywa nie obyła się bez incydentu. Autor pakietu Atomicwrites, który ma 6 milionów pobrań miesięcznie i 38 milionów w ciągu 6 miesięcy, nie chciał przejść na dwuetapową weryfikację i w celu usunięcia swojego pakietu z listy krytycznych próbował zresetować licznik pobrań. Aby to zrobić, najpierw usunął pakiet, a potem przesłał nową wersję. Oczekiwano, że taka manipulacja tylko zresetuje licznik, ale ku zdziwieniu dewelopera z repozytorium usunięto również wszystkie stare wersje, co doprowadziło do problemów w projektach zależnych od biblioteki, które niektórzy deweloperzy porównali z incydentem związanym z usunięciem pakietu left-pad w NPM.
Problem zaostrzył się tym, że po usunięciu autor atomicwrites nie mógł załadować starych wersji, co udało się odzyskać dopiero następnego dnia po interwencji administratorów PyPI. Po tym, co się stało, autor pakietu podjął decyzję o zaprzestaniu rozwoju atomicwrites i sklasyfikowaniu pakietu jako przestarzałego. Jako powód podaje, że rozwija projekt jako hobby w wolnym czasie, a pojawienie się dodatkowych wymagań, utrudniających pracę, nie jest warte czasu poświęcanego na bezpłatną obsługę pakietu o takiej popularności. Autor atomicwrites twierdzi, że wolałby po prostu pisać kod dla zabawy, a kwestie dodatkowej ochrony przed przejęciem przez cyberprzestępców można zrzucić na innych, gdy się za to płaci.
Biblioteka atomicwrites zawiera około 200 linii kodu i oferuje funkcje do atomowego zapisu plików. Jako alternatywę można używać standardowych wywołań os.replace i os.rename (operacja polega na zapisaniu do pliku z tymczasową nazwą i zmianie nazwy na docelowy plik po zakończeniu).
Źródło: opennet.ru
