1. #1
    Chroniqueur Actualités
    Avatar de Michael Guilloux
    Homme Profil pro
    Consultant
    Inscrit en
    juillet 2013
    Messages
    1 951
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Consultant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : juillet 2013
    Messages : 1 951
    Points : 61 842
    Points
    61 842
    Billets dans le blog
    2

    Par défaut Un développeur JavaScript estime que l'écosystème Node.js est « chaotique et peu sûr »

    Un développeur JavaScript estime que l'écosystème Node.js est « chaotique et peu sûr »
    Et voici pourquoi

    Améliorer ou étendre les fonctionnalités d'un langage, un EDI ou une plateforme quelconque au moyen d'extensions ou de packages est une pratique très populaire dans le monde moderne de la technologie. Cela permet d'éviter qu'un programme devienne un bloatware puisqu'il ne va intégrer que les fonctionnalités les plus basiques et les plus communes, et laisser à l'utilisateur le soin d'installer les fonctionnalités supplémentaires dont il aura besoin.

    Aujourd'hui, tous les langages semblent fonctionner de cette manière : se doter de certaines fonctionnalités basiques ou communes et permettre aux utilisateurs d'installer des packages pour des fonctionnalités spécifiques. Précisons aussi qu'un package peut avoir des dépendances, c'est-à-dire nécessiter l'installation d'autres packages pour fonctionner. On peut donc se retrouver facilement avec de nombreuses dépendances imbriquées dans le code d'un logiciel.

    Cette manière de fonctionner peut toutefois être un problème pour le développement logiciel : maintenance forcée si une dépendance est supprimée ou encore propagation rapide d'un code malveillant à des milliers, voire des millions, de logiciels si une dépendance est infectée ou contient une porte dérobée. L'écosystème Node.js n'est pas épargné par ce problème. D'ailleurs, il en serait sérieusement affecté. C'est ce que veut exprimer Casper Beyer, développeur JavaScript et blogueur, lorsqu'il affirme que « l'écosystème Node.js est chaotique et peu sûr ».


    Casper Beyer, développeur JavaScript et blogueur

    Il insiste notamment sur le problème de sécurité qui découle des paquets. Casper Beyer explique que cela est amplifié par le fait que les développeurs appliquent un peu trop littéralement le principe de ne pas réinventer la roue : créer des paquets uniquement pour éviter aux autres développeurs d'écrire une seule ligne de code.

    C'est le cas par exemple des paquets comme is-odd ou is-number. Le paquet is-odd permet de vérifier si un nombre est un nombre impair, juste ça, et il aurait environ 500 000 de téléchargements par jour. « En passant par l'arbre des dépendances, j'ai trouvé que des centaines de projets en dépendent, mais surtout des grands projets comme Webpack, BrowserSync et Babel », ajoute Casper Beyer. Le paquet is-number aurait, quant à lui, près de deux millions de téléchargements par jour et le paquet is-odd en dépend.

    Un autre paquet is-even (qui permet de vérifier si un nombre est un nombre pair) montre encore le caractère parfois redondant de certains paquets, puisqu'il dépend du paquet is-odd. C'est vrai qu'il ne faut pas réinventer la roue, mais en quoi utiliser l'opération de négation ici serait réinventer la roue ? S'interroge le développeur JavaScript. Pour lui, cela revient simplement à donner beaucoup trop de puissance à un paquet qui aurait dû être un simple module ou faire appel à un opérateur élémentaire. Trop de puissance parce que, selon lui, ces dépendances qu'il qualifie de « non-sens » sont difficiles sinon presque impossibles à auditer manuellement en raison de leur nombre. Ainsi, en général, personne ne se donne la peine de les auditer avant de les déployer. Donc n'importe qui peut les détourner et y insérer du code malveillant qui serait déployé presque partout où JavaScript est exécuté.

    Il souligne qu'il y a des milliers de paquets aussi triviaux (écrits par des centaines d'auteurs anonymes) qui ont des millions de téléchargements par semaine et dont de nombreux projets populaires en dépendent. Tout ce qu'il faut pour un auteur mal intentionné, c'est d'attendre jusqu'à ce que son paquet ait une portée largement suffisante, puis publier une mise à jour avec une charge malveillante qui va se répandre comme une traînée de poudre. Cette stratégie a d'ailleurs déjà été utilisée par un tas d'extensions de navigateur qui ont fini par injecter dans leur code un mineur de cryptomonnaie et exploiter les machines des utilisateurs, bien qu'elles avaient au préalable été examinées par des humains.

    Cela dit, il invite les développeurs à être plus responsables : « Ne faites pas confiance aux gestionnaires de paquets, chaque dépendance est écrite par un développeur quelconque quelque part dans le monde et est un vecteur d'attaque potentiel. Cela s'applique à tous les gestionnaires de paquets, mais ces paquets à une ligne font en sorte qu'aucun effort n'est requis », dit-il. Il suggère aux développeurs d'éviter d'utiliser ces dépendances dites « non-sens » et d'écrire eux-mêmes leur code pour ces cas élémentaires, car « écrire du code basique ne réinvente pas la roue. » Il pense aussi que les développeurs devraient auditer manuellement leurs dépendances.

    Source : Billet de Casper Beyer

    Et vous ?

    Qu'en pensez-vous ?
    Le problème de dépendances triviales est-il propre l'écosystème Node.js ? Ou est-ce dans le monde Node.js qu'il est pire ?
    Avez-vous l'habitude d'auditer vos dépendances ?
    Comment trouvez-vous l'écosystème Node.js ? Quels sont ses avantages et inconvénients ?

    Voir aussi :

    Non, Microsoft n'a pas abandonné C++, C#, etc. pour réécrire ses outils et logiciels en JavaScript : un développeur de la firme fait des précisions
    Hyperapp, une bibliothèque JavaScript de 1 ko pour la création d'applications Web front-end, en quoi diffère-t-elle des bibliothèques existantes ?
    Quel est l'intérêt d'écrire ou réécrire un logiciel en JavaScript ? Partagez votre expérience
    npm : une porte dérobée a été découverte dans le paquet getcookies qui a des dépendances imbriquées avec le paquet populaire Mailparser
    npm : un bogue avec le code d'erreur « 418 I'm a teapot » a affecté le registre, empêchant l'utilisation du client npm derrière un proxy
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  2. #2
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Architecte Web / Android
    Inscrit en
    août 2003
    Messages
    5 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Architecte Web / Android
    Secteur : Industrie

    Informations forums :
    Inscription : août 2003
    Messages : 5 044
    Points : 13 259
    Points
    13 259

    Par défaut

    C'est la force et la faiblesse de node.
    D'un coté c'est tellement pratique d'installer un paquet en une ligne de code et de gagner de nombreuses heures de développement et d'un autre c'est tellement frustrant de voir le nombre de dépendance qu'on récupère sans vraiment s'en rendre compte.
    Très clairement des paquets comme iseven c'est juste ridicule.

    J'ai récemment fait un petit outil en js qui s'utilise en ligne de commande.
    J'ai ajouté 5 dépendances
    - Une gestion des paramètres de ligne de commande
    - Une gestion des couleurs d'affichage
    - Une gestion de zip
    - Une progressbar
    - Un utilitaire qui permet de simuler un rm -Rf

    Au final je récupère 62 dépendances. J'ai parcourus le code des 5 dépendances que j'ai ajouté pour être à peut près certains de ce que j'allais utiliser , mais j'ai clairement pas le temps de vérifier les dépendances de dépendances de dépendances...
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Modérateur
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2005
    Messages : 3 317
    Points : 12 465
    Points
    12 465

    Par défaut

    C'est devenu tellement lourd de tirer la terre entière pour une misérable dépendance que ça devient un argument de certaines libs de dire "nodeps".
    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

  4. #4
    Membre expérimenté
    Profil pro
    Développeur informatique
    Inscrit en
    avril 2009
    Messages
    508
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : avril 2009
    Messages : 508
    Points : 1 336
    Points
    1 336

    Par défaut

    Cela m'a fait penser à ce billet : https://medium.com/@jdan/i-peeked-in...t-b89f63d21558 (bon ça a 2 ans donc les trucs comme la photo du développeur dans le code ne sont plus d'actualité).

  5. #5
    Membre extrêmement actif
    Profil pro
    Développeur
    Inscrit en
    mars 2012
    Messages
    1 645
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur
    Secteur : Communication - Médias

    Informations forums :
    Inscription : mars 2012
    Messages : 1 645
    Points : 2 714
    Points
    2 714

    Par défaut

    T'as oublié un slash dans ta commande lol:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    rm -rf / :aie::aie::aie::aie:
    D'où l'importance de connaitre les dev derrières les paquets et n'utilisez que des paquets majeurs.

    Pareil pour les libs Perl ou Python.
    Grosse galère quand il faut utiliser une nouvelle lib ayant plein de déps sans pouvoir utiliser cpan.

    Rem: concernant le bitcoin ou autre code frauduleux, on arrive toujours à remonter à celui qui a injecté ces modifs.
    D'où l'importance de ne prendre que des dev en qui on peut faire confiance.
    Si la réponse vous a aidé, pensez à cliquer sur +1

  6. #6
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    août 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : août 2007
    Messages : 1
    Points : 1
    Points
    1

    Par défaut les modulo

    faire des packages pour tester si un nombre est pair ou non est contraire a la simplicité.
    en math un nombre pair c'est n modulo 2 = 0. il n'y a pas besoin de package pour ca !

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    juillet 2018
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : juillet 2018
    Messages : 1
    Points : 1
    Points
    1

    Par défaut Question de noob

    Question de noob : du coup, est-ce qu'il faut utiliser "Webpack, BrowserSync et Babel" ? Si oui, quelles seraient les différentes approches pour limiter les risques décrits ?

  8. #8
    Modérateur
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : août 2005
    Messages : 3 317
    Points : 12 465
    Points
    12 465

    Par défaut

    Aucun des projets que tu décris n'est une dependencies, il s'agit de devDependencies. L'auteur du billet parle exclusivement des dependencies, même si les paquets en devDependencies posent également problème.

    En gros le is-odd finira dans le livrable exécuté par le client, webpack ou babel non, ils vont servir à générer le livrable.
    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

  9. #9
    Membre à l'essai
    Homme Profil pro
    WANT
    Inscrit en
    juin 2011
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Finlande

    Informations professionnelles :
    Activité : WANT

    Informations forums :
    Inscription : juin 2011
    Messages : 7
    Points : 17
    Points
    17

    Par défaut

    La*bonne méthode a mes yeux est de dev pour les versions stables des distributions linux (debian, centos) et utiliser les versions packagée des bibliothéques, les mainteneurs des paquets fesant un minimum de revues. Oui cela fera que vous n’aurez pas la dernière feature a la mode mais vous pourrez quand elle sera stable.

  10. #10
    Candidat au Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    juin 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : juin 2018
    Messages : 2
    Points : 3
    Points
    3

    Par défaut outils de build

    bonjour,

    j'ai remplacé les outils de build pré-cités par :

    - "rollup" : bundles plus petits, config aisée par fichier export {... } ES6
    - "bublé" : moins de fonctionnalités ES6, maos plus rapide * 3 environ

    leur graphe de dépendances n'a pas l'air trop déconnant !

  11. #11
    Candidat au Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    février 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : février 2018
    Messages : 2
    Points : 4
    Points
    4

    Par défaut C'est la même chose pour les développements Java et .Net !

    Les constatations de l'auteur ne sont pas propres au seul langage node.js !

    Là où je travaille, aucune des dépendances n'est vérifiées ou auditées. On prend et on utilise car c'est gratuit.

    J'ai bien peur qu'un jour un énorme bug ou, plus grave, une malvaillance volontaire ne foute tout en l'air simplement parce que les responsables IT ont fait aveuglément confiance aux logiciels libres car cela ne leur coûtaient rien.

    Wait and see :-)

Discussions similaires

  1. Réponses: 49
    Dernier message: 13/12/2015, 14h13
  2. Un développeur estime que nous vivons dans l’âge des logiciels ratés
    Par Michael Guilloux dans le forum Débats sur le développement - Le Best Of
    Réponses: 111
    Dernier message: 07/12/2015, 13h32
  3. Un développeur estime que le développeur full stack est une chimère
    Par Olivier Famien dans le forum Actualités
    Réponses: 63
    Dernier message: 16/11/2015, 11h58
  4. Un développeur estime que Ruby on Rails est dépassé
    Par Olivier Famien dans le forum Ruby on Rails
    Réponses: 56
    Dernier message: 13/10/2015, 19h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo