Ερευνητές από το Πανεπιστήμιο Tsinghua και το Πανεπιστήμιο της Καλιφόρνια έχουν εντοπίσει μια νέα μέθοδο που μπορεί να χρησιμοποιηθεί για τη διεξαγωγή επιθέσεων DNS cache poisoning.
Το νέο ελάττωμα επηρεάζει τα λειτουργικά συστήματα Linux 3.18 έως 5.10, Windows Server 2019 (έκδοση 1809) και νεότερα, macOS 10.15 και νεότερα, και FreeBSD 12.1.0 και νεότερα. Η νέα ανακάλυψη βασίζεται και αναβιώνει ένα σφάλμα του 2008 και το οποίο θεωρούνταν από όλους ότι είχε επιλυθεί μια για πάντα.
Το 2008, ο ερευνητής Dan Kaminsky ανακάλυψε μια από τις πιο σοβαρές απειλές για την ασφάλεια στο Διαδίκτυο. Η ανακάλυψη αφορούσε μια αδυναμία στο σύστημα ονομάτων τομέα (DNS) που μπορούσε να επιτρέψει σε κακόβουλους hacker να στέλνουν μαζικά τους χρήστες σε πλαστογραφημένους ιστότοπους αντί για τους πραγματικούς που ανήκουν στην Google, Τράπεζες κλπ. Έτσι, με συντονισμό σε ολόκληρο τον κόσμο, χιλιάδες πάροχοι DNS εγκατέστησαν μια διόρθωση που απέτρεψε αυτό το επικίνδυνο σενάριο.
Τι είναι DNS και η πλαστογράφηση DNS ή το cache poisoning;
Όλοι λίγο πολύ έχουμε μάθει τι είναι το DNS τον τελευταίο καιρό λόγο των μπλοκαρισμένων σελίδων από τους ISP. Για αυτούς που δεν ξέρουν τι είναι το DNS και γιατί είναι ένα κρίσιμο στοιχείο της υποδομής του internet θα πούμε ότι είναι ένας τεράστιος «τηλεφωνικός κατάλογος».
Τι είναι το DNS
Όταν θέλετε να καλέσετε έναν φίλο/η σας, θα πρέπει να αναζητήσετε το όνομά του/ης στο κινητό σας το οποίο όνομα θα αντιστοιχεί σε αριθμό τηλεφώνου. Άρα δεν χρειάζεται να θυμάστε τον αριθμό του/ης αφού έχετε τηλεφωνικό κατάλογο.
Ομοίως, όταν πληκτρολογείτε έναν όνομα από κάποιο site, ο browser σας προσπαθεί να προσδιορίσει τη διεύθυνση IP της σελίδας (αριθμός) αναζητώντας το, μέσω ενός καταλόγου ονομάτων του internet που ονομάζεται DNS .
Η πραγματική διαδικασία συμβαίνει σε μια σειρά βημάτων και δεν είναι πάντα τόσο απλή.
Για παράδειγμα, εάν εσείς ή κάποιος στο δίκτυό σας επισκεφθήκατε προηγουμένως το cerebrux.net, η διεύθυνση IP θα αποθηκευτεί προσωρινά είτε κάπου στον υπολογιστή σας είτε σε ενδιάμεσους διακομιστές.
Αυτό σημαίνει ότι την επόμενη φορά που θα επισκεφθείτε το cerebrux.net, δεν θα χρειαστεί ξανά μια αναζήτηση του τομέα. Ο υπολογιστής ή ο browser σας θα γνωρίζουν ήδη πού να σας πάνε.
Τι είναι το DNS cache poisoning
Οι επιθέσεις αυτές αναφέρονται στη τροποποίηση της κρυφής μνήμης που αναφέραμε πάνω και που υπάρχει στους ενδιάμεσους διακομιστές.
Φανταστείτε εάν ένα DNS cache στον οποίο βασίστηκε ο υπολογιστή σας για να αναζητήσει την IP του cerebrux.net, σας επέστρεφε εσφαλμένη διεύθυνση IP;

Έτσι, οι επιτιθέμενοι θα μπορούσαν να πλαστογραφήσουν χιλιάδες site στα οποία θα προωθούσαν τα θύματα έστω και αν οι χρήστες πληκτρολογούσαν το σωστό domain name π.χ. cerebrux.net.
Πώς επιλύθηκε το DNS cache poisoning και πως επανεφανήστικε;
Για να αποφευχθεί το DNS cache poisoning χρησιμοποιήθηκε μια τεχνική τυχαιοποίηση της θύρας προέλευσης όταν ζητάμε κάποιο domain name.
Αυτή η λύση είχε καταστήσει σχεδόν αδύνατο να πραγματοποιηθούν επιθέσεις DNS cache poisoning μέσω της μεθόδου που ανακαλύφθηκε από τον Kaminsky.
Ωστόσο, ερευνητές στο Πανεπιστήμιο Tsinghua και το Πανεπιστήμιο της Καλιφόρνια δημοσίευσαν μια μέθοδο που εκμεταλλεύεται μια επίθεση side-channel (SAD DNS attack) για να εξαγάγει τον αριθμό θύρας προέλευσης του DNS πελάτη (browser, υπολογιστής, κινητό κλπ).
Η εντόπιση της θύρας προέλευσης καθίσταται δυνατή λόγω του τρόπου με τον οποίο ο πυρήνας Linux χειρίζεται τα αιτήματα ICMP (π.χ. το ping ή το tracert). Ένας εισβολέας θα μπορούσε να πλημμυρίσει ένας διακομιστή DNS με 1.000 πλαστά πακέτα που προορίζονται για τυχαίες θύρες. Με αυτόν τον τρόπο, σε λίγα δευτερόλεπτα, ο εισβολέας θα είναι σε θέση να συμπεράνει ποιες θύρες είναι ανοιχτές στο DNS resolving λογισμικό του (π.χ. BIND, Unbound, dnsmasq) για να του κάνουν DNS cache poisoning.
Με τη γνώση του σωστού port, οι επιτιθέμενοι μπορούν στη συνέχεια να ξαναχρησιμοποιήσουν το σφάλμα του Kaminsky για να προκαλέσουν επιθέσεις DNS cache poisoning.
Υπάρχει λοιπόν λύση στο SAD DNS attack;
Ακόμη και βελτιώσεις δομικών στοιχείων όπως το DNS-over-HTTPS (DoH) δεν θα απέτρεπαν τους εισβολείς από το να κάνουν κατάχρηση του DNS για τις κακόβουλες δραστηριότητές τους. Αυτό συμβαίνει διότι δεν προσφέρουν προστασία από άκρο σε άκρο. Έχουν σχεδιαστεί για να προστατεύουν μόνο τη σύνδεση μεταξύ ενός πελάτη (π.χ. πρόγραμμα περιήγησης) και ενός προγράμματος επίλυσης DNS (π.χ. BIND). Ωστόσο, το DNS poisoning συμβαίνει στη σύνδεση μεταξύ ενός προγράμματος επίλυσης DNS και ενός διακομιστή π.χ. cerebrux.net
Όπως και η τυχαιοποίηση της θύρας προέλευσης είχε προσθέσει κάποια πολυπλοκότητα για τους εισβολείς, οι προγραμματιστές του πυρήνα Linux εισήγαγαν μια αλλαγή που τροποποιεί το όριο ρυθμού, να κυμαίνεται τυχαία μεταξύ 500 και 2.000 ανά δευτερόλεπτο. Η Cloudflare παρουσίασε μια δική του επιδιόρθωση όπου σε ορισμένες περιπτώσεις, η υπηρεσία DNS θα επιστρέφει σε TCP (αντί UDP), το οποίο είναι πολύ πιο δύσκολο να πλαστογραφηθεί.
Το paper των ερευνητών, DNS Cache Poisoning Attack Reloaded: Revolutions with Side Channels, παρέχει μια πολύ πιο λεπτομερή και τεχνική περιγραφή της επίθεσης.
Παραπομπές:
Ευχαριστούμε πολύ για την παραπάνω ανάλυση και για το paper στο τέλος που το περιγράφει και αναλύει λεπτομερώ!
Εδώ φαίνεται ώρες, ώρες το τρελό της τεχνολογίας.. παλεύουμε να κάνουμε άλλα πράγματα π.χ. ακόμη και «AT» τρομάρα μας και από την άλλη έχουμε τόσο μεγάλα τόσο τρομερά και απολύτως βασικά προβλήματα όπως π.χ. στην επίλυση ονομάτων (DNS) που παλεύουμε και δεν μπορούμε να προσφέρουμε μια σωστή και ασφαλής λύση.
Είναι βέβαια και η φύση του προβλήματος πολύ δύσκολο να διαχειριστεί…
Ακριβώς… Δεν ξέρεις από που θα σου έρθει τελικά :)