fixit
Blog, Magento

Το Magento zero-day που χτυπά και τα ενημερωμένα καταστήματα

Εισαγωγή

Την Παρασκευή 4 Σεπτεμβρίου, στις 22:20 UTC — 01:20 τα ξημερώματα του Σαββάτου, ώρα Ελλάδας — κάποιος έστειλε ένα αίτημα σε ένα Magento eShop και πήρε τον έλεγχό του. Το κατάστημα ήταν πλήρως ενημερωμένο. Είχε τα patches του Ιουλίου και του Αυγούστου 2026. Ο έλεγχος security:patch-status επέστρεφε καθαρό αποτέλεσμα. Με κάθε έλεγχο που λέμε σε έναν έμπορο να τρέξει, το site ήταν εντάξει.

Η ολλανδική Sansec, που ερευνά αποκλειστικά την ασφάλεια σε πλατφόρμες eCommerce, δημοσίευσε την ευπάθεια με το όνομα StyleSmuggler. Τη στιγμή που γράφεται αυτό το κείμενο δεν υπάρχει CVE, δεν υπάρχει ανακοίνωση από την Adobe και δεν υπάρχει διόρθωση. Υπάρχουν όμως επιθέσεις, και τρέχουν τώρα.

Τι είναι το StyleSmuggler

Είναι μια ευπάθεια απομακρυσμένης εκτέλεσης κώδικα (RCE) που δεν απαιτεί σύνδεση χρήστη. Δηλαδή: ο επιτιθέμενος δεν χρειάζεται λογαριασμό, δεν χρειάζεται κωδικό, δεν χρειάζεται να τον αφήσει κάποιος να μπει. Στέλνει ένα αίτημα στο δημόσιο endpoint του καταστήματος και εκτελεί δικό του κώδικα στον server σου.

Σύμφωνα με τη Sansec, ο κώδικας περνάει μέσα στο σύστημα templates του Magento αξιοποιώντας τις ιδιότητες styles, και ακριβώς έτσι προσπερνά τους υπάρχοντες μηχανισμούς προστασίας. Το αίτημα φτάνει μέσω GraphQL, με τη μορφή POST /graphql?styles[....]=.

Επηρεάζονται το Magento Open Source 2.4.7, 2.4.8 και 2.4.9, καθώς και παλαιότερες εκδόσεις με τα τρέχοντα patches — το πρώτο επιβεβαιωμένο θύμα έτρεχε 2.4.6-p15 ενημερωμένο. Επηρεάζονται επίσης όλες οι τρέχουσες εκδόσεις του Adobe Commerce. Δεν υπάρχει έκδοση στην οποία μπορείς να ανέβεις για να ξεμπερδέψεις.

Γιατί το «είμαι ενημερωμένος» δεν σε καλύπτει εδώ

Οι περισσότερες παραβιάσεις Magento που βλέπουμε στην πράξη είναι βαρετές: ένα κατάστημα που έμεινε τρία χρόνια χωρίς patch, ένα ξεχασμένο extension, ένας admin λογαριασμός με κωδικό που κυκλοφορεί σε λίστα. Εκεί η συμβουλή είναι απλή και δουλεύει — κράτα το ενημερωμένο.

Το zero-day είναι η εξαίρεση που κάνει τη συμβουλή να ακούγεται κενή. Ενημερωμένο σημαίνει «προστατευμένος από ό,τι ξέρουμε». Για μερικές μέρες, ανάμεσα στην πρώτη επίθεση και στο patch, δεν υπάρχει τίποτα να εγκαταστήσεις. Αυτό δεν είναι λόγος να μη βάζεις patches. Είναι λόγος να μη σταματάς εκεί, και να ξέρεις τι κάνεις στο διάστημα που η ενημέρωση δεν υπάρχει ακόμα.

Πώς δουλεύει η επίθεση, σε δύο στάδια

Το κομμάτι που κάνει το StyleSmuggler ιδιαίτερα δύσκολο στον εντοπισμό είναι ότι η ένεση και η εκτέλεση είναι δύο χωριστές στιγμές.

Στο πρώτο στάδιο ο επιτιθέμενος «δηλητηριάζει» PHP κώδικα — για παράδειγμα, προκαλώντας τη δημιουργία μιας αναφοράς σφάλματος στο var/report/. Μέχρι εδώ δεν έχει εκτελεστεί τίποτα· απλώς κάτι γράφτηκε στον δίσκο.

Στο δεύτερο στάδιο ο επιτιθέμενος αναγκάζει το ίδιο το Magento να εκτελέσει αυτόν τον κώδικα, ενεργοποιώντας το email αποτυχημένης πληρωμής. Το κατάστημα κάνει render το μήνυμα και ο κώδικας τρέχει. Καμία ανθρώπινη ενέργεια δεν χρειάζεται. Το σύστημα που εκτελεί το payload είναι το δικό σου, και το κάνει επειδή ακριβώς αυτή είναι η δουλειά του.

Τι εγκαθιστά αν πετύχει

Το backdoor που παρατήρησε η Sansec είναι γραμμένο σε Rust και έχει σχεδιαστεί για να μη σου κάνει εντύπωση. Εμφανίζεται στη λίστα διεργασιών ως [kworker/u:8:0] ή ως fc-cache — ονόματα που ένας διαχειριστής προσπερνά, γιατί μοιάζουν με κανονικές διεργασίες του συστήματος. Η επικοινωνία με τον server ελέγχου μεταμφιέζεται σε συγχρονισμό ώρας NTP, στη θύρα UDP 123, δηλαδή σε κίνηση που κανείς δεν κοιτάζει.

Η μονιμότητα εξασφαλίζεται με εγγραφή στο crontab της μορφής 13,43 * * * * <home>/.cache/fontconfig/fc-cache. Δεν είναι στις 00:00, δεν είναι σε στρογγυλή ώρα· είναι στο 13 και στο 43 του λεπτού, ακριβώς για να μη φαίνεται.

Αυτό που στέλνει πίσω είναι αναγνωριστικά του server: hostname, όνομα χρήστη, έκδοση λειτουργικού, χρήση μνήμης και δίσκου, uptime, αν τρέχει με δικαιώματα root, και την έκδοση του ίδιου του implant (η Sansec κατέγραψε την 2.1.4). Είναι το πρώτο βήμα — η αναγνώριση πριν αποφασιστεί τι θα γίνει με το κατάστημα.

Πώς ελέγχεις αν σε χτύπησαν

Οι παρακάτω έλεγχοι τρέχουν με SSH στον server του καταστήματος, από τον φάκελο εγκατάστασης του Magento. Είναι όλοι μόνο ανάγνωσης — δεν αλλάζουν τίποτα.

  • Προγραμματισμένες εργασίες που δεν έβαλες: crontab -l | grep -i gvfsd
  • Διεργασίες με ύποπτα ονόματα: ps -eo pid,comm,args | grep -iE 'kworker|fc-cache'
  • Ίχνη στις αναφορές σφαλμάτων: grep -ril 'x_trace_' var/report/
  • Αρχεία του implant: ls -la ~/.local/share/.gvfsd/ ~/.cache/fontconfig/fc-cache /tmp/.fc_* /tmp/.kw_* 2>/dev/null

Στα logs του firewall ή του δικτύου, τρεις προορισμοί που έχουν καταγραφεί ως command and control: ntp.timesync.to στη θύρα 123, windwsecurity.run στη 443 και η διεύθυνση 99.84.67.186 στη 443. Εξερχόμενη κίνηση προς αυτούς από τον server του eShop σου δεν έχει καμία αθώα εξήγηση.

Αν κάποιος από τους ελέγχους δώσει αποτέλεσμα, μη σβήσεις τίποτα ακόμα. Το πρώτο πράγμα που χρειάζεται είναι αντίγραφο των logs, όσο υπάρχουν.

Τι κάνεις σήμερα, πριν βγει η διόρθωση

Η επόμενη προγραμματισμένη έκδοση ασφαλείας της Adobe είναι η 8η Σεπτεμβρίου 2026 — αύριο. Το αν θα καλύπτει το StyleSmuggler δεν είναι επιβεβαιωμένο. Μέχρι τότε, και μέχρι να το εγκαταστήσεις, υπάρχουν τρία πράγματα που έχουν νόημα.

Το πρώτο είναι η προσωρινή απενεργοποίηση του GraphQL, αν δεν έχεις μπροστά σου ένα WAF που μπλοκάρει ήδη τη συγκεκριμένη επίθεση. Είναι η σύσταση της Sansec για όσους δεν έχουν άλλη προστασία, και είναι πραγματικά προσωρινή: αν το frontend σου είναι headless ή PWA, ή αν κάποια λειτουργία του καταστήματος μιλάει με GraphQL, θα σπάσει. Δεν το κάνεις στα τυφλά — το δοκιμάζεις πρώτα και ξέρεις τι σβήνεις.

Το δεύτερο είναι το φιλτράρισμα σε επίπεδο WAF ή reverse proxy: αιτήματα προς το /graphql που κουβαλούν παράμετρο styles. Η Sansec έχει ενεργοποιήσει κανόνες στο Shield από τις 5 Σεπτεμβρίου, 07:15 UTC, και έχει ήδη παρατηρήσει νέα παραλλαγή στις 6 Σεπτεμβρίου — δηλαδή το payload αλλάζει και ένας κανόνας γραμμένος βιαστικά χθες μπορεί να μην πιάνει το αυριανό.

Το τρίτο είναι η ετοιμότητα να ανεβάσεις το patch την ώρα που θα βγει, όχι «μέσα στην εβδομάδα». Αν κάθε ενημέρωση στο κατάστημά σου είναι μια νύχτα με FTP και σταυρωμένα δάχτυλα, τότε το πρόβλημα δεν είναι το zero-day — είναι ότι δεν έχεις τρόπο να αντιδράσεις γρήγορα. Ένα pipeline που κάνει deploy χωρίς downtime είναι ακριβώς το εργαλείο που χρειάζεσαι τις μέρες που ο χρόνος μετράει σε ώρες.

Αν βρεις κάτι, το patch δεν είναι το καθάρισμα

Εδώ γίνεται το πιο συνηθισμένο λάθος. Η διόρθωση κλείνει την πόρτα· δεν βγάζει έξω αυτόν που μπήκε πριν την κλείσεις. Ένας server που δέχτηκε implant στις 5 Σεπτεμβρίου θα τον έχει ακόμα στις 9, ενημερωμένος και όλα.

Ένα σωστό καθάρισμα σημαίνει σάρωση για δεύτερα και τρίτα backdoors — σπάνια είναι ένα — έλεγχος για admin λογαριασμούς που δεν δημιούργησες, αλλαγή σε κλειδιά, κωδικούς βάσης, API tokens και διαπιστευτήρια πληρωμών, και έλεγχος του checkout για κώδικα που υποκλέπτει κάρτες. Τα σημάδια που το προδίδουν είναι κοινά σε όλες τις πλατφόρμες· τα έχουμε γράψει αναλυτικά για την περίπτωση του WordPress site που έχει ήδη παραβιαστεί, και η λογική είναι ίδια σε ένα Magento.

Το συμπέρασμα

Το StyleSmuggler θα πάρει κάποια στιγμή CVE, patch και μια γραμμή σε ένα changelog. Αυτό που δεν λύνεται με patch είναι το διάστημα ανάμεσα στην πρώτη επίθεση και στη διόρθωση, και εκεί δεν σε σώζει η έκδοση που τρέχεις αλλά το αν κάποιος κοιτάζει το κατάστημά σου.

Η διαφορά ανάμεσα σε ένα eShop που το έμαθε από τη Sansec και σε ένα που θα το μάθει από τον πάροχο καρτών σε δύο μήνες είναι ακριβώς αυτή: αν υπάρχει άνθρωπος που διαβάζει τα logs, τρέχει τους ελέγχους και ανεβάζει το patch την ημέρα που βγαίνει. Αυτό σημαίνει υποστήριξη και συντήρηση στην πράξη — όχι ένα συμβόλαιο που θυμάσαι όταν το site πέσει.

Αν έχεις Magento ή Adobe Commerce κατάστημα και δεν είσαι σίγουρος ποιος τρέχει αυτούς τους ελέγχους για σένα αυτή τη στιγμή, μίλησέ μας. Θα τρέξουμε τη σάρωση και θα σου πούμε πού βρίσκεσαι — σήμερα, όχι μετά το patch.

Πηγή της έρευνας: Sansec — StyleSmuggler: Magento and Adobe Commerce 0-day RCE under active attack. Τα στοιχεία ισχύουν όπως δημοσιεύτηκαν στις 7 Σεπτεμβρίου 2026 και η κατάσταση εξελίσσεται.

Προηγούμενη ανάρτηση
«Hyvä vs Luma: πότε συμφέρει πραγματικά το migration» — κόστος, χρόνος, PageSpeed πριν/μετά, ποιοι δεν πρέπει να το κάνουν ακόμα.
Επόμενη ανάρτηση
Γιατί το WooCommerce γονατίζει στα 5.000 προϊόντα