Source: ReversingLabs — Dans un billet de recherche, les auteurs détaillent comment des scripts bootstrap historiques liés à zc.buildout et à l’ancien écosystème setuptools/distribute exposent des paquets PyPI à un scénario de prise de contrôle de domaine.

  • Des chercheurs de ReversingLabs ont identifié du code vulnérable dans des scripts bootstrap qui, lors de leur exécution, récupèrent et exécutent un installateur de « distribute » depuis python-distribute[.]org — un domaine abandonné et à vendre depuis 2014. Cette dépendance à un domaine codé en dur crée une fenêtre pour une prise de contrôle de domaine menant à l’exécution de code arbitraire si un attaquant rachète le domaine et y sert un script malveillant. ⚠️

  • Contexte packaging: avant la normalisation par la PyPA (PEP 517, adoption de setuptools), diverses approches coexistaient (distutils, setuptools, distribute, distutils2/packaging). zc.buildout fournissait un fichier bootstrap.py facilitant l’installation, avec support de setuptools et distribute. Bien que distribute ait été réintégré à setuptools en 2013, de nombreux projets ont continué à embarquer ces scripts, parfois encore invocables manuellement ou via Makefile. Les paquets mentionnés incluent notamment: slapos.core, tornado (script pour mainteneurs), pypiserver (supprimé récemment), imio.pm.locales (script retiré mais Makefile appelant toujours le script), pyquery (jusqu’en 2021), et d’autres.

  • Preuve de faisabilité: ReversingLabs a conçu un PoC utilisant le script bootstrap de slapos.core (écrit en Python 2), démontrant le flux qui aboutit à la tentative de récupération du script d’installation de distribute depuis le domaine vulnérable. Le script bootstrap peut être déclenché avec un drapeau forçant l’usage de « distribute ».

  • Chronologie du domaine: python-distribute[.]org a été abandonné en 2013, recréé brièvement, puis définitivement relâché en 2014 et « parqué » pour générer des revenus publicitaires. Depuis, n’importe quel tiers peut l’acquérir et y héberger un payload.

  • Cas comparatif: l’article cite la compromission de fsevents (npm) documentée par CVE-2023-45311, où un ressource cloud non réclamée a été détournée pour livrer des exécutables malveillants.

  • ReversingLabs indique que son modèle RL Spectra Assure Community alerte sur ce motif « DomainTakeover » dans des paquets affectés.

IoCs

  • Domaines/URLs:
    • python-distribute[.]org
    • fsevents-binaries[.]s3-us-west-2[.]amazonaws[.]com (contexte CVE-2023-45311)
  • SHA1 de scripts bootstrap (sélection fournie par ReversingLabs):
    • 357f2fe2684c54339fb78ff447d8cbc127071633
    • 76eccfddbec55f435145e2620826ba30e22e5653
    • 8285c1c8188f198e9440c97e8aed933704b32d82
    • df52f054feb6f2e0df2db1a22c5781d3c56e8ffa
    • e68c89e553a2e70380492bdb8cfb74c224456766
    • 3d4970cbd4540e4bf1dc67ca554228b6369629d8
    • 9f02932adcbafc7f4c681df66b597df10f34b134
    • 0cbb7df358b8772f4d5f2d346fe87bf6f5b911c1
    • b6664ae860ca4793e368abb0c569ddefcbc7ac96
    • 3cdd1cfcc254a382338588e406493924d4aadb4f
    • cc298ff510dee97bf5f8abac68bafc22bcfadc11

TTPs observés

  • Prise de contrôle de domaine pour détourner une chaîne d’approvisionnement.
  • Téléchargement/Exécution de script depuis un domaine codé en dur (pattern de « downloader »).
  • Abus de scripts bootstrap hérités et de Makefile pour déclencher l’exécution.
  • Ciblage de dépendances/outil de build (supply chain logicielle).

Conclusion: Il s’agit d’une publication de recherche visant à exposer un risque de supply chain lié à des scripts bootstrap obsolètes et à documenter les artefacts associés.

🧠 TTPs et IOCs détectés

TTP

[‘Prise de contrôle de domaine pour détourner une chaîne d’approvisionnement’, ‘Téléchargement/Exécution de script depuis un domaine codé en dur (pattern de « downloader »)’, ‘Abus de scripts bootstrap hérités et de Makefile pour déclencher l’exécution’, ‘Ciblage de dépendances/outil de build (supply chain logicielle)’]

IOC

{‘domains’: [‘python-distribute[.]org’, ‘fsevents-binaries[.]s3-us-west-2[.]amazonaws[.]com’], ‘hashes’: [‘357f2fe2684c54339fb78ff447d8cbc127071633’, ‘76eccfddbec55f435145e2620826ba30e22e5653’, ‘8285c1c8188f198e9440c97e8aed933704b32d82’, ‘df52f054feb6f2e0df2db1a22c5781d3c56e8ffa’, ’e68c89e553a2e70380492bdb8cfb74c224456766’, ‘3d4970cbd4540e4bf1dc67ca554228b6369629d8’, ‘9f02932adcbafc7f4c681df66b597df10f34b134’, ‘0cbb7df358b8772f4d5f2d346fe87bf6f5b911c1’, ‘b6664ae860ca4793e368abb0c569ddefcbc7ac96’, ‘3cdd1cfcc254a382338588e406493924d4aadb4f’, ‘cc298ff510dee97bf5f8abac68bafc22bcfadc11’]}


🔗 Source originale : https://www.reversinglabs.com/blog/bootstrap-script-exposes-pypi-to-domain-takeover-attack