OWASP_logoΣυνεχίζοντας τον κύκλο άρθρων σχετικά με την ασφάλεια σε δικτυακά περιβάλλοντα σε συνεργασία με τον Παναγιώτη Καλαντζή στο άρθρο αυτό αισίως φτάνουμε στον πρώτο και μεγαλύτερο κίνδυνο: την αδυναμία έγχυσης (injection). Ο επιτιθέμενος αποστέλλει απλό κείμενο σε, απροστάτευτο, μεταγλωττιστή (interpreter) εκμεταλλευόμενος τη σύνταξη του. Κλασικό παράδειγμα η επισφαλής επιβεβαίωση των διαπιστευτηρίων στο επίπεδο της υπηρεσίας στον διακομιστή (server) όπου η επιβεβαίωση ύπαρξης χρήστη με τα δεδομένα εισόδου γίνεται με την ακόλουθη κλήση εντολής SQL:

$query_user_credentials = "SELECT * FROM users WHERE username='".$_POST["username"]."' AND password='".$_POST["password"]."'";

Ο επιτιθέμενος μπορεί να κατανοήσει τα δεδομένα που περιμένει ο διακομιστής μελετώντας την ετικέτα (tag) του html αρχείου και να ετοιμάσει ένα post όπου ο κωδικός (password) του χρήστη που επιθυμεί να αποκτήσει πρόσβαση αντικαθίσταται κενό αλφαριθμητικό ενώ το όνομα χρήστη (username) με το αλφαριθμητικό «’ or ‘1’=’1». Η αλλαγή αυτή με δεδομένη την προτεραιότητα του τελεστή (operator) AND σε σχέση με τον OR, στο διακομιστή θα οδηγήσει σε εκτέλεση της εντολής SQL

SELECT * FROM users WHERE username='a_victime@server.com' OR '1'='1' AND password='';

επιλέγοντας το χρήστη με όνομα a_victim@server.com!

Συνήθη αποτελέσματα περιλαμβάνουν απώλεια ή/και μεταβολή δεδομένων και άρνηση παροχής υπηρεσιών. Στο χείριστο σενάριο η αδυναμία έγχυσης είναι δυνατό να οδηγήσει σε πλήρη κατάληψη του διακομιστή.

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

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

  1. Η αποφυγή χρήσης μεταγλωττιστών και αντικατάστασή τους από επιβεβαιωμένα ασφαλή πρωτόκολλα διεπαφής εφαρμογών (API). Βεβαία κι σε αυτά ελλοχεύει ο κίνδυνος αδυναμιών γενικώς και έγχυσης ειδικότερα,
  2. Η χρήση ειδικών χαρακτήρων (escape characters) που δεν επιτρέπουν τη δευτερεύουσα λειτουργικότητα χαρακτήρων που οδηγούν στην έγχυση. Σχεδόν όλες οι γλώσσες υποστηρίζουν τέτοια σύνταξη, και ακολούθως μια τέτοια αντιμετώπιση κρίνεται αν όχι πλήρως, ιδιαίτερα επαρκής,
  3. Τέλος, είναι δυνατό να χρησιμοποιηθεί ντετερμινιστική λίστα αποδεκτών δεδομένων ή κανόνες για τα δεδομένα που μπορεί ο χρήστης να εισαγάγει, αν και όχι ιδιαιτέρα προτεινόμενο καθώς εισαγάγει πολλούς περιορισμούς στην αλληλεπίδραση.

Αυτό ήταν και το τελευταίο άρθρο του κύκλου με τα 10 συνηθεστέρα κενά ασφαλείας των διαδικτυακών εφαρμογών κατά τον OWASP για το 2013. Ευχόμαστε μέσα από τα άρθρα αυτά να έγινε εμφανές πως παρότι πλήθος κινδύνων ελλοχεύουν κατά τον σχεδιασμό και υλοποίηση μιας διαδικτυακής εφαρμογής αντίστοιχα υπάρχουν και αρκετές λύσεις.

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

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

Share This: