Λογότυπο αποθετηρίου
 

Development and evaluation of template pollution attacks in JavaScript and Golang

Μικρογραφία εικόνας

Ημερομηνία

2025-12-08

Τίτλος Εφημερίδας

Περιοδικό ISSN

Τίτλος τόμου

Εκδότης

Επιβλέπων / ουσα

Διαθέσιμο από

Περίληψη

This thesis investigates whether the static nature of the Go programming language is susceptible to vulnerabilities analogous to JavaScript's prototype pollution, a critical security issue where attackers modify a shared root object to impact the global application state. While Go's design lacks prototype inheritance and a mutable global root, effectively rendering direct prototype pollution impossible, the study identifies specific features such as interface{}, the reflect package, JSON unmarshaling, and unsafe pointers as potential vectors for similar input-driven state manipulations. Through experimental analysis, the research demonstrates that while JavaScript allows global corruption via simple JSON payloads, Go requires complex conditions like race conditions or specific developer anti-patterns to achieve localized state modification, type confusion, or memory boundary violations. A quantitative review of CVE data highlights that while JavaScript prototype pollution cases peaked significantly around 2021, reports of analogous Go vulnerabilities are rising but remain lower in frequency and severity due to the language's contained scope and memory safety features. Ultimately, the paper concludes that while Go provides a stronger security barrier against global state pollution, developers must still rigorously validate inputs and restrict the use of dynamic features to prevent scope-contained exploits.
Η παρούσα διατριβή διερευνά κατά πόσον η γλώσσα προγραμματισμού Go, με το στατικό σύστημα τύπων της, είναι επιρρεπής σε ευπάθειες ανάλογες με το prototype pollution της JavaScript, ένα κρίσιμο ζήτημα ασφαλείας όπου οι επιτιθέμενοι τροποποιούν ένα κοινό ριζικό αντικείμενο επηρεάζοντας την καθολική κατάσταση της εφαρμογής. Παρόλο που ο σχεδιασμός της Go δεν διαθέτει κληρονομικότητα πρωτοτύπων (prototype inheritance) καθιστώντας το άμεσο prototype pollution αδύνατο, η μελέτη εντοπίζει συγκεκριμένα χαρακτηριστικά όπως το interface{}, το πακέτο reflect, το JSON unmarshaling και τους δείκτες unsafe ως πιθανούς φορείς για παρόμοιες χειραγωγήσεις κατάστασης βάσει εισόδου. Μέσω πειραματικής ανάλυσης, η έρευνα αποδεικνύει ότι ενώ η JavaScript επιτρέπει την καθολική διαφθορά δεδομένων μέσω απλών φορτίων JSON, η Go απαιτεί πολύπλοκες συνθήκες ή κακές πρακτικές προγραμματισμού για να επιτύχει τοπική τροποποίηση, σύγχυση τύπων ή παραβιάσεις ορίων μνήμης. Μια ποσοτική επισκόπηση των δεδομένων CVE υπογραμμίζει ότι, ενώ το prototype pollution κορυφώθηκε το 2021, οι αναφορές για ανάλογες ευπάθειες στην Go αυξάνονται αλλά παραμένουν χαμηλότερες σε συχνότητα λόγω των χαρακτηριστικών ασφαλείας μνήμης της γλώσσας. Τέλος, η εργασία συμπεραίνει ότι αν και η Go παρέχει ισχυρότερη προστασία έναντι της ρύπανσης της καθολικής κατάστασης, οι προγραμματιστές οφείλουν να επικυρώνουν αυστηρά τις εισόδους και να περιορίζουν τη χρήση δυναμικών χαρακτηριστικών για την αποφυγή περιορισμένων επιθέσεων.

Περιγραφή

Λέξεις-κλειδιά

Prototype pollution, Golang, Input sanitization, Reflection, Unsafe Pointer, JSON unmarshaling, Type confusion, Deep merge, Memory safety, Race condition, Ρύπανση πρωτοτύπου, Γλώσσα Go, Εξυγίανση εισόδου, Αντανάκλαση GO, Μη ασφαλής δείκτης GO, Αποσειριοποίηση JSON, Σύγχυση τύπων

Παραπομπή