Vývojáři repozitáře Python balíčků PyPI zveřejnili plán přechodu na povinnou dvoufaktorovou autentizaci pro balíčky, které spadají do kategorie kriticky důležitých. Důležitost je určena podle počtu stažení a změna se bude vztahovat na účty správců a vlastníků projektů souvisejících s 1% balíčků, které vedou v počtu stažení za posledních 6 měsíců. S ohledem na to, že repozitář PyPI v současnosti zahrnuje více než 350 tisíc balíčků, dvoufaktorová autentizace se bude aplikovat přibližně na 3500 balíčků. Pro ověření, zda vaše účet spadá do této skupiny, byla připravena speciální stránka. Přesný termín zavedení povinné dvoufaktorové autentizace zatím nebyl určen, očekává se, že k tomu dojde v následujících měsících.
Na rozdíl od přechodu na dvoufaktorovou autentizaci projektů RubyGems, NPM a GitHub, bude v PyPI nejprve implementován systém, který předpokládá doporučené použití hardwarového tokenu s přístupovými klíči. Jako důvod doporučeného používání tokenů a protokolu WebAuthn se uvádí vyšší bezpečnost ve srovnání s generováním jednorázových hesel (možnost použití TOTP místo tokenů bude dostupná formou volby).
Tokeny bude možné získat zdarma — společnost Google se stala sponzorem iniciativy a vyčlenila pro projekt 4000 klíčů Titan. Každý správce může požádat o zdarma získání dvou tokenů s USB-C nebo USB-A rozhraním. Druhý token bude zaslán jako rezervní pro případ poruchy nebo ztráty hlavního, aby se minimalizovalo riziko ztráty přístupu k repozitáři a uvolnilo vývojáře od nutnosti procházet složitým procesem obnovy přístupu.
Bohužel, tokeny mohou být zaslány pouze do Rakouska, Belgie, Kanady, Francie, Německa, Itálie, Japonska, Španělska, Švýcarska, Velké Británie a USA. Správci z ostatních zemí si mohou sami zakoupit kompatibilní tokeny se specifikací FIDO U2F, například tokeny Yubikey a Thetis. Alternativně je také k dispozici možnost použití místo tokenu aplikací pro autentizaci založených na jednorázových heslech, které podporují protokol TOTP, například Authy, Google Authenticator a FreeOTP.
Iniciativa se neobešla bez incidentu. Autor balíčku Atomicwrites, který má 6 milionů stažení měsíčně a 38 milionů za 6 měsíců, nechtěl přejít na dvoufaktorovou autentizaci a pokusil se resetovat počitadlo stažení, aby svůj balíček vyjmul ze seznamu kriticky důležitých. Nejprve balíček odstranil a poté nahrál novou verzi. Očekávalo se, že taková manipulace pouze resetuje počitadlo, ale k překvapení vývojáře byly z repozitáře odstraněny i všechny staré verze, což vedlo k problémům u projektů závislých na knihovně, které někteří vývojáři přirovnali k incidentu spojenému s odstraněním balíčku left-pad v NPM.
Problém se zhoršil tím, že po odstranění autor atomicwrites nemohl nahrát staré verze, které se podařilo obnovit až následující den po zásahu administrátorů PyPI. Po tomto incidentu se autor balíčku rozhodl přerušit vývoj atomicwrites a zařadit balíček do kategorie zastaralých. Jako důvod uvádí, že projekt rozvíjí jako hobby ve volném čase a vznikající další požadavky, ztěžující práci, nestojí za čas, který věnuje bezplatné podpoře balíčku s takovou popularitou. Autor atomicwrites tvrdí, že by raději psal kód pro zábavu a péči o dodatečnou ochranu před útoky zrádců může převzít někdo, kdo za to zaplatí.
Knihovna atomicwrites obsahuje přibližně 200 řádků kódu a nabízí funkce pro atomární zapisování souborů. Jako náhradu lze použít standardní volání os.replace a os.rename (operace spočívá v zápisu do souboru s dočasným názvem a přejmenování na cílový soubor po dokončení).
Zdroj: opennet.ru
