Mastodon
Connect with us

Hacking

Κρίσιμη ευπάθεια RCE στο Splunk Secure Gateway

Μια κρίσιμη RCE ευπάθεια στο Splunk Secure Gateway εκμεταλλεύεται ανασφαλή αποσειριοποίηση με τη βιβλιοθήκη jsonpickle και επιτρέπει κακόβουλη εκτέλεση ακόμη και από χαμηλόβαθμους χρήστες. Το άρθρο εξηγεί το τεχνικό υπόβαθρο, τις εκδόσεις που επηρεάζονται και πρακτικές διορθώσεις και μετριασμού.

Published

on

Κρίσιμη ευπάθεια RCE στο Splunk Secure Gateway

Μια σοβαρή ευπάθεια στο Splunk Secure Gateway επιτρέπει σε χρήστες με χαμηλά προνόμια και έγκυρα credentials να εκτελέσουν απομακρυσμένο κώδικα (RCE) στο σύστημα. Η ευπάθεια, με κωδικό CVE-2026-20251 και βαθμολογία CVSS 8.8, αποκαλύφθηκε από την ομάδα ReactiveZero Security και οφείλεται σε ανασφαλή αποσειριοποίηση δεδομένων μέσω της βιβλιοθήκης jsonpickle.

Η ανακάλυψη αυξάνει σημαντικά την επιφάνεια επίθεσης για επιχειρήσεις που χρησιμοποιούν Splunk στην παραγωγή και φωτίζει ένα συχνό πρόβλημα στον κόσμο των Python εφαρμογών: η λανθασμένη εμπιστοσύνη σε δεδομένα που προέρχονται από χρήστες. Στο άρθρο εξετάζουμε το τεχνικό υπόβαθρο, τον τρόπο επίθεσης, τις εκδόσεις που επηρεάζονται, και πρακτικές οδηγίες ασφάλειας για άμεση εφαρμογή.

Πώς ενεργοποιείται το πρόβλημα

Η ευπάθεια σχετίζεται με τον τρόπο που το SSG επεξεργάζεται ειδοποιήσεις αποθηκευμένες στον KV Store, συγκεκριμένα στη συλλογή mobile_alerts. Ένας χρήστης με χαμηλά προνόμια μπορεί να εγχύσει ένα ειδικά διαμορφωμένο JSON μέσω του Splunk REST API. Όταν το Secure Gateway διαβάζει αυτά τα δεδομένα, τα περνάει σε μια ελαττωματική ρουτίνα επικύρωσης που επιτρέπει την πρόσβαση του payload στη συνάρτηση jsonpickle.decode().

Η κρίσιμη αδυναμία είναι διπλή: υπάρχει παράκαμψη του validator και ταυτόχρονα unsafe deserialization. Η συνάρτηση επικύρωσης check_alert_data_valid_json() σχεδιάστηκε για να αποκλείει επικίνδυνες δομές, αλλά επιστρέφει πρόωρα true όταν εντοπίσει ένα επιτρεπτό κλειδί όπως py/object, χωρίς να ελέγχει τα υπόλοιπα πεδία. Αυτό ανοίγει το παράθυρο ώστε κακόβουλα φορτία να κρύβονται σε “αδερφικά” κλειδιά όπως notification, τα οποία δεν ελέγχονται περαιτέρω.

Γιατί το jsonpickle είναι προβληματικό εδώ

Η βιβλιοθήκη jsonpickle επιτρέπει την αποθήκευση και ανάκτηση σύνθετων αντικειμένων Python σε JSON. Παρότι διαθέτει παράμετρο safe=True, αυτή δεν καλύπτει όλα τα μονοπάτια deserialization. Συγκεκριμένα, η μορφή py/reduce δίνει τη δυνατότητα να εκτελεστούν εξαρτώμενες λειτουργίες που ανακαλούν Python callables, άρα μπορεί να ενεργοποιήσει κλήσεις στις λειτουργίες του συστήματος.

Ένα απλό proof-of-concept δείχνει πώς κατά τη διαδικασία αποσειριοποίησης καλείται η subprocess.check_output με εντολή uname -a. Αυτό αποδεικνύει πως το flag safe=True δεν απομονώνει την επίθεση όταν ο κώδικας επιτρέπει δομές όπως py/reduce ή py/object χωρίς πλήρη έλεγχο.

Αλυσίδα επίθεσης και απαιτήσεις

Η τυπική αλυσίδα επίθεσης είναι απλή αλλά αποτελεσματική: ο επιτιθέμενος γράφει ένα κακόβουλο έγγραφο στη συλλογή του KV Store, προκαλεί το SSG να διαβάσει/επεξεργαστεί την εγγραφή, ο validator παρακάμπτεται και κατά την αποσειριοποίηση εκτελείται ο ενσωματωμένος κώδικας. Το κρίσιμο στοιχείο είναι ότι απαιτείται μόνο ένας έγκυρος λογαριασμός Splunk με χαμηλά προνόμια — δεν χρειάζεται επιπλέον κοινωνική μηχανική ή αλληλεπίδραση από τον χρήστη.

Εφόσον ο κώδικας τρέχει με τα δικαιώματα της υπηρεσίας Splunk, ο επιτιθέμενος μπορεί να αποκτήσει πρόσβαση σε πόρους του συστήματος, να κινηθεί πλευρικά στο δίκτυο, να δημιουργήσει backdoors ή να εξαγάγει δεδομένα. Σε περιβάλλοντα όπου η Splunk έχει ευρύτερα δικαιώματα ή πρόσβαση σε ευαίσθητα log stores, ο αντίκτυπος μπορεί να είναι σοβαρός.

Εκδόσεις που επηρεάζονται και ενημερώσεις

Η ευπάθεια επηρεάζει εκδόσεις του Splunk Secure Gateway σειράς 3.8.x, 3.9.x και 3.10.x, καθώς και εγκαταστάσεις Splunk Enterprise πριν από τις αντίστοιχες patched releases. Η Splunk διέθεσε επιδιορθώσεις σε SSG με αριθμούς 3.8.67, 3.9.20 και 3.10.6, καθώς και σε Splunk Enterprise εκδόσεις 10.0.7, 10.2.4 και 10.4.0+.

Η κύρια σύσταση των ειδικών είναι άμεση εφαρμογή των patches. Η καθυστέρηση στην εγκατάσταση μιας διόρθωσης αφήνει τις υποδομές ευάλωτες σε επιθέσεις που μπορούν να εκμεταλλευτούν παλιά credentials ή λογαριασμούς με περιορισμένα δικαιώματα για να αποκτήσουν ευρύτερο έλεγχο.

Άμεσα βήματα μετριασμού για οργανισμούς που δεν μπορούν να κάνουν patch αμέσως

Όταν η άμεση ενημέρωση δεν είναι εφικτή, υπάρχουν προσωρινά μέτρα που μειώνουν τον κίνδυνο: απενεργοποιήστε το app Secure Gateway αν δεν χρησιμοποιείται, περιορίστε τα δικαιώματα εγγραφής στον KV Store μόνο σε εξουσιοδοτημένες υπηρεσίες, και επιβάλετε αυστηρούς κανόνες πρόσβασης στο REST API του Splunk. Η χρήση network segmentation και host-based access controls μειώνει την επιφάνεια επίθεσης.

Επιπλέον, πλαίσια ανίχνευσης όπως WAF ή IDS/IPS μπορούν να μπλοκάρουν ασυνήθιστες POST/PUT αιτήσεις προς το KV Store. Η επιβολή MFA και περιορισμός κατά IP περιορίζουν την πιθανότητα εκμετάλλευσης λογαριασμών με κλεμμένα credentials.

Πώς να ανιχνεύσετε και να διερευνήσετε πιθανή εκμετάλλευση

Η ανίχνευση μιας επίθεσης απαιτεί συνδυασμό ελέγχων στα logs και παρακολούθησης συμπεριφορικών δεικτών. Αναζητήστε εγγραφές στον KV Store που περιέχουν απροσδόκητα κλειδιά py/object, py/reduce ή άλλες δομές jsonpickle. Επίσης, επιθεωρήστε τα logs διεργασιών που εκτελούνται από το account της Splunk υπηρεσίας για ασυνήθιστες κλήσεις σε subprocesses.

Για forensic ανάλυση ελέγξτε τα timestamps των εγγραφών, τις πηγές των REST API κλήσεων και τυχόν απρόσμενες outbound συνδέσεις ή data exfiltration προς μη εξουσιοδοτημένους προορισμούς. Σε περίπτωση υποψίας ενεργής εκμετάλλευσης, κλειδώστε άμεσα το σύστημα, συλλέξτε volatile data και προχωρήστε σε αναλυτικό έλεγχο της αλυσίδας επίθεσης.

Οδηγίες για προγραμματιστές και αρχιτέκτονες ασφάλειας

Η ευπάθεια αναδεικνύει έναν επανειλημμένο αντι-παττερν στους Python εφαρμογές: η αποσειριοποίηση αδιάκριτα αποδεκτών δεδομένων είναι επικίνδυνη. Οι προγραμματιστές πρέπει να αποφεύγουν τη χρήση jsonpickle για δεδομένα από μη αξιόπιστες πηγές, εκτός αν υπάρχει αυστηρή λίστα επιτρεπόμενων κλάσεων (allow-listing) και πλήρης schema validation.

Εναλλακτικές συμπεριλαμβάνουν τη χρήση του βασικού json module που χειρίζεται απλά τύπους δεδομένων, ή βιβλιοθήκες που υποστηρίζουν επιβεβαιωμένα ασφαλή deserialization. Επιπλέον, ο σχεδιασμός θα πρέπει να διαχωρίζει την εισαγωγή δεδομένων από τη διαδικασία εκτέλεσης λογικής· ποτέ μην μετατρέπετε JSON σε αντικείμενα που μπορούν να εκτελέσουν κώδικα χωρίς ρητή και ασφαλή μετατροπή.

Τι σημαίνει για τους χρήστες

Για οργανισμούς που χρησιμοποιούν Splunk in production, η ευπάθεια σημαίνει ότι ένας χρήστης με σχετικά λίγα δικαιώματα μπορεί θεωρητικά να αποκτήσει πλήρη έλεγχο συστημάτων και δεδομένων. Αυτό μεταφράζεται σε κίνδυνο για παραβίαση logs, δημιουργία persistency mechanisms, lateral movement σε εσωτερικά δίκτυα και ενδεχόμενη εκτέλεση ransomware ή exfiltration ευαίσθητων αρχείων.

Από πρακτική άποψη οι διαχειριστές πρέπει να προτεραιοποιήσουν την ενημέρωση των SSG και Splunk Enterprise στις patched εκδόσεις, να επανεξετάσουν τα δικαιώματα χρήστη και τις πολιτικές αποθήκευσης στο KV Store, και να ενσωματώσουν ανιχνευτές που θα εντοπίζουν μη φυσιολογικές εγγραφές JSON. Μακροπρόθεσμα, οι ομάδες ασφάλειας και ανάπτυξης πρέπει να υιοθετήσουν πρακτικές ασφαλούς deserialization και αυστηρού validation για όλο το εισερχόμενο JSON.

Advertisement