Внедряването на двуфакторна автентификация в PyPI доведе до инцидент с изтриването на популярен пакет

Разработчиците на репозитория за Python пакети PyPI обявиха план за преминаване към задължителна двуфакторна автентикация за пакетите, попадащи в категорията критично важни. Важността се определя по брой на сваляния и промяната ще се прилага за акаунти на поддържащи лица и собственици на проекти, свързани с 1% от пакетите, водещи по брой сваляния през последните 6 месеца. Като се има предвид, че в момента репозиторият PyPI включва повече от 350 хиляди пакета, двуфакторната автентикация ще бъде приложена приблизително за 3500 пакета. За проверка на включването на акаунта в списъка е подготвена специална страница. Точната дата за въвеждане на задължителната двуфакторна автентикация все още не е определена, но се предполага, че това ще се случи в близките месеци.

В отличие от преминаването към двуфакторна автентикация на проектите RubyGems, NPM и GitHub, в PyPI първоначално ще бъде внедрена схема, предвиждаща желателно използване на хардуерен токен с ключове за достъп. Като причина за препоръчаното използване на токени и протокол WebAuthn се посочва по-високата сигурност в сравнение с генерирането на еднократни пароли (възможността за използване на TOTP вместо токени ще бъде налична под формата на опция).

Токените ще могат да се получат безплатно — компанията Google е спонсор на инициативата и е предоставила 4000 ключа Titan за проекта. Всеки поддържащ може да подаде заявление за безплатно получаване на два токена с USB-C или USB-A интерфейс. Вторият токен се изпраща като резервен в случай на повреда или загуба на основния, за да се минимизира рискът от загуба на достъп до репозитория и да се освободи разработчиците от необходимостта да преминават през сложна процедура за възстановяване на достъпа.

За съжаление, токените могат да бъдат изпратени само в Австрия, Белгия, Канада, Франция, Германия, Италия, Япония, Испания, Швейцария, Великобритания и САЩ. Поддържащите от други страни могат сами да закупят токени, съвместими със спецификацията FIDO U2F, например, подходящи са токените Yubikey и Thetis. Като алтернатива също така е предвидена възможност за използване на приложения за автентикация на базата на еднократни пароли, поддържащи протокол TOTP, например, Authy, Google Authenticator и FreeOTP.

Инициативата не мина без инцидент. Авторът на пакета Atomicwrites, който отчита 6 милиона изтегляния месечно и 38 милиона за 6 месеца, отказа да премине на двуфакторна автентикация и, за да изключи своя пакет от списъка с критично важни, се опита да нулира брояча на изтеглянията. За да го направи, първо изтри пакета, а след това качи нова версия. Очакваше се, че подобна манипулация само ще нулира брояча, но на изненада на разработчика от репозитория бяха изтрити и всички стари версии, което доведе до проблеми за зависимите от библиотеката проекти, които някои разработчици сравниха с инцидента, довел до изтриването на пакета left-pad в NPM.

Проблемът се усложни от факта, че след изтриването авторът на atomicwrites не успя да предаде старите версии, които бяха възстановени едва на следващия ден след намесата на администраторите на PyPI. След случилото се авторът на пакета реши да прекрати разработката на atomicwrites и да преведе пакета в статут на остарял. Като причина се посочва, че развива проекта като хоби в свободното си време и появата на допълнителни изисквания, затрудняващи работата, не оправдават времето, което хвърля за безплатното поддържане на пакет с такава популярност. Авторът на atomicwrites твърди, че би предпочел просто да пише код за удоволствие, а грижите за допълнителната защита от злоупотреби могат да бъдат поети, когато за това се плаща.

Библиотеката atomicwrites съдържа около 200 реда код и предлага функции за атомарно записване на файлове. Вместо нея могат да се използват стандартните извиквания os.replace и os.rename (операцията се свежда до запис в файл с временно име и преименуване в целевия файл след готовност).

Източник: opennet.ru

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster