Evaluation of static analysis tools for detecting XSS vulnerabilities in PHP code: a comparative study using the CrossVul dataset
Ημερομηνία
2026-02-01
Τίτλος Εφημερίδας
Περιοδικό ISSN
Τίτλος τόμου
Εκδότης
Επιβλέπων / ουσα
Διαθέσιμο από
Περίληψη
This thesis presents a comparative evaluation of three distinct static analysis paradigms for detecting Cross-Site Scripting (XSS) vulnerabilities in PHP applications: taint tracking (Psalm), heuristic-based pattern matching (Semgrep), and type-based analysis (PHPStan). Using the Cross Vul dataset of real-world vulnerable code fragments, the study establishes a reproducible methodology to measure key performance metrics, including precision, recall, and F1 score. The results indicate that no single paradigm consistently dominates across all evaluation metrics, reflecting a structural trade-off space in vulnerability detection. PHPStan (augmented with a custom rule) achieved the highest recall (0.2396) and F1 score (0.3244) but produced the highest false positive rate. Psalm proved to be the most conservative and reliable tool, with the highest precision (0.6283). Semgrep occupied an intermediate position, excelling at identifying explicit insecure coding idioms but limited by its lack of global data-flow awareness. Qualitative analysis further identifies recurring failure patterns, such as difficulties in tracking data across persistence boundaries (stored XSS) and context-blindness in HTML attributes. The study concludes that effective XSS detection is best achieved through complementary tool integration rather than reliance on a single analysis strategy.Η παρούσα διπλωματική εργασία παρουσιάζει μια συγκριτική αξιολόγηση τριών διαφορετικών παραδειγμάτων στατικής ανάλυσης για τον εντοπισμό ευπαθειών Cross-Site Scripting (XSS) σε εφαρμογές PHP: την ανάλυση ροής δεδομένων (taint tracking) (Psalm), την εύρεση προτύπων βάσει ευριστικών κανόνων (Semgrep) και την ανάλυση βάσει τύπων (PHPStan). Χρησιμοποιώντας το σύνολο δεδομένων Cross Vul, το οποίο περιλαμβάνει πραγματικά αποσπάσματα ευπαθούς κώδικα, η μελέτη εφαρμόζει μια αναπαραγώγιμη μεθοδολογία για τη μέτρηση κρίσιμων δεικτών απόδοσης, όπως η ακρίβεια (precision), η ανάκληση (recall) και η βαθμολογία F1. Τα αποτελέσματα δείχνουν ότι κανένα εργαλείο δεν κυριαρχεί καθολικά σε όλες τις μετρήσεις, αναδεικνύοντας έναν δομικό συμβιβασμό (trade-off) στον τομέα του εντοπισμού ευπαθειών. Το PHPStan πέτυχε την υψηλότερη ανάκληση (0,2396) και βαθμολογία F1 (0,3244), αλλά με το υψηλότερο ποσοστό ψευδώς θετικών αποτελεσμάτων. Το Psalm αποδείχθηκε το πιο συντηρητικό και αξιόπιστο εργαλείο, παρουσιάζοντας την υψηλότερη ακρίβεια (0,6283). Το Semgrep κατέλαβε μια ενδιάμεση θέση, υπερέχοντας στον εντοπισμό ρητών μη ασφαλών προτύπων κώδικα, αλλά περιοριζόμενο από την έλλειψη σφαιρικής επίγνωσης της ροής δεδομένων. Η ποιοτική ανάλυση προσδιορίζει επαναλαμβανόμενα μοτίβα αποτυχίας εντοπισμού, όπως η δυσκολία παρακολούθησης δεδομένων σε περιπτώσεις stored XSS και η αδυναμία κατανόησης του πλαισίου (context) σε χαρακτηριστικά HTML. Η μελέτη καταλήγει στο συμπέρασμα ότι ο αποτελεσματικός εντοπισμός XSS επιτυγχάνεται καλύτερα μέσω της συμπληρωματικής ενσωμάτωσης εργαλείων παρά μέσω της εξάρτησης από μία μόνο στρατηγική ανάλυσης.
Περιγραφή
Λέξεις-κλειδιά
Static analysis, PHP security, XSS vulnerabilities, CrossVul dataset, Στατική ανάλυση, Ασφάλεια PHP, Ευπάθειες XSS

