Το ACME validation είχε «τρύπα» σε challenge-request
Η Cloudflare διόρθωσε ένα κενό ασφαλείας στο Web Application Firewall (WAF) της, το οποίο επέτρεπε σε επιτιθέμενους να παρακάμπτουν κανόνες ασφαλείας και να αποκτούν άμεση πρόσβαση στους origin servers.
Αυτό θα μπορούσε να οδηγήσει σε κλοπή δεδομένων ή ακόμη και σε πλήρη κατάληψη του server.
Οι ερευνητές ασφάλειας της FearsOff ανέφεραν το bug τον Οκτώβριο μέσω του bug bounty program της Cloudflare, και η εταιρεία (CDN) δηλώνει ότι έκανε patch στην ευπάθεια στη λογική επικύρωσης ACME (Automatic Certificate Management Environment), χωρίς να απαιτείται κάποια ενέργεια από τους πελάτες.
Τι είναι το ACME και γιατί έχει σημασία
Το ACME είναι ένα πρωτόκολλο που χρησιμοποιούν οι Αρχές Πιστοποίησης (Certificate Authorities) και υπηρεσίες όπως η Cloudflare, για να αυτοματοποιούν:
- την έκδοση πιστοποιητικών SSL/TLS
- την ανανέωση
- την ανάκληση
Για να εκδοθεί ένα πιστοποιητικό, το ACME χρησιμοποιεί challenges ώστε να αποδειχθεί η κυριότητα του domain.
Αυτό γίνεται συνήθως μέσω HTTP-01 challenge, το οποίο ελέγχει την ύπαρξη ενός validation token σε HTTP διαδρομή της μορφής:
http://{customer domain}/.well-known/acme-challenge/{token value}
Η αναλογία: WAF ως «μπροστινή πόρτα», ACME ως «διάδρομος»
Στην αναφορά της, η εταιρεία hunting κυβερνοαπειλών παρομοιάζει:
- το WAF με την μπροστινή πόρτα του κτιρίου
- το ACME με έναν διάδρομο που θα έπρεπε να χρησιμοποιείται μόνο από ένα «ρομπότ πιστοποιητικών» για να επιβεβαιώνει την κυριότητα του domain
Όταν έχει γίνει σωστή ρύθμιση, ένα WAF μπορεί:
- να επιτρέπει την αναμενόμενη κίνηση επικύρωσης (validation traffic)
- να φιλτράρει κακόβουλες αιτήσεις, συμπεριλαμβανομένων αυτοματοποιημένων bots
«Ο διάδρομος ενός ρομπότ πιστοποιητικών δεν πρέπει ποτέ να γίνεται πλαϊνή πόρτα», έγραψαν οι ερευνητές της FearsOff.
Πως δημιουργήθηκε η «πλαϊνή πόρτα» (WAF bypass)
Η «πλαϊνή πόρτα» προκλήθηκε από ένα λογικό σφάλμα στον τρόπο που η Cloudflare επεξεργαζόταν ορισμένα ACME challenge requests.
Όπως εξήγησε η Cloudflare σε blog post τη Δευτέρα:
«Παλαιότερα, όταν η Cloudflare εξυπηρετούσε ένα HTTP-01 challenge token, αν η διαδρομή (path) που ζητούσε ο καλών ταίριαζε με token ενός ενεργού challenge στο σύστημά μας, η λογική που εξυπηρετούσε το ACME token απενεργοποιούσε λειτουργίες του WAF, αφού η Cloudflare θα εξυπηρετούσε απευθείας την απάντηση».
Αυτό γινόταν επειδή ορισμένες λειτουργίες του WAF θα μπορούσαν να παρεμβαίνουν στην ικανότητα της Αρχής Πιστοποίησης να επικυρώσει τις τιμές του token, προκαλώντας αποτυχίες σε αυτοματοποιημένες εκδόσεις και ανανεώσεις πιστοποιητικών.
Το κρίσιμο πρόβλημα
Η λογική δεν επιβεβαίωνε ότι το token που υπήρχε στο request αντιστοιχούσε σε ενεργό challenge για το συγκεκριμένο hostname.
Έτσι, ένας επιτιθέμενος θα μπορούσε να παρακάμψει πλήρως τους ελέγχους ασφαλείας του WAF και να φτάσει στον origin server.
Πότε διορθώθηκε και τι άλλαξε
Η Cloudflare διόρθωσε το κενό στις 27 Οκτωβρίου, προωθώντας κώδικα που επιτρέπει την απενεργοποίηση λειτουργιών του WAF μόνο όταν το request ταιριάζει με έγκυρο ACME HTTP-01 challenge token για το συγκεκριμένο hostname.
Σύμφωνα με την εταιρεία:
- δεν απαιτείται ενέργεια από τους πελάτες
- δεν υπάρχει ένδειξη ότι κακόβουλοι παράγοντες βρήκαν και εκμεταλλεύτηκαν την «τρύπα» πριν κλείσει
Γιατί τέτοιες παρακάμψεις WAF γίνονται πιο επικίνδυνες στην εποχή του AI
Παρότι δεν υπάρχουν αποδείξεις ενεργής εκμετάλλευσης, οι bug hunters επισημαίνουν ότι αυτού του τύπου τα WAF bypasses συνιστούν ακόμη μεγαλύτερη απειλή για οργανισμούς, καθώς ενισχύονται από επιθέσεις καθοδηγούμενες από AI.
Όπως έγραψε η FearsOff σε ανάλυση τη Δευτέρα:
«Αυτοματοποιημένα εργαλεία με machine learning μπορούν γρήγορα να απαριθμήσουν (enumerate) και να εκμεταλλευτούν εκτεθειμένα paths όπως το
/.well-known/acme-challenge/, ψάχνοντας σε κλίμακα για αδυναμίες frameworks ή λάθος ρυθμίσεις. Για παράδειγμα, ένα AI μοντέλο εκπαιδευμένο να εντοπίζει ιδιαιτερότητες σε servlet traversal ή bugs στο PHP routing θα μπορούσε να “αλυσοδέσει” αυτό το bypass με στοχευμένα payloads, μετατρέποντας ένα στενό μονοπάτι συντήρησης σε ευρύ δίαυλο επίθεσης».
