CharonXray: hybrid detection of vulnerabilities in Python native extensions
Ημερομηνία
2026-02-05
Συγγραφείς
Τίτλος Εφημερίδας
Περιοδικό ISSN
Τίτλος τόμου
Εκδότης
Επιβλέπων / ουσα
Διαθέσιμο από
Περίληψη
Τα σύγχρονα συστήματα Python βασίζονται ολοένα και περισσότερο σε εγγενείς επεκτάσεις γραμμένες σε C/C++ για να πετύχουν αυξημένη απόδοση και λειτουργικότητα πέρα από την Python. Ωστόσο, οι εγγυήσεις ασφάλειας της Python δεν ισχύουν για τις εγγενείς επεκτάσεις, επανεισάγοντας κινδύνους ασφάλειας μνήμης και άλλες ευπάθειες χαμηλού επιπέδου. Έτσι, ευπάθειες μπορεί να προέρχονται από εγγενή κώδικα αλλά να είναι προσβάσιμες μέσω φαινομενικά ασφαλών Python διεπαφών. Η ανίχνευσή τους απαιτεί ανάλυση που υπερβαίνει τα όρια γλωσσών και μοντελοποιεί τις γέφυρες μεταξύ καλέσιμων οντοτήτων της Python και υλοποιήσεων σε εγγενή κώδικα.
Η παρούσα διπλωματική εργασία εξετάζει ευπάθειες που προκύπτουν από αλληλεπιδράσεις Python και εγγενή κώδικα, αναδεικνύοντας περιορισμούς της στατικής ανάλυσης, η οποία συχνά αποτυγχάνει να εντοπίσει δυναμικά δημιουργούμενες γέφυρες κατά τον χρόνο εκτέλεσης. Αυτό οδηγεί σε εσφαλμένη ταξινόμηση ευάλωτων εγγενών διαδρομών ως μη προσβάσιμων και σε ελλιπή κάλυψη. Για την αντιμετώπιση του προβλήματος, συνδυάζεται το στατικό εργαλείο διαγλωσσικής ανάλυσης CHARON με το δυναμικό εργαλείο PyXray, το οποίο ανακτά τις γέφυρες μέσω ανάλυσης της δομής των αντικειμένων κατά τον χρόνο εκτέλεσης. Το CharonXray συνδυάζει τη στατική διαγλωσσική ανάλυση με δυναμικά ανακτημένες γέφυρες, βελτιώνοντας τη μοντελοποίηση εγγενούς προσβασιμότητας. Η προσέγγιση αξιολογήθηκε σε μεγάλο σύνολο πραγματικών Python πακέτων με εγγενείς επεκτάσεις. Τα αποτελέσματα δείχνουν ότι το PyXray εντοπίζει σημαντικά περισσότερες γέφυρες (57,5% περισσότερα πακέτα) και ότι η ενσωμάτωσή τους αυξάνει τα πακέτα και τις ροές εγγενών ευπαθειών που εντοπίζονται. Το CharonXray αποκάλυψε νέες ευπάθειες σε ευρέως χρησιμοποιούμενα πακέτα, όπως aubio, autobahn-python, aioquic και pymunk, συμπεριλαμβανομένων διαρροών μνήμης, υπερχειλίσεων ακεραίων, σφάλματα διαίρεσης με το μηδέν και αποαναφορές NULL δεικτών. Συμπερασματικά, η υβριδική ανάλυση είναι κρίσιμη για ακριβή μοντελοποίηση διαγλωσσικών επιφανειών επίθεσης σε σύγχρονο διαγλωσσικό λογισμικό.Modern Python software systems increasingly rely on native extensions written in low-level languages such as C/C++ to achieve performance and functionality beyond pure Python. While Python provides strong safety guarantees, these do not extend to native extensions, reintroducing memory safety risks and other low-level vulnerabilities. As a result, vulnerabilities may originate in native code while remaining reachable through Python-level interfaces that appear safe. Detecting such cross-language vulnerabilities requires analysis techniques that reason across language boundaries and model the bridges connecting Python callables to their native implementations. This thesis investigates security vulnerabilities arising from interactions between Python code and native extensions, focusing on limitations of existing static analysis approaches. In particular, static analyses often fail to identify bridges established dynamically at runtime, causing vulnerable native execution paths to be incorrectly classified as unreachable and leading to incomplete vulnerability coverage. To address this gap, this work combines static and dynamic analysis by integrating CHARON, a static cross-language vulnerability analysis framework, with PyXray, a dynamic tool that recovers bridges by inspecting runtime object layouts in CPython. The resulting system, CharonXray, enriches CHARON’s static polyglot analysis with dynamically recovered bridges, enabling more complete modeling of cross-language execution paths and native reachability. The approach is evaluated on a large dataset of real-world Python packages with native extensions. Results show that PyXray identifies substantially more bridges than static analysis alone, detecting bridges in 57.5% more packages, and that incorporating these bridges significantly increases both the packages with discovered native vulnerability flows and the total number of such flows. CharonXray further uncovers previously unknown vulnerabilities in widely used packages, including aubio, autobahn-python, aioquic, and pymunk, spanning memory leaks, integer overflows, division-by-zero errors and NULL pointer dereferences. Overall, this thesis demonstrates that hybrid analysis is essential for accurately modeling cross-language attack surfaces in modern polyglot software.
Περιγραφή
Λέξεις-κλειδιά
Static analysis, Dynamic analysis, Python native extensions, Cross-language vulnerabilities, CHARON, PyXray, Στατική ανάλυση, Δυναμική ανάλυση, Εγγενείς επεκτάσεις της Python, Διαγλωσσικές ευπάθειες, CHARON, PyXray

