Une vulnérabilité dans Python permettant d'invoquer des commandes systÚme à partir de scripts isolés.

Méthode de contournement des systÚmes d'exécution isolée en Python publiée, basée sur une vulnérabilité bien connue survenue dans Python 2.7, détectée en 2012 et toujours non corrigée dans Python 3. Cette vulnérabilité permet, grùce à un code Python spécialement conçu, d'accéder à de la mémoire déjà libérée (Use-After-Free) dans CPython. On pensait à l'origine que cette vulnérabilité ne posait pas de risque de sécurité et ne pouvait provoquer un crash de script que dans de trÚs rares cas, généralement artificiellement créés.

Un chercheur en sĂ©curitĂ© sous le pseudonyme kn32 s'est intĂ©ressĂ© au problĂšme et a rĂ©ussi Ă  prĂ©parer un exploit fonctionnel, permettant d'appeler n'importe quelle commande systĂšme sans avoir accĂšs direct Ă  des mĂ©thodes telles que os.system. L'exploit est rĂ©alisĂ© en pur Python et fonctionne sans importation de bibliothĂšques externes et sans installation du gestionnaire « code.__new__ ». Seul « builtin.__id__ » est utilisĂ© comme hook, qui est gĂ©nĂ©ralement autorisĂ©. D'un point de vue pratique, le code proposĂ© peut ĂȘtre utilisĂ© pour contourner des mĂ©canismes d'isolation dans divers services et environnements (par exemple, dans des environnements d'apprentissage, des interfaces en ligne, des gestionnaires intĂ©grĂ©s, etc.) qui permettent l'exĂ©cution de code Python tout en limitant les appels disponibles et en interdisant l'accĂšs Ă  des mĂ©thodes telles que os.system.

Le code proposĂ© est une analogie de l'appel Ă  os.system, fonctionnant par l'exploitation d'une vulnĂ©rabilitĂ© dans CPython. L'exploit fonctionne avec toutes les versions de Python 3 sur des systĂšmes x86-64 et dĂ©montre une stabilitĂ© dans Ubuntu 22.04, mĂȘme avec les modes de protection PIE, RELRO et CET activĂ©s. Son fonctionnement consiste Ă  obtenir Ă  partir du code Python l'adresse d'une des fonctions dans le code exĂ©cutable de CPython. À partir de cette adresse, l'adresse de base de CPython en mĂ©moire et l'adresse de la fonction system() dans l'instance de libc chargĂ©e en mĂ©moire sont calculĂ©es. Finalement, il initie un saut direct vers une adresse spĂ©cifique system en remplaçant le pointeur du premier argument par la chaĂźne «\/bin\/sh».

Une vulnérabilité dans Python permettant d'invoquer des commandes systÚme à partir de scripts isolés.


Source : opennet.ru
Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS đŸ”„ Acheter un hĂ©bergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster