Ασφάλεια και αρχιτεκτονική
Το HachiGuard είναι παρακολούθηση ακεραιότητας πληρωμών με αυτόματη αποκατάσταση για ηλεκτρονικά καταστήματα. Παρακολουθεί τα αρχεία και τις ρυθμίσεις που ορίζουν πού πηγαίνει μια πληρωμή, αναφέρει τις μη εξουσιοδοτημένες αλλαγές και, με αυστηρές προϋποθέσεις, βάζει πίσω μια επαληθευμένη καθαρή έκδοση.
Τρία μέρη, χωριστά μεταξύ τους
- Ο αισθητήρας τρέχει στη φιλοξενία σας, από τον χρονοπρογραμματιστή, έξω από τον δημόσιο φάκελο. Δεν έχει δικούς του κανόνες. Μαζεύει αποτυπώματα και τα στέλνει.
- Ο κεντρικός server έχει τους κανόνες, συγκρίνει κάθε αναφορά με την τελευταία καθαρή κατάσταση και αποφασίζει. Η λίστα των αρχείων που παρακολουθούνται ορίζεται εδώ, όχι από τον αισθητήρα.
- Τα καθαρά αντίγραφα των κρίσιμων αρχείων σας φυλάσσονται στη δική μας υποδομή, όχι στη φιλοξενία σας. Όποιος μπει στον λογαριασμό φιλοξενίας δεν μπορεί να τα αντικαταστήσει.
Τι μπορεί να κάνει ο αισθητήρας
- Τρέχει ως ο δικός σας χρήστης φιλοξενίας. Δεν χρειάζεται πρόσβαση root και δεν εγκαθιστά τίποτα στον server.
- Διαβάζει αρχεία κώδικα και, από τη βάση, μόνο τις εγγραφές διαχειριστών, τις ρυθμίσεις πληρωμών και λίγες ρυθμίσεις της πλατφόρμας, όπως τη διεύθυνση του site και τη λίστα των πρόσθετων.
- Γράφει σε μία μόνο περίπτωση: όταν ο κεντρικός server δώσει εντολή επαναφοράς αρχείου πληρωμής.
- Δεν σβήνει ποτέ αρχείο. Πριν αντικαταστήσει ένα, κρατά την έκδοση που αντικαθίσταται σε ιδιωτικό φάκελο.
Τι φεύγει από το site σας και τι όχι
- Στέλνονται: αποτυπώματα αρχείων, το περιεχόμενο των κρίσιμων αρχείων κώδικα που άλλαξαν, ονόματα χρήστη διαχειριστών, και αποτυπώματα (όχι οι τιμές) των email και κωδικών διαχειριστών και των ρυθμίσεων πληρωμών.
- Δεν στέλνονται ποτέ: παραγγελίες, πελάτες, αριθμοί καρτών, ούτε καμία σελίδα που βλέπουν οι επισκέπτες σας.
- Κάθε μήνυμα είναι υπογεγραμμένο και στις δύο κατευθύνσεις και φέρει ώρα και αριθμό μίας χρήσης, ώστε να μην μπορεί να αλλοιωθεί ή να επαναληφθεί.
Πότε επαναφέρεται αυτόματα ένα αρχείο
Η απόφαση παίρνεται με σταθερούς κανόνες, όχι με AI. Έτσι τα ίδια δεδομένα δίνουν πάντα την ίδια απόφαση και κάθε απόφαση μπορεί να εξηγηθεί. Πρέπει να ισχύουν όλα τα παρακάτω:
- το αρχείο είναι αρχείο πληρωμής ή checkout,
- η αλλαγή προσθέτει προορισμό πληρωμής που δεν αναγνωρίζουμε,
- δεν γίνεται αναβάθμιση της πλατφόρμας ή του συγκεκριμένου πρόσθετου,
- υπάρχει επαληθευμένο καθαρό αντίγραφο.
Κάθε άλλη αλλαγή αναφέρεται και περιμένει την έγκρισή σας. Δεν αναιρείται.
Πριν γράψει, ο αισθητήρας ελέγχει ότι το αρχείο στον δίσκο είναι ακόμα ακριβώς αυτό που αναλύθηκε, ότι δεν είναι σύνδεσμος προς άλλο σημείο και ότι βρίσκεται μέσα στο site σας. Η εγγραφή γίνεται σε ένα βήμα, ώστε να μη μείνει μισογραμμένο αρχείο. Μετά ο αισθητήρας επιβεβαιώνει το αποτέλεσμα στον κεντρικό server.
Η αλλαγμένη έκδοση κρατιέται ως αποδεικτικό. Αν η αλλαγή ήταν δική σας, την ξαναβάζετε από το panel σας με ένα κουμπί. Κάθε αυτόματη επαναφορά συνοδεύεται από αιτιολόγηση: τον κανόνα, το αρχείο, τον προορισμό, αν γινόταν αναβάθμιση και τα αποτυπώματα πριν και μετά.
Ένα παράδειγμα
Αυτό είναι το panel ενός δοκιμαστικού καταστήματος. Αλλάξαμε εμείς οι ίδιοι τη διεύθυνση πληρωμής σε ένα αρχείο, σε διεύθυνση που μοιάζει με τη γνήσια. Στον επόμενο έλεγχο η αλλαγή εντοπίστηκε, το καθαρό αρχείο μπήκε πίσω και ο αισθητήρας το επιβεβαίωσε.

Τι δοκιμάσαμε
Ελεγχόμενες δοκιμές σε δοκιμαστικό κατάστημα, έκδοση 1.12:
- Χρόνος από την αλλοίωση έως την επαναφορά, με έλεγχο κάθε 1 λεπτό. Αλλάξαμε τη διεύθυνση πληρωμής σε αρχείο πληρωμής 8 φορές, σε τυχαίες στιγμές μέσα στο λεπτό. Και τις 8 φορές η αλλαγή εντοπίστηκε και το καθαρό αρχείο μπήκε πίσω στον αμέσως επόμενο έλεγχο: από 8 έως 57 δευτερόλεπτα μετά την αλλοίωση, κατά μέσο όρο 33. Από τη στιγμή που ξεκινά ένας έλεγχος, ο εντοπισμός και η επαναφορά παίρνουν κάτω από ένα δευτερόλεπτο, άρα η αναμονή καθορίζεται από το διάστημα του πακέτου σας.
- 100 ελεγχόμενες αλλοιώσεις έξι ειδών, σε δοκιμαστικά καταστήματα OpenCart και WooCommerce. Και οι 100 εντοπίστηκαν και το καθαρό αρχείο μπήκε πίσω. Στην ίδια δοκιμή κάναμε 100 κανονικές αλλαγές προγραμματιστή: καμία δεν αναιρέθηκε και καμία δεν προκάλεσε συναγερμό.
- Το αρχείο αλλάζει ξανά ανάμεσα στην ανάλυση και την επαναφορά. Η επαναφορά δεν έγινε, η νεότερη έκδοση έμεινε στη θέση της και ελέγχθηκε στον επόμενο γύρο.
- Το αρχείο αντικαθίσταται από σύνδεσμο (symlink) πριν την επαναφορά. Ο αισθητήρας αρνήθηκε να γράψει και στάλθηκε μία κρίσιμη ειδοποίηση.
- Το ίδιο μήνυμα στέλνεται δύο φορές, ή αλλοιώνεται στη διαδρομή. Το δεύτερο απορρίφθηκε ως επανάληψη, το αλλοιωμένο ως μη έγκυρη υπογραφή.
- Ο κεντρικός server δεν είναι διαθέσιμος. Ο αισθητήρας δεν άλλαξε τίποτα στο site. Όταν ο server επανήλθε, η αλλαγή που είχε γίνει στο μεταξύ εντοπίστηκε και το αρχείο επανήλθε. Όσο ο server δεν απαντά, δεν γίνονται έλεγχοι.
- Κλεμμένος κωδικός του panel. Η είσοδος ήταν δυνατή, η έγκριση αλλαγής όχι: χρειάζεται τον κωδικό που στέλνεται στο email του ιδιοκτήτη. Έξι κωδικοί στην τύχη απέτυχαν και ο ιδιοκτήτης ειδοποιήθηκε.
- Αναίρεση επαναφοράς από το panel. Με τον κωδικό από το email, η αλλαγή ξαναμπήκε στον επόμενο έλεγχο.
- Τροποποιείται το αρχείο του ίδιου του αισθητήρα, ή ο αισθητήρας αναφέρει ξαφνικά πολύ λιγότερα αρχεία. Κρίσιμη ειδοποίηση στον επόμενο έλεγχο.
- Στη δημόσια σελίδα εμφανίζονται script από domain που μοιάζει με γνήσιο και φόρμα που στέλνει δεδομένα αλλού. Ο έλεγχος από έξω έβγαλε κρίσιμη ειδοποίηση.
- Αυτές είναι δικές μας ελεγχόμενες δοκιμές σε δοκιμαστικά καταστήματα, στο ίδιο μηχάνημα με τον κεντρικό server. Δεν είναι ανεξάρτητος έλεγχος, και σε πραγματική εγκατάσταση προστίθεται η καθυστέρηση του δικτύου.
Το panel σας
- Οι αναφορές και οι εγκρίσεις είναι διαθέσιμες μόνο μετά από σύνδεση. Δεν υπάρχουν ανοιχτοί σύνδεσμοι αναφοράς.
- Οι κωδικοί αποθηκεύονται κρυπτογραφημένοι. Μετά από πέντε λάθος προσπάθειες ο λογαριασμός κλειδώνει για δεκαπέντε λεπτά.
- Για να εγκρίνετε μια αλλαγή ή να αναιρέσετε μια επαναφορά χρειάζεται και ένας κωδικός που στέλνεται εκείνη τη στιγμή στο email σας. Ένας κλεμμένος κωδικός του panel δεν αρκεί.
- Κάθε έγκριση και κάθε αναίρεση καταγράφεται με τον χρήστη και τη διεύθυνση από την οποία έγινε, και στέλνεται με email στον ιδιοκτήτη και στην ομάδα μας.
Μια δεύτερη ματιά, από έξω
Κάθε έξι ώρες ο server μας ανοίγει και τις δημόσιες σελίδες σας όπως ένας επισκέπτης, και συγκρίνει τα εξωτερικά domains που φορτώνουν με την προηγούμενη φορά. Ένα νέο script από domain που μοιάζει με γνήσιο ή από ανοιχτή υπηρεσία φιλοξενίας κώδικα, ή μια φόρμα που αρχίζει να στέλνει δεδομένα αλλού, σημαίνει ειδοποίηση. Ο έλεγχος αυτός δεν εξαρτάται από τον αισθητήρα.
Πόσο κρατάμε τα δεδομένα
- Το ιστορικό συμβάντων κρατιέται 90 ημέρες.
- Τα καθαρά αντίγραφα κρατιούνται όσο είναι ενεργή η συνδρομή και διαγράφονται όταν λήξει.
Όρια που δηλώνουμε ανοιχτά
- Το HachiGuard δεν αντικαθιστά firewall, antivirus ή έλεγχο PCI. Είναι το επίπεδο που εντοπίζει και αναιρεί μια αλλαγή αφού κάποιος έχει ήδη μπει.
- Ένα script που φορτώνεται στο checkout σας από server τρίτου μπορεί να αλλάξει εκεί, χωρίς να αλλάξει κανένα δικό σας αρχείο. Βλέπουμε ένα νέο εξωτερικό domain, όχι όμως μια αλλαγή μέσα σε script που υπήρχε ήδη.
- Αν παραβιαστεί ολόκληρος ο λογαριασμός φιλοξενίας, ένας αισθητήρας που τρέχει μέσα του δεν μπορεί να θεωρείται απόλυτα αξιόπιστος. Γι' αυτό τα καθαρά αντίγραφα, οι κανόνες και οι αποφάσεις βρίσκονται έξω από αυτόν, και γι' αυτό ένας αισθητήρας που σωπαίνει ή έχει αλλοιωθεί σημαίνει συναγερμό.
- Τα κωδικοποιημένα αρχεία δεν διαβάζονται. Τα παρακολουθούμε με το αποτύπωμά τους και αναφέρουμε κάθε αλλαγή, αλλά δεν τα επαναφέρουμε αυτόματα.
- Ο πρώτος έλεγχος θεωρεί την τρέχουσα κατάσταση καθαρή. Ελέγξτε διαχειριστές και διευθύνσεις πληρωμών πριν τρέξει.
- Ο εντοπισμός γίνεται με τη συχνότητα του πακέτου σας. Μια αλλαγή που γίνεται αμέσως μετά από έναν έλεγχο φαίνεται στον επόμενο.