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

Χαρακτηριστικό παράδειγμα της κρισιμότητας της ασφάλειας των Web εφαρμογών συνιστούν οι τραπεζικές συναλλαγές, ένα μεγάλο ποσοστό των οποίων λαμβάνει πλέον χώρα μέσα από τις ιστοσελίδες των τραπεζών (e-banking). Ως εκ τούτου οι τραπεζικοί Οργανισμοί είναι υποχρεωμένοι να θωρακίσουν τις ιστοσελίδες τους, προκειμένου να εξασφαλίζουν τις on line συναλλαγές των πελατών τους.

Σημαντικό επίσης ρόλο παίζει και η φήμη της κάθε ιστοσελίδας, σχετικά με το τι επιπέδου ασφάλεια παρέχει στους χρήστες της. Αν για παράδειγμα η ιστοσελίδα ενός Online καταστήματος αποκτήσει τη φήμη πως δεν είναι ασφαλής για τους πελάτες της, τότε θα πρέπει να θεωρηθεί δεδομένο ότι κανείς πλέον δεν θα πραγματοποιεί αγορές μέσα από αυτή. Βλέπουμε λοιπόν πόσο σημαντική είναι για μία επιχείρηση ή έναν Οργανισμό η θωράκιση της ιστοσελίδας και των web εφαρμογών που χρησιμοποιεί, προκειμένου να εξασφαλιστεί η διαδικτυακή τουλάχιστον βιωσιμότητά του.

Οι ολοένα και αυξανόμενες απαιτήσεις των εταιρειών σχετικά με τη διαδραστικότητα των ιστοσελίδων τους, έχουν σαν αποτέλεσμα οι σχεδιαστές των web εφαρμογών να εστιάζουν περισσότερο στη λειτουργικότητα των εφαρμογών τους, αφήνοντας σε δεύτερη μοίρα το ζήτημα της ασφάλειας. Με άλλα λόγια, οι εταιρείες προγραμματισμού και web designing προκειμένου να ικανοποιήσουν τους πελάτες τους, δημιουργούν εφαρμογές οι οποίες είναι μεν λειτουργικές και παρέχουν υπηρεσίες υψηλού επιπέδου, έχουν όμως αρκετά κενά ασφαλείας. Συνήθως οι σχεδιαστές θεωρούν ότι με το να συμπεριλάβουν στην εφαρμογή τους τη χρήση της SSL τεχνολογίας, έχουν υπερκαλύψει το ζήτημα της ασφάλειας και δεν χρειάζεται να ασχοληθούν περαιτέρω με το θέμα αυτό. Αυτή η άποψη απέχει φυσικά αρκετά από την πραγματικότητα, αφού είναι γεγονός πως η πλειοψηφία των web εφαρμογών που υπάρχουν σήμερα, είναι αρκετά ευάλωτες σε μία σειρά τεχνικών επίθεσης, οι οποίες καμία σχέση δεν έχουν με την SSL τεχνολογία.

Ειδικότερα, έχει προκύψει στην πράξη ότι πολλές από τις σημερινές web εφαρμογές παρουσιάζουν συνήθως μία ή περισσότερες από τις παρακάτω ευπάθειες:

  • Μη ισχυρή κωδικοποίηση: Οι κωδικοί που χρησιμοποιούν είτε οι διαχειριστές της ιστοσελίδας είτε οι χρήστες που είναι εγγεγραμμένοι σε αυτή είναι αδύναμοι, με αποτέλεσμα τρίτοι μη εξουσιοδοτημένοι χρήστες να εκμεταλλεύονται αυτούς τους αδύναμους κωδικούς και να αποκτούν πρόσβαση στην ιστοσελίδα, κυρίως μέσα από brute force επιθέσεις .
  • Αδυναμία διασφάλισης απορρήτου χρηστών: Η web εφαρμογή έχει κενά ασφαλείας σχετικά με τη διασφάλιση του απορρήτου, με αποτέλεσμα οι επιτιθέμενοι να αποκτούν πρόσβαση στους λογαριασμούς και τα δεδομένα των χρηστών της εφαρμογής, αλλά και στους server αυτής ως διαχειριστές.
  • SQL injection: Όταν ο κώδικας με τον οποίο έχει σχεδιαστεί η εφαρμογή είναι αδύναμος και δεν έχει υπάρξει ειδική μέριμνα για τον αποκλεισμό συγκεκριμένων χαρακτήρων που μπορούν να εισαχθούν σε αυτή, τότε ένας επιτιθέμενος μπορεί παραποιώντας ολόκληρη την εφαρμογή να αποκτήσει πρόσβαση – και αν προχωρήσει παραπάνω, να αποκτήσει το δικαίωμα να εκτελέσει εντολές ακόμα και στον ίδιο το server της εφαρμογής.
  • Cross-site scripting: Απευθείας στοχοποίηση χρηστών της εφαρμογής, με αποτέλεσμα την απόκτηση πρόσβασης στα δεδομένα τους και έλεγχο των λογαριασμών τους. Ουσιαστικά οι επιτιθέμενοι αποκτούν πρόσβαση και ελέγχουν εκείνοι το λογαριασμό του χρήστη, λειτουργώντας σαν να είναι εκείνος.
  • Αποκάλυψη σημαντικών πληροφοριών: Η web εφαρμογή είναι σχεδιασμένη με τέτοιο τρόπο ώστε τεχνικά χαρακτηριστικά σχετικά με τη λειτουργία και τη δομή της, είναι ορατά προς τρίτους. Έτσι οι επιτιθέμενοι μελετώντας την εφαρμογή σε βάθος, μπορούν να δημιουργήσουν software επίθεσης προκειμένου να αποκτήσουν πρόσβαση σε αυτή.

Τα παραπάνω συνιστούν τα πιο χαρακτηριστικά κενά ασφαλείας που συναντά κανείς στις σύγχρονες web εφαρμογές, ενώ θα πρέπει να σημειωθεί ότι η πλειοψηφία των ιστοσελίδων που λειτουργούν σήμερα, παρουσιάζει τουλάχιστον μία από τις ανωτέρω ευπάθειες.
Μελετώντας κάποιος έστω και ακροθιγώς τα κενά ασφαλείας που παρουσιάζουν οι web εφαρμογές, αντιλαμβάνεται πως η τεχνολογία SSL μπορεί να εξασφαλίζει την επικοινωνία της εφαρμογής με το χρήστη, δεν εξασφαλίζει όμως καθόλου τον ίδιο το χρήστη ή το server με τον οποίο επικοινωνεί. Σε αυτό ακριβώς το σημείο εστιάζει και η συντριπτική πλειοψηφία των λεγόμενων web hacking επιθέσεων, με τεχνικές σαν αυτές που παραθέσαμε προηγουμένως. Άλλωστε, αν ο επιτιθέμενος έχει αποκτήσει πρόσβαση στο server μιας εφαρμογής, όσο δυνατή κρυπτογράφηση και να υπάρχει στην επικοινωνία της με τους χρήστες, εκείνος θα έχει πρόσβαση σε όλα τα δεδομένα που θα ανταλλάσσονται, ενώ ανάλογα με το πόσο έχει εισχωρήσει, μπορεί να φθάσει σε σημείο να ελέγχει πλήρως ολόκληρο το server και το σύνολο των εφαρμογών που λειτουργούν σε αυτόν. Με άλλα λόγια, οι web hacking τεχνικές που χρησιμοποιούνται σήμερα παρακάμπτουν στην ουσία την τεχνολογία SSL, προκειμένου να αποκτηθεί πρόσβαση σε χρήστες ή ακόμα και σε servers που λειτουργούν στο διαδίκτυο.

Αντιμετώπιση των κενών ασφάλειας
Η βασικότερη ίσως δυσκολία στο να αντιμετωπιστούν οι web hacking επιθέσεις έγκειται στο γεγονός ότι οι web εφαρμογές πρέπει πλέον να δέχονται και να επεξεργάζονται δεδομένα, τα οποία υπάρχει σοβαρό ενδεχόμενο να είναι κακόβουλα. Η διαδραστικότητα δηλαδή των σημερινών ιστοσελίδων είναι μία βασική πηγή των κενών ασφαλείας που παρουσιάζουν. Φυσικά δεν είναι δυνατό σήμερα να περιοριστούν οι εφαρμογές που θα επιτρέπουν στο χρήστη να εισάγει δεδομένα στην ιστοσελίδα που επισκέπτεται. Σχεδόν στο σύνολο των σημερινών ιστοσελίδων συμπεριλαμβάνεται τουλάχιστον μία εσωτερική μηχανή αναζήτησης (search engine) όπου εκεί ο χρήστης μπορεί να πληκτρολογήσει λέξεις κλειδιά (να εισάγει δηλαδή δεδομένα) προκειμένου να βρει αυτό που επιθυμεί. Τέτοιου είδους δυνατότητες δεν είναι δυνατό να σταματήσουν να παρέχονται στους χρήστες σήμερα. Αυτό όμως που θα μπορούσε να σταματήσει να παρέχεται είναι η δυνατότητα να εισάγουν συγκεκριμένους χαρακτήρες, οι οποίοι θα μπορούσαν να βλάψουν την εφαρμογή. Με άλλα λόγια, μία web εφαρμογή θα μπορούσε να διαμορφωθεί με τέτοιο τρόπο, ώστε να μη δέχεται συγκεκριμένους χαρακτήρες που θα μπορούσαν να τη βλάψουν. Άρα η ασφάλειά της σχετίζεται άμεσα με το σχεδιασμό της και συνεπώς θα πρέπει να λαμβάνεται σοβαρά υπόψη το ζήτημα της ασφάλειας από τα αρχικά στάδια δημιουργίας της. Όπως προκύπτει, η πλειοψηφία των web hacking επιθέσεων που πραγματοποιούνται σήμερα, εκμεταλλεύεται στην ουσία σχεδιαστικά κενά των εφαρμογών. Άρα η αλλαγή νοοτροπίας των σχεδιαστών των web εφαρμογών κρίνεται μείζονος σημασίας. Οι σχεδιαστές θα πρέπει σε πρώτη φάση να συνειδητοποιήσουν ότι υπάρχει μεγάλη διαφορά στο να δημιουργούν απλά μία λειτουργική εφαρμογή, από μία ασφαλή και λειτουργική εφαρμογή. Το ζήτημα της ασφάλειας όντως είναι ένα σχεδιαστικό ζήτημα και ως τέτοιο θα πρέπει να αντιμετωπίζεται. Καλό είναι όμως να αναφερθεί στο σημείο αυτό και η γενικότερη έλλειψη γνώσης που υπάρχει στα θέματα δικτυακής ασφάλειας και κυρίως web hacking (αλλά και network hacking) επιθέσεων. Τα θέματα αυτά είναι αρκετά εξειδικευμένα και συνήθως οι σχεδιαστές των web εφαρμογών δεν τα γνωρίζουν σε βάθος ώστε να τα λαμβάνουν υπόψη κατά το σχεδιασμό των εφαρμογών τους. Κάτι τέτοιο άλλωστε θεωρείται και ιδιαίτερα δύσκολο, καθόσον ο σχεδιασμός μίας web εφαρμογής θεωρείται από μόνος του ως κάτι το ιδιαίτερα εξειδικευμένο και συνεπώς είναι πολύ δύσκολο μία ομάδα να είναι το ίδιο ικανή σε δύο τόσο διαφορετικής νοοτροπίας και εξειδίκευσης ζητήματα. Μία ομάδα προγραμματιστών, για παράδειγμα, μπορεί να γνωρίζει άριστα και σε βάθος τη γλώσσα SQL σε σχεδιαστικό επίπεδο, η έλλειψη εμπειρίας της όμως σε περιπτώσεις SQL Injection επιθέσεων να μην της επιτρέπει να προβλέψει τέτοιες επιθέσεις και να θωρακίσει την εφαρμογή που σχεδιάζει από αυτές.
Ένας καλός τρόπος δομής μιας εταιρείας σχεδιασμού web εφαρμογών, είναι η λειτουργία δύο ομάδων. Μία ομάδα «σχεδιασμού» και μία ομάδα «ασφαλείας». Η ομάδα σχεδιασμού θα δημιουργεί την εφαρμογή ικανοποιώντας τις απαιτήσεις του κάθε πελάτη της εταιρείας και εν συνεχεία η ομάδα ασφαλείας θα τη δοκιμάζει και θα την τροποποιεί, καλύπτοντας όλα τα κενά ασφαλείας που θα παρουσιάσει. Η δοκιμή ασφαλείας φυσικά δεν θα πρέπει να σταματά εκεί, αλλά θα πρέπει να πραγματοποιείται συνεχώς και μετά τη λειτουργία της εφαρμογής, καθόσον νέες τεχνικές επίθεσης αναπτύσσονται σε καθημερινή πλέον βάση. Μία τέτοια δομή είναι λογικό πως θα αυξήσει το κόστος της κάθε web εφαρμογής, όμως θα πρέπει να καταστεί σαφές πως μία «τρύπια» εφαρμογή μπορεί να προξενήσει μεγάλη ζημιά και στην εταιρεία που τη σχεδίασε, αλλά και στον πελάτη για τον οποίο τη σχεδίασε. Συνεπώς, το να συμπεριληφθεί το ζήτημα της ασφάλειας κατά το σχεδιασμό των web εφαρμογών, θα πρέπει να θεωρείται μονόδρομος για όλους όσοι σχετίζονται με αυτόν τον τομέα.

Από τα παραπάνω φαίνεται ότι η γενικότερη φιλοσοφία του λεγόμενου web Hacking έχει να κάνει με την εκμετάλλευση σχεδιαστικών κατά κανόνα κενών ασφαλείας, με παράλληλη στοχοποίηση του server ο οποίος εξυπηρετεί την εφαρμογή και φυσικά του end user. Εκεί θα πρέπει να εστιαστεί και η γενικότερη έρευνα σχετικά με την αντιμετώπιση των επιθέσεων, γιατί εφόσον οι επιτιθέμενοι έχουν αποκτήσει πρόσβαση είτε στο server είτε στον end user, όσο δυνατή κρυπτογράφηση και αν υπάρχει στα μεταξύ τους πρωτόκολλα επικοινωνίας, θα έχουν πρόσβαση στην πληροφορία που διακινείται. Αυτό που σε τελική ανάλυση θα πρέπει να αλλάξει είναι η γενικότερη νοοτροπία σχεδιασμού των web εφαρμογών, ώστε να συμπεριλαμβάνεται από τον αρχικό τους σχεδιασμό, πλέον, ο παράγοντας της ασφάλειας. Επίσης όλες οι εφαρμογές θα πρέπει να δοκιμάζονται συνεχώς, προκειμένου να διορθώνονται τα κενά ασφαλείας που θα παρουσιάζονται.

Η ραγδαία ανάπτυξη του internet έχει σαν αποτέλεσμα την αύξηση των web hacking επιθέσεων, οι οποίες θεωρούνται σήμερα ιδιαίτερα δημοφιλείς. Πιο σημαντικό όμως είναι το γεγονός ότι οι επιθέσεις αυτές δεν σταματούν πλέον σε μια απλή παραποίηση ιστοσελίδας (το λεγόμενο defacement). Οι επιτιθέμενοι ξεκινούν από τις web εφαρμογές και στη συνέχεια μεθοδικά εισέρχονται ολοένα και περισσότερο προς το εσωτερικό των δικτύων στα οποία επιτίθενται με τελικό σκοπό τον πλήρη έλεγχό τους (απόκτηση admin πρόσβασης). Με αυτόν τον τρόπο δράσης ουσιαστικά συνδέουν το web και το network hacking, με τις web τεχνικές να είναι ο προπομπός των network. Προκύπτει έτσι ότι η σημερινή νοοτροπία επιθέσεων είναι η απόκτηση πρόσβασης και ο πλήρης έλεγχος ενός δικτύου σε όλα τα επίπεδα – είτε αυτό είναι ένα δίκτυο εταιρείας είτε κάποιο κρατικό δίκτυο. Με αυτή τη νοοτροπία άλλωστε τα οφέλη είναι πολλαπλά και ποικίλα, από οικονομικά μέχρι και πολιτικά.

Η αύξηση και βελτίωση των web hacking επιθέσεων σε συνδυασμό με την αλλαγή νοοτροπίας αυτών που τις πραγματοποιούν τις έχουν καταστήσει μία πολύ σοβαρή απειλή για τους Οργανισμούς που διατηρούν web εφαρμογές, αλλά και τους χρήστες που τις χρησιμοποιούν. Για το λόγο αυτό θα πρέπει να αλλάξει και η νοοτροπία αντιμετώπισής τους και να επαναπροσδιοριστεί ο τρόπος προσέγγισης του ζητήματος της ασφάλειας, καθόσον κενά σε αυτόν τον τομέα μπορούν να προξενήσουν τεράστιες ζημιές σε εταιρείες και Οργανισμούς.

Πηγές

Dafydd Stuttard, Marcus Pinto «The web application hackers handbook-Discovering and Exploiting Security flows» (Indianapolis, 2008, Wiley Publishing).
Joel Scambray, Vincent Liu, Caleb Sima «Hacking Exposed-Web applications, 3rd Edition: Web Application Security Secrets and Solutions» (USA, 2010, McGraw-Hill Osborne).

Του Παναγιώτη Κικίλια
Στέλεχος της Υπηρεσίας Δίωξης Ηλεκτρονικού Εγκλήματος