Journal PyPI et les projets critiques

Posté par  (site web personnel) . Licence CC By‑SA.
32
11
juil.
2022

Demat' iNal,

En fin de semaine dernière, je reçois un courriel (oh, ce terme doucement désuet) des mainteurs de PyPI me félicitant pour mes trois projets promus "projets critiques", ce qui, à l'instar de mère-grand félicitant un jeune homme d'être costaud, puis s'empressant de lui demander de ranger sa valise dans le wagon TGV, me demande de mettre en place une authentification à deux-facteurs pour mon compte PyPI.

Petit retour sur cette expérience.

Déjà on comprend la motivation : Il y a eu plusieurs attaques par le passé sur de dépôt PyPI permettant de monter des "supply chain attack", certaines se reposant sur la prise de contrôle d'un compte de mainteneur sur PyPI [0], les mainteneurs du dépôt font de leur mieux.

Ensuite la 2FA, comme c'est souvent le cas avec la sécu, ça fait bien sûr un peu ch**r car ça rajoute une (petite) étape entre nous et le code. Un peu comme les tests. Mais au final ça ajoute une bonne propriété à notre projet (un peu comme les tests).

Reste qu'il faut la mettre en place, et que si ça implique d'ajouter une appli sur le smartphone, c'est pour moi assez rédhibitoire. Heureusement ça reste dans le cas de PyPI assez ouvert, et on peut soit

  1. utiliser une appli sur un malinphone
  2. passer par un générateur d'OTP se basant sur un secret partagé du genre [1]
  3. utiliser un générateur matériel gracieusement fourni par PyPI [2]

Je trouve l'effort de diversité ici très louable, et ça diminue bien le frein d'entrée.

En papillonant sur la toile, je me suis rendu compte que certains développeurs ne voient pas d'un bon œil le fait que leur projet reçoivent une telle promotion, associée à de nouvelles contraintes dont [3]. L'argumentaire est intéressant : je donne déjà de mon temps pour dev un projet, svp pas de poids en plus pour moi, je fais ça pour le plaisir. Et si une entreprise repose sur mon taf et a besoin de propriétés "sécu" qu'elle n'hésite pas à me contacter.

On notera que pour être désigné comme projet critique, il faut être parmi les 1% les plus téléchargés d'après https://pypistats.org/ et que l'esquive ici consiste à supprimer le paquet de l'index PyPI puis de le réuploader (avec toutes les versions intermédiaires si on est sympa) pour remettre les compteurs à zéro (temporairement).

[0] https://www.reddit.com/r/Python/comments/uwhzkj/i_think_the_ctx_package_on_pypi_has_been_hacked/
[1] https://www.nongnu.org/oath-toolkit/oathtool.1.html
[2] https://pypi.org/security-key-giveaway/
[3] https://nitter.net/untitaker/status/1545465529187565569

  • # sujet

    Posté par  . Évalué à 9.

    L'argumentaire est intéressant : je donne déjà de mon temps pour dev un projet, svp pas de poids en plus pour moi, je fais ça pour le plaisir.

    On pourrait aussi dire ça de la part de pypi, ils fournissent gracieusement une plateforme, pas besoin d'avoir de boulot supplémentaire pour tracker les malwares.

    Bon c'est très manichéen comme raisonnement. Mais je trouve que dire "moi je donne déjà mon temps" alors que c'est le même principe en face, c'est un peu léger comme argument.

    « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

    • [^] # Re: sujet

      Posté par  (site web personnel) . Évalué à 10.

      Je ne pense pas que ce soit le message que veut faire passer l'auteur. Cf la fin de la phrase : "Et si une entreprise repose sur mon taf et a besoin de propriétés "sécu" qu'elle n'hésite pas à me contacter".

      Cela ne semble viser ni pypi, ni les empaqueteurs.

      • [^] # Re: sujet

        Posté par  . Évalué à 5.

        Sauf que c'est pypi qui se retrouve à distribuer des malwares et à devoir faire le boulot pour nettoyer ça.

        « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

    • [^] # Re: sujet

      Posté par  (site web personnel) . Évalué à 6. Dernière modification le 11 juillet 2022 à 11:33.

      Je partage largement ton point de vue. Il n'y a pas à ma conaissance d'entreprise derrière PyPI, c'est un projet communautaire, autant essayer d'améliorer l'existant ensemble, que chacun donne un peu du sien me semble plutôt normal.

  • # Et le surcout du support

    Posté par  (site web personnel) . Évalué à 8.

    Un point à prendre en compte aussi pour le 2FA, comme lu sur twitter, c'est le coût pour le support.

    Avec 2 facteurs, tu as quand même plus de change d'être coincé dehors, surtout si tu ajoutes des appareils électroniques (telephone, clé, etc).

    Je passe régulièrement vérifier que mes comptes qui sont en 2FA pour m'assurer que mon plan de secours marche (eg, une 2eme clé U2F, etc), et ça me prends du temps.

    Donc j'imagine qu'en effet, vu la taille de PyPi et co, un souci va forcément arriver.

    • [^] # Re: Et le surcout du support

      Posté par  . Évalué à 3.

      J'utilise keepassXC en secours, ça marche.

      • [^] # Re: Et le surcout du support

        Posté par  (site web personnel) . Évalué à 6.

        Je ne pense pas que ça soit une bonne idée, mais je suis pas sur de voir comment tu utilises ça sans que ça soit un souci.

        Si tu utilises keepassXC pour tes mots de passes (c'est son but), et pour les codes de 2FA (que ça soit les codes de secours, ou pour faire de l'OTP), tu n'as au final qu'un seul facteur sous certaines conditions vu qu'une personne ayant la main sur le compte peut à terme avoir tout (vu que sous Linux, tu peux sans doute faire un ptrace par défaut sur tes processus, etc).

        Ensuite, ça suffit pour se protéger des fuites de mot de passes et c'est déjà pas mal.

        • [^] # Re: Et le surcout du support

          Posté par  . Évalué à 4.

          Je ne sais pas ce qu'il fait, mais on peut envisager :

          • utiliser 2 fichiers de base de données différents avec un déchiffrement différent sur chacun
          • utiliser un fichier de clef pour le déchiffrer, il te faut le fichier et la passe phrase de ce fichier pour y accéder

          Est-ce que ça reste pas plus faible qu'un OTP distinct je ne sais pas.

          https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

          • [^] # Re: Et le surcout du support

            Posté par  (site web personnel) . Évalué à 4.

            Alors que j'aurais peur avec la première solution, c'est de m'apercevoir trop tard que j'ai oublié le mot de passe du 2eme fichier.

            Et pour la 2nde solution, ça repousse le souci sur le fichier de clef pour déchiffrer.

        • [^] # Re: Et le surcout du support

          Posté par  . Évalué à 5.

          Alors, si tu as ton keepass sur téléphone, tu es aussi avec un seul facteur (bon, l'isolation est sans doute un peu mieux).

          « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

          • [^] # Re: Et le surcout du support

            Posté par  (site web personnel) . Évalué à 4.

            En effet. Je pense que mon tel a une meilleur isolation, et j’exécute moins de truc dessus mais c'est un souci quand même.

            J'utilise pas keepass du tout, mais j'ai mon firefox connecté pour m'envoyer des onglets, et donc il a aussi accés aux mots de passe, donc c'est pareil (avec un logiciel séparé pour le 2FA quand il y a besoin)

            C'est pour ça que je favorise les clés U2F quand c'est possible (et quand on peut en avoir en double.. looking at you amazon).

  • # OTP

    Posté par  . Évalué à 8.

    juste pour rappel, pour éviter google authenticator, il y a FreeOTP+ sur android qui fonctionne bien, et comme l'auteur du journal semble ne pas vouloir d'une appli sur smartphone, il est possible de configurer des codes OTP sur KeepassXC (sur desktop Linux)

    « Le pouvoir des Tripodes dépendait de la résignation des hommes à l'esclavage. » -- John Christopher

    • [^] # Re: OTP

      Posté par  . Évalué à 8.

      Et ça fonctionne aussi comme alternative à l'authenticator de microsoft.

      • [^] # Re: OTP

        Posté par  (site web personnel, Mastodon) . Évalué à 4.

        Ah et comment tu l’utilises ? Je me retrouve avec un qr code d’une url en phonefactor:// et je ne sais quoi en faire (et FreeOTP+ non plus). Quel procédure as-tu utilisé ?

        • [^] # Re: OTP

          Posté par  . Évalué à 5.

          Je suis passé par https://mysignins.microsoft.com/security-info, security info et là add sign-in method, authenticator app, clic sur le lien "I want to use a different authenticator app" et le lien du QR code est en otpauth://

          • [^] # Re: OTP

            Posté par  . Évalué à 1.

            Donc, ça ne marche pas plus en alternative à MS Authenticator que n'importe quelle autre application TOTP..

            • [^] # Re: OTP

              Posté par  . Évalué à 5.

              Ben pour moi c'est ce que Elfir3 a dit, il a souligné que FreeOTP+ fonctionnait aussi en remplacement de MS Authenticator, pas que c'était mieux que d'autres.

              • [^] # Re: OTP

                Posté par  . Évalué à 1.

                Oui, mais ce qu'il explique ne remplace pas MS Authenticator, il t'explique comment paramétrer ton compte MS pour utiliser un autre type d'OTP…

                • [^] # Re: OTP

                  Posté par  . Évalué à 4.

                  Avoir la possibilité d'utiliser une autre application, même si elle utilise pas le même protocol, ça reste une alternative. Je n'ai pas MSA d'installé et j'arrive à me connecter.

                  Donc non, mon explication ne remplace pas MSA, mais FreeOTP+ avec la méthode pour utiliser OTP le permet bien.

                  Et pour le complément d'info : https://github.com/freeotp/freeotp-android/issues/109

                  • [^] # Re: OTP

                    Posté par  . Évalué à 3. Dernière modification le 15 juillet 2022 à 09:46.

                    Disons, que oui, ça fait le taf, dans un contexte où tu paramètres toi-même le 2FA, sur ton compte Office 365, par exemple. Dans mon entreprise, on vend une solution, entre autre, pour la gestion des OTPs sur un support matériel. On a le cas d'une filiale d'un grand groupe français où le 2FA est paramétré directement par la DSI du groupe sur l'AD, et ils ont laissé le réglage par défaut, c'est à dire avec MS Authenticator (et ses QR en phonefactor://...).

                    Dans ce cas là, à ma connaissance, il n'y a pas de soft qui permette de fournir une alternative… et la solution proposée n'en est pas une1.

                    ¹ : et effectivement, pour les DSI et utilisateurs qui ont la main sur leurs paramétrages, on propose la même solution pour utiliser une alternative à MSAuthenticator, la notre !

                    • [^] # Re: OTP

                      Posté par  (site web personnel, Mastodon) . Évalué à 4.

                      Ce qui est mon cas. Je n’ai pas d’url en otpauth://… mais bien en phonefactor://… en suivant la même procédure.

                      Je pense que c’est une config de la DSI dans l’AD. Donc pour moi point de salut. Je vais continuer d’utiliser le téléphone que j’ai demandé expressément (et qu’il faut que je pense à charger de temps en temps) avec juste l’appli ms authenticator dessus. (Car non je veux pas installer ça sur mon tel perso)

                      • [^] # Re: OTP

                        Posté par  (site web personnel, Mastodon) . Évalué à 5.

                        Toute façon faut jamais mêler perso et pro !

                        “It is seldom that liberty of any kind is lost all at once.” ― David Hume

  • # Problème

    Posté par  . Évalué à 4. Dernière modification le 12 juillet 2022 à 13:47.

    L'argumentaire est intéressant : je donne déjà de mon temps pour dev un projet, svp pas de poids en plus pour moi, je fais ça pour le plaisir. Et si une entreprise repose sur mon taf et a besoin de propriétés "sécu" qu'elle n'hésite pas à me contacter.

    Moi je pense que c'est un véritable problème. Ce mécanisme de pypi n'est que la conséquence de quelque chose qui est déjà présent et qui ne change pas avec le fait que tu détruit et reconstruit ton package (je doute que pypi ne réagisse pas à ça au bout d'un moment). La popularité de ton code donne de facto une criticité plus importante à ton projet. Et ce même si aucune entreprise n'est dans la boucle.

    Tu parle de s'attaquer au compteur mais c'est pas le fond du problème.

    Et c'est aujourd'hui juste pour les 1% les plus populaire, mais je ne serais pas surpris que ça devienne la règle inconditionnelle (comme le fait github).

    https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

    • [^] # Re: Problème

      Posté par  (site web personnel) . Évalué à 0.

      C'est en effet un autre signe d'une industrialisation grandissante de notre domaine.

      Mais ça risque d'avoir les mêmes effets que systemd sous linux: la majorité va l'accepter sans trop rechigner, mais les artisans (sans le sens de l'"art") vont y voir une barrière supplémentaires et une perte de contrôle.

      Un bien ou un mal, je ne suis pas juge là dessus.

      Le vrai souci c'est que ce genre de mécanisme tu l'as sur ton lieu de travail (ce qui est totalement justifié), mais si on te le mets sur ton hobby, tu fais le lien entre les deux, et là, bye bye le côté hobby, tu retrouves dans le mindset du boulot, sans la récompense extrinsèque par contre ^

      On va me dire que l'on a aussi ce genre de mécanisme d'authentification dans steam et cie, mais quand je joue, mon cerveau ne fait pas de comparaison avec le travail, alors que quand je code, le risque est bien plus grand :D

      • [^] # Re: Problème

        Posté par  . Évalué à 7.

        Je comprends pas l'argument.

        Dans l'avenir l'authentification multi facteur va devenir la norme dans tout ce qui est critique en premier puis partout quand on se rendra compte que tout est critique. C'est pas une question d'entreprise. Ta banque et tous les endroits où tu met de l'argent (tout ce qui est paiement en ligne), tous les endroits qui représentent trop ton identité (ton compte mail et les réseau sociaux si tu es une personne publique).

        Dans l'avenir les gens auront eu affaire à ce genre de mécanisme avant d'avoir connu le monde de l'entreprise. Je vois pas pourquoi ils ferraient le lien. En fait je vois même pas en quoi le fait que ça puisse ressembler à ton travail pose problème. Coder, commiter, gérer des bugs,… c'est le travail de pleins de gens dont le hobby est aussi de participer à du code libre.

        On aurait pu dire la même chose pour l'utilisation de mot de passe, de nom de domaine, de tls,…

        https://linuxfr.org/users/barmic/journaux/y-en-a-marre-de-ce-gros-troll

  • # Depêche

    Posté par  . Évalué à 3.

    Je viens de soumettre à modération, une dépêche sur l'annonce de piPY du déploiement du 2FA pour les projets critique.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.