Accueil Hacking News Class Pollution – Une variante de la pollution des prototypes affectant Python

Class Pollution – Une variante de la pollution des prototypes affectant Python

80
0

Un chercheur en sécurité a découvert une grave vulnérabilité de pollution de prototype dans le langage de programmation Python. L’exploitation de la faille entraîne des plantages d’, permettant potentiellement d’autres impacts également.

Variante de pollution de prototype trouvée dans Python

Un chercheur en sécurité indépendant, Abdulraheem Khaled, a récemment partagé des détails sur une vulnérabilité de pollution prototype affectant Python.

La pollution des prototypes est une vulnérabilité commune au langage de programmation JavaScript, qui permet aux attaquants de s’immiscer dans les prototypes existants. Un attaquant peut injecter des valeurs dans le prototype d’un objet de base (“polluer” le prototype) pour perturber les autres objets, et finalement compromettre l’application. De telles exploitations peuvent conduire à divers impacts, du déni de service à l’exécution de code à distance.

Dans son billet de blog, Khaled explique que la plupart des de pollution de prototype sont souvent signalées pour les apps JavaScript. Et d’autres langages basés sur des classes, comme Python, semblent immunisés contre de telles vulnérabilités.

Lire aussi :  Les vulnérabilités de Passwordstate pourraient exposer les mots de passe en clair.

Cependant, Khaled a expliqué comment il a pu observer des variantes de pollution de prototype dans Python, où la faille existe typiquement dans polluant l’attribut modifiable “_class_” dans les objets.

Comme indiqué dans son post,

Du point de vue d’un attaquant, nous sommes davantage intéressés par les attributs que nous pouvons remplacer/écrire pour pouvoir exploiter cette vulnérabilité plutôt que par les méthodes magiques. Comme notre entrée sera toujours traitée comme des données (str, int, etc.) et non comme du code réel à évaluer. Par conséquent, si nous essayons d’écraser l’une des méthodes magiques, cela entraînera le plantage de l’application lorsque nous essaierons d’invoquer cette méthode, car les données telles que les chaînes de caractères ne peuvent pas être exécutées.

Brièvement, pour démontrer la faille qu’il appelle “pollution de classe”, le chercheur a créé une instance de Employee class – une classe vide, puis a tenté de la polluer de manière à polluer également la classe parente. Pour cela, il a défini le __qualname__ à l’intérieur de __class__ en une chaîne de caractères et a ensuite pollué le __base__ attribut. Finalement, cela lui a permis de polluer le parent Employee classe. C’est ainsi qu’un adversaire peut polluer n’importe quelle classe parentale.

Lire aussi :  Une grave vulnérabilité de contournement de 2FA a affecté Facebook et Instagram.

Le chercheur a expliqué que Python applique certaines restrictions sur la modification des object attributs de classe – la classe parente de toutes les classes. Par conséquent, un attaquant doit procéder en conséquence, en exploitant les fonctions de fusion non sécurisées, pour réaliser une pollution de classe dans Python.

Et maintenant ?

Pour l’instant, le chercheur a confirmé n’avoir trouvé aucun exploit complet avec un impact autre que DoS. Néanmoins, il pense qu’un adversaire peut exploiter la faille pour obtenir divers autres résultats, comme l’écrasement de la clé secrète dans l’application Web Flask pour la signature des sessions, ou le détournement de chemin.

Fais-nous part de tes réflexions dans les commentaires.

Article précédentCinq tendances en matière de sécurité des données auxquelles les organisations doivent faire face.
Article suivantNouvelles de l’IdO – Perspectives de l’IdO