L'introduzione dell'autenticazione a due fattori in PyPI ha portato a un incidente con la rimozione di un pacchetto popolare

Gli sviluppatori del repository dei pacchetti Python PyPI hanno pubblicato un piano per l'implementazione obbligatoria dell'autenticazione a due fattori per i pacchetti considerati critici. La loro importanza è determinata dal numero di download e la modifica sarà applicata agli account dei manutentori e dei proprietari dei progetti associati all'1% dei pacchetti con il maggior numero di download negli ultimi 6 mesi. Considerando che attualmente il repository PyPI include oltre 350.000 pacchetti, l'autenticazione a due fattori sarà applicata a circa 3.500 pacchetti. Per verificare se il proprio account è incluso nella lista, è stata preparata una pagina speciale. La data esatta per l'introduzione dell'autenticazione a due fattori obbligatoria non è ancora stata definita, ma si prevede che avverrà nei prossimi mesi.

A differenza del passaggio all'autenticazione a due fattori per i progetti RubyGems, NPM e GitHub, in PyPI verrà implementata inizialmente una schema che prevede l'uso raccomandato di un token hardware con chiavi di accesso. La ragione per l'uso raccomandato di token e del protocollo WebAuthn è la maggiore sicurezza rispetto alla generazione di password monouso (la possibilità di utilizzare TOTP al posto dei token sarà disponibile come opzione).

I token potranno essere ottenuti gratuitamente: Google ha sponsorizzato l'iniziativa e ha messo a disposizione 4.000 chiavi Titan per il progetto. Ogni manutentore può richiedere gratuitamente due token con interfaccia USB-C o USB-A. Il secondo token viene inviato come riserva nel caso di guasto o smarrimento del principale, per ridurre al minimo il rischio di perdita di accesso al repository e liberare i programmatori dalla necessità di affrontare una procedura complessa per il recupero dell'accesso.

Sfortunatamente, i token possono essere inviati solo in Austria, Belgio, Canada, Francia, Germania, Italia, Giappone, Spagna, Svizzera, Regno Unito e Stati Uniti. I manutentori di altri paesi possono acquistare autonomamente token compatibili con le specifiche FIDO U2F, come i token Yubikey e Thetis. In alternativa, è anche prevista la possibilità di utilizzare applicazioni di autenticazione basate su password monouso che supportano il protocollo TOTP, come Authy, Google Authenticator e FreeOTP.

L'iniziativa non è stata esente da incidenti. L'autore del pacchetto Atomicwrites, con 6 milioni di download al mese e 38 milioni in sei mesi, ha rifiutato di passare all'autenticazione a due fattori e, per escludere il suo pacchetto dall'elenco dei pacchetti critici, ha tentato di azzerare il contatore dei download. Per farlo, inizialmente ha eliminato il pacchetto e poi ha caricato una nuova versione. Ci si aspettava che tale manovra azzerasse solo il contatore, ma con sorpresa dello sviluppatore, tutte le vecchie versioni sono state eliminate dal repository, causando problemi ai progetti dipendenti dalla libreria, che alcuni sviluppatori hanno paragonato all'incidente causato dall'eliminazione del pacchetto left-pad in NPM.

Il problema è stato aggravato dal fatto che, dopo l'eliminazione, l'autore di atomicwrites non è riuscito a caricare le vecchie versioni, il cui ripristino è stato possibile solo il giorno successivo all'intervento degli amministratori di PyPI. Dopo quanto accaduto, l'autore del pacchetto ha deciso di interrompere lo sviluppo di atomicwrites e di classificare il pacchetto come obsoleto. Tra le motivazioni si cita il fatto che sviluppa il progetto come hobby nel suo tempo libero e che l'emergere di ulteriori requisiti, che complicano il lavoro, non vale il tempo speso per la manutenzione gratuita di un pacchetto così popolare. L'autore di atomicwrites sostiene che preferirebbe semplicemente scrivere codice per divertimento, e che le preoccupazioni per una protezione aggiuntiva contro le catture da parte di malintenzionati possono essere gestite da chi è disposto a pagare per questo.

La libreria atomicwrites contiene circa 200 righe di codice e offre funzioni per la scrittura atomica di file. Come alternativa, si possono utilizzare le chiamate standard os.replace e os.rename (l'operazione consiste nella scrittura in un file con un nome temporaneo e nella rinomina in un file di destinazione al termine della scrittura).

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster