Protection contre la confusion des dépendances en PHP avec Composer





Alex Birsan a récemment publié un article "Confusion de dépendance: comment j'ai piraté Apple, Microsoft et des dizaines d'autres sociétés", dans lequel il expliquait comment il utilisait des gestionnaires de packages au niveau du langage tels que npm (Javascript), pip (Python) et gems ( Ruby) pour forcer les entreprises à installer et exécuter du code malveillant sur leur infrastructure.



Le problème vient du fait que les entreprises se réfèrent aux packages internes par leur nom, par exemple my-internal-package



, et qu'un attaquant publie un package du même nom dans le registre central / référentiel des packages de langue (pour PHP, il s'agit de packagist.org ) my-internal-package



ayant une version supérieure. Les entreprises ont ensuite installé et exécuté ces packages malveillants au lieu de leurs packages internes, car leur gestionnaire de packages choisissait un numéro de version plus élevé dans le référentiel de packages standard au lieu du référentiel interne.



Parlant de la solution à ce problème pour Composer et Packagist sur Twitter, Geordie a résumé les différentes mesures que Composer et Packagist utilisent pour protéger les entreprises de ce grave problème:



  1. Composer , , my-company/our-internal-pkg



    . packagist.org. Packagist.org . my-company/



    . packagist.org ( ), , my-company/dummy-pkg



    , , , . my-company/my-internal-package



    , «» packagist.org.
  2. Composer 2.0, . , , . packagist.org, . , , , Composer .
  3. Private Packagist , packagist.org, , , . Private Packagist Composer 1.x , Composer 2.
  4. Private Packagist packagist.org , Composer. , .
  5. Composer (lock file) URL . composer install, , . , , .
  6. Avec Composer 2, vous pouvez exclure le chargement des noms de packages ou des modèles pour chaque référentiel. Ainsi, vous pouvez être sûr que même les paquets mal orthographiés qui n'existent pas sans un préfixe enregistré sur packagist.org ne pourront pas télécharger à partir de packagist.org en remplaçant la configuration par défaut dans composer.json. Ce filtre d'exclusion peut également être utilisé pour des référentiels de packages tiers supplémentaires.




    "repositories": {
        "private-repo": {
            "url": "https://my-repo.internal"
        }
        "packagist.org": {
            "url": "https://repo.packagist.org",
            "exclude": ["myprefix/*"]
        }
    }
      
      





Les attaques contre la chaîne d'approvisionnement similaires à celles décrites par Alex constituent une menace sérieuse pour les entreprises et ont été soulignées dans les actualités ces derniers temps, il est donc important que votre entreprise comprenne les risques auxquels elle est confrontée et prenne des mesures pour les atténuer.






Publicité



Vous recherchez un VDS pour le débogage de projets, un serveur pour le développement et le déploiement? Vous êtes définitivement notre client :) Facturation quotidienne des serveurs, créez votre propre configuration en quelques clics, les licences anti-DDoS et Windows sont déjà incluses dans le prix.






All Articles