ΕΠΙΘΕΣΕΙΣ...

59
ΕΠΙΘΕΣΕΙΣ ΕΠΙΘΕΣΕΙΣ & & ΠΡΟΣΤΑΣΙΑ ΠΡΟΣΤΑΣΙΑ Αρχιτεκτονική/σχεδίαση Επιθέσεις που στοχεύουν σε τρωτά σημεία του συστήματος λόγω της αρχιτεκτονικής/σχεδίασης του. Υλοποίηση Επιθέσεις που στοχεύουν σε τρωτά σημεία του συστήματος λόγω της υλοποίησής του. Λειτουργία Επιθέσεις που στοχεύουν σε κενά της λειτουργίας του συστήματος, δηλαδή όταν αυτό βρίσκεται σε χρήση. ΑΞΙΟΠΙΣΤΙΑ & ΑΣΦΑΛΕΙΑ ΛΟΓΙΣΜΙΚΟΥ

Transcript of ΕΠΙΘΕΣΕΙΣ...

Page 1: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

ΕΠΙΘΕΣΕΙΣΕΠΙΘΕΣΕΙΣ & & ΠΡΟΣΤΑΣΙΑΠΡΟΣΤΑΣΙΑ

Αρχιτεκτονική/σχεδίασηΕπιθέσεις που στοχεύουν σε τρωτά σημεία του συστήματοςλόγω της αρχιτεκτονικής/σχεδίασης του. ΥλοποίησηΕπιθέσεις που στοχεύουν σε τρωτά σημεία του συστήματοςλόγω της υλοποίησής του.ΛειτουργίαΕπιθέσεις που στοχεύουν σε κενά της λειτουργίας τουσυστήματος, δηλαδή όταν αυτό βρίσκεται σε χρήση.

ΑΞΙΟΠΙΣΤΙΑ & ΑΣΦΑΛΕΙΑ ΛΟΓΙΣΜΙΚΟΥ

Page 2: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Ορολογία ασφάλειας

Πολιτική ασφάλειας (security policy) είναι ένα σύνολοκανόνων/πρακτικών που διευθετούν το πώς ένα σύστημαπαρέχει υπηρεσίες ασφάλειας για την προστασίαευαίσθητων/κρίσιμων πόρων του συστήματος.Διαθεσιμότητα (availability): ετοιμότητα παροχής υπηρεσίας μόνοσε εξουσιοδοτημένους χρήστεςΕμπιστευτικότητα (confidentiality): αποτροπή ενδεχόμενης μηεξουσιοδοτημένης διάθεσης πληροφοριώνΑκεραιότητα (integrity): απουσία μη εξουσιοδοτημένωνμεταβολών του συστήματος

2

Page 3: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Ορολογία ασφάλειας

Ελάττωμα ασφάλειας (security flaw) ή ευπάθεια είναι κάθεατέλεια στο λογισμικό που ανοίγει έναν ενδεχόμενο κίνδυνοασφάλειας (security risk).Τρωσιμότητα ή τρωτότητα (vulnerability) είναι οι συνθήκεςκάτω από τις οποίες ένας επιτιθέμενος μπορεί να παραβιάσει μία(φανερή ή υπονοούμενη) πολιτική ασφάλειας.Ένα ελάττωμα ασφαλείας μπορεί να καταστήσει ένα λογισμικότρωτό, όταν τα δεδομένα εισόδου τελικά παραβιάζουν τιςσυνθήκες ασφάλειας. Παράδειγμα 1: ένα πρόγραμμα με ελάττωμα ασφαλείας εγκαθίσταται μεπρονόμια εκτέλεσης (χρήσης πόρων) μεγαλύτερα από αυτά που έχει οχρήστης τουΠαράδειγμα 2: χρησιμοποιείται μία δικτυακή υπηρεσία (π.χ. web) μέσωτης οποίας φτάνουν τα δεδομένα εισόδου του λογισμικού.

3

Page 4: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Ορολογία ασφάλειας

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

4

Page 5: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Ορολογία ασφάλειας

Ικανότητα (exploit) είναι το λογισμικό ή η τεχνική πουεκμεταλλεύεται κάποια τρωσιμότητα για να παραβιάσει μίαπολιτική ασφάλειας.Τα exploits προβληματίζουν τους αναλυτές ασφάλειας, αν καισυχνά αυτά επινοούνται ή σχεδιάζονται με σκοπό να αποδείξουντην τρωσιμότητα.

Μία απειλή (threat) εσωτερική ή εξωτερική σε συνδυασμό με μίατρωσιμότητα μπορεί να οδηγήσει σε αποτυχία ασφάλειας, δηλαδήσε παραβίαση της πολιτικής ασφάλειας. Η ύπαρξη ενός exploit είναι απειλή.

5

Page 6: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Ορολογία ασφάλειας

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

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

6

Page 7: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Αρχιτεκτονική/σχεδίαση

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

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

Μία ακατάλληλη αρχιτεκτονική/σχεδίαση δεν είναιαπαραίτητα προϊόν λάθους.

π.χ. το telnet ως πρόγραμμα επικοινωνίας δεν είναι κατάλληληεπιλογή σε ένα δυνητικά «εχθρικό» υπολογιστικό περιβάλλον, επειδή δεν χρησιμοποιεί κρυπτογράφηση για το username/ password (το ssh είναι πιο κατάλληλο)

7

Page 8: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Αρχιτεκτονική/σχεδίαση8

Επιθέσεις ενδιάμεσου (man‐in‐the‐middle)

Επιθέσεις συνθήκης ανταγωνισμού (race condition)

Επιθέσεις επαναληπτικής εκτέλεσης (replay attacks)

Επιθέσεις υποκλοπής (sniffer attacks)

Επιθέσεις υφαρπαγής συνόδου (session hijacking)

Επιθέσεις τερματισμού συνόδου

Page 9: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Υλοποίηση

Επιθέσεις υπερχείλισης buffer (buffer overflows)

Επιθέσεις πίσω πόρτας (back door attacks)

Επιθέσεις λάθους ανάλυσης εισόδου (parsing error attacks)

9

Page 10: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Τρωτά σημεία κώδικα C (vulnerabilities)10

Παραδείγματα:http://mathind.csd.auth.gr/static_analysis_test_suite/

Page 11: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Επιθέσεις άρνησης υπηρεσίας (denial of service attacks)

Επιθέσεις προεπιλεγμένου λογαριασμού (default account attacks)

Επιθέσεις διάρρηξης συνθηματικού (password cracking)

11

Λειτουργία

Page 12: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Αρχιτεκτονική: επιθέσεις ενδιάμεσου12

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

Προστασία: εκτεταμένη χρήση κρυπτογράφησης ειδικά γιααυθεντικοποίηση. Βοηθά επίσης η χρήση checksums συνόδου καικοινών μυστικών όπως π.χ. cookies.

Page 13: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Αρχιτεκτονική: επιθέσεις συνθήκης ανταγωνισμού

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

Προστασία: κατανόηση της διαφοράς μεταξύ των ατομικών και τωνμη ατομικών λειτουργιών και αποφυγή των τελευταίων.

13

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

Page 14: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Αρχιτεκτονική: επιθέσεις επαναληπτικής εκτέλεσης

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

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

14

Kerberos replay attackΤο Kerberos είναι μια υπηρεσίααυθεντικοποίησης που στηρίζεται στοπρωτόκολλο Needham‐Schroeder, κατάλληλη για χρήση σε κατανεμημένασυστήματα.

Page 15: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Αρχιτεκτονική: επιθέσεις υποκλοπής

Το πρόγραμμα που κρυφά καταγράφει όλη την κίνηση σε ένα τοπικόδίκτυο ονομάζεται υποκλοπέας (sniffer). Ως υποκλοπείς μπορείμερικές φορές να χρησιμοποιηθούνε κάποια σύννομα εργαλεία, για νακαταγράψουν οι επιτιθέμενοι usernames και passwords πουμεταδίδονται χωρίς προστασία.

Προστασία: καλύτερος τρόπος προστασίας σε επίπεδο δικτύου, μεπροσεκτική διαμόρφωση και χρήση "switched" δρομολογητώνδικτύου. Σε επίπεδο εφαρμογή συνιστάται η χρήση κρυπτογράφησης.

15

Page 16: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Αρχιτεκτονική: επιθέσεις υφαρπαγής συνόδου

Ο επιτιθέμενος υφαρπάζει ή ανακτά τον έλεγχο μιας συνόδου. Αυτόμπορεί να συμβεί σε δύο επίπεδα: το επίπεδο του δικτύου και τοεπίπεδο της εφαρμογής. Σε επίπεδο δικτύου προηγείται παρεμβολήκαι υποκλοπή. Σε επίπεδο εφαρμογής προϋποθέτει την απόκτηση IDs συνόδων. Υπάρχουν σήμερα εργαλεία που υλοποιούνε την επίθεση.

Προστασία: σε επίπεδο δικτύου, η χρήση κρυπτογράφησης. Σεεπίπεδο εφαρμογής, πρέπει να απορρίπτεται είσοδος σε ήδη ανοικτήσύνοδο. Άλλα μέτρα προστασίας είναι η επαλήθευση της διεύθυνσηςδικτύου, η μετάδοση cookies μέσω κρυπτογραφημένων καναλιών κλπ

16

1. Ο επιτιθέμενος συνδέεται στο site της τράπεζας ωςχρήστης.

2. Αποδίδεται στον επιτιθέμενο ένα session ID, έστω 2435345.3. Ο επιτιθέμενος στέλνει π.χ. το link www.bank.com/login.php?sessionID=2435345 στο θύμα και το παγιδεύει ώστε νατο επιλέξει.

4. Μόλις το link επιλεγεί από το θύμα στέλνεται στο server τηςτράπεζας ένα αίτημα με login.php?sessionID=2435345.

5. Η εφαρμογή αντιλαμβάνεται ότι η σύνοδος με ID 2435345 υπάρχει και είναι ενεργή και γι αυτό δε δημιουργεί νέασύνολο. Στη συνέχεια το θύμα στέλνει στο login script τασυνθηματικά του και δίνεται πρόσβαση στο λογαριασμό.

Page 17: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Αρχιτεκτονική: επιθέσεις τερματισμού συνόδου

Συμβαίνει όταν ο επιτιθέμενος καταφέρνει να περάσει ένα κίβδηλοπακέτο/μήνυμα τερματισμού συνόδου στο θύμα (π.χ. ένα πακέτο TCP reset μπορεί να τερματίσει συνόδους TCP/IP αλλά κανονικά αυτόμπορεί να αποστέλλεται μόνο από τα μέρη της επικοινωνίας). Μπορείνα αποσκοπεί στη διακοπή της επικοινωνίας ή στην παρεμβολή σε μίασυναλλαγή.

Προστασία: είναι δύσκολη η άμυνα μέσα από την εφαρμογή. Μιαδυνατότητα είναι αυτή να επανεκκινεί τη σύνοδο μιας διακοπείσαςσυναλλαγής.

17

Page 18: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Υλοποίηση: επιθέσεις υπερχείλισης buffer

Πολλές γλώσσες (π.χ. η C) επιτρέπουν/ωθούν τον προγραμματιστή ναεκχωρήσει μια περιοχή ενδιάμεσης αποθήκευσης σταθερού μεγέθουςγια την αποθήκευση συμβολοσειρών που εισάγει ο χρήστης, όπως π.χ. το όρισμα μιας εντολής. Μια συνθήκη υπερχείλισης συμβαίνει όταν ηεφαρμογή δεν ενεργεί επαρκείς ελέγχους ορίων στις συμβολοσειρέςκαι δέχεται μεγαλύτερες από το διαθέσιμο χώρο στην περιοχήαποθήκευσης. Ένας επιτιθέμενος μπορεί έτσι να προκαλέσειυπερχείλιση της περιοχής αποθήκευσης με τρόπο ώστε το πρόγραμμανα εκτελέσει μη αυθεντικές εντολές.

Προστασία: Προτιμούμε γλώσσες (όπως η Java) που από τη σχεδίασητους δεν επιτρέπουν υπερχείλιση περιοχής αποθήκευσης.Εναλλακτικά αποφεύγουμε την ανάγνωση συμβολοσειρώναπροσδιόριστου μήκους σε σταθερού μεγέθους περιοχή αποθήκευσηςεκτός και αν με ασφάλεια μπορούμε να διαβάσουμε υποσυμβολοσειράσταθερού μήκους στην περιοχή αποθήκευσης.

18

Page 19: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Υλοποίηση: επιθέσεις πίσω πόρτας

Αυτή η επίθεση συμβαίνει τη στιγμή της συγγραφής τουςπρογράμματος! Κάποιοι δόλιοι προγραμματιστές γράφουνε κώδικαμέσα στην εφαρμογή που μπορεί αργότερα κατά την εκτέλεση ναπαρακάμψει τον έλεγχο πρόσβασης—π.χ. χρησιμοποιώντας ένα«μαγικό" όνομα χρήστη. Τέτοιου τύπου σημεία πρόσβασηςονομάζονται «πίσω πόρτες».

Προστασία: Να υιοθετηθεί διαδικασία διασφάλισης ποιότητας πουελέγχει όλο τον κώδικα για «πίσω πόρτες».

19

Page 20: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Υλοποίηση: επιθέσεις λάθους ανάλυσης εισόδου

Οι εφαρμογές συχνά δέχονται είσοδο από απομακρυσμένους χρήστεςχωρίς να ελέγχουν τα δεδομένα για δόλιο περιεχόμενο. Η ανάλυση τωνδεδομένων εισόδου ως προς την ασφάλεια είναι σημαντική για τηναποτροπή επιθέσεων. Παράδειγμα είναι η συντακτική ανάλυση πουεφαρμόζουν οι web servers και αγνοεί το χαρακτήρα "../" στιςσυμβολοσειρές εισόδου, δίνοντας έτσι τη δυνατότητα στον επιτιθέμενονα ιχνηλατήσει το σύστημα αρχείων ενδεχομένως και σε περιοχή όπουθα έπρεπε να είχε απαγορευτεί η πρόσβαση. Ακόμη και όταν γίνεταιέλεγχος, αυτός μπορεί να παρακαμφθεί χρησιμοποιώντας εναλλακτικέςαναπαραστάσεις (hexadecimal ή Unicode).Προστασία: Προτείνεται η χρήση έτοιμου κώδικα που έχει γραφεί καιδοκιμαστεί από ειδικούς, για το σκοπό αυτό. Αν χρειαστεί να γράψετεκώδικα μόνοι σας: είναι πιο ασφαλές αν ελέγχεται (ανάμεσα στα άλλα) ότι κάθε χαρακτήρας ανήκει σε μια λίστα «ασφαλών» χαρακτήρων,παρά το να γίνεται σύγκριση με λίστα «επικίνδυνων» χαρακτήρων.

20

Page 21: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Λειτουργία: επιθέσεις άρνησης υπηρεσίας

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

Προστασία: Σχεδιάζουμε ή εκχωρούμε πόρους, και σχεδιάζουμε τολογισμικό ώστε να έχει μέτριες απαιτήσεις σε πόρους του συστήματοςόπως ο χώρος στο δίσκο ή ο αριθμός των ανοικτών αρχείων. Ότανσχεδιάζουμε μεγάλα συστήματα, περιλαμβάνουμε έναν επιτηρητή τηςχρήσης των πόρων, και πρόνοια για να απορρίπτεται ο επιπλέονφόρτος. Δεν είναι αρκετό το λογισμικό απλά να «διαμαρτύρεται» καιστη συνέχεια να πεθαίνει όταν εξαντληθούν οι πόροι.

21

Page 22: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Λειτουργία: επιθέσεις προεπιλεγμένουλογαριασμού

Πολλά λειτουργικά συστήματα και εφαρμογές διαμορφώνονται(προκαθορισμένες ρυθμίσεις), με "standard" usernames καιpasswords. Αυτά τα προεπιλεγμένα usernames και passwords, όπως"guest/guest" ή "field/service", δίνουν τη δυνατότητα εισόδου σεεπιτιθέμενους που γνωρίζουν (ή μπορεί να μαντέψουν τις τιμές).

Προστασία: Αφαίρεσε όλους τους προεπιλεγμένους λογαριασμούς (ήδιασφάλισε ότι ο διαχειριστής το έχει κάνει). Ελέγχουμε πάλι μετάαπό την εγκατάσταση νέου λογισμικού ή νέων εκδόσεων υπάρχοντοςλογισμικού. Κάποια scripts εγκατάστασης μερικές φορέςεπανεγκαθιστούν προεπιλεγμένους λογαριασμούς!

22

Page 23: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Λειτουργία: επιθέσεις διάρρηξης συνθηματικού

Οι επιτιθέμενοι προσπαθούν να μαντέψουν passwords με χαμηλήασφάλεια χρησιμοποιώντας ειδικά προγράμματα. Τα προγράμματααυτά χρησιμοποιούν ειδικούς αλγορίθμους και λεξικά κοινών λέξεωνκαι φράσεων και δοκιμάζουν εκατοντάδες ή χιλιάδες πιθανάusernames/passwords. Ασθενή passwords, όπως κοινά ονόματα, ημερομηνίες γέννησης, ή η λέξη "secret" ή "system", μπορούν ναεντοπιστούν προγραμματιστικά σε ένα κλάσμα του δευτερολέπτου.

Προστασία: Ως χρήστες, επιλέγουμε έξυπνα τα passwords. Ωςπρογραμματιστές, χρησιμοποιούμε εργαλεία που επιβάλουνε τηχρήση εύρωστων passwords. Το καλύτερο είναι σε χρόνο σχεδίασηςνα αποφεύγεται το πρόβλημα των επαναχρησιμοποιήσιμωνpasswords. Άλλες εναλλακτικές η χρήση βιομετρικών συσκευών καιέξυπνων καρτών.

23

Page 24: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

ΑΣΦΑΛΕΙΑΑΣΦΑΛΕΙΑ ΕΦΑΡΜΟΓΩΝΕΦΑΡΜΟΓΩΝ ΙΣΤΟΥΙΣΤΟΥ ((WEBWEB))

Είσοδος από το χρήστηΠώς εντοπίζεται μη έγκυρη είσοδος και γιατί δεν πρέπει ναεμπιστευόμαστε τυφλά ότι προέρχεται από το χρήστη.Πέρασμα δεδομένων σε υποσυστήματαΠερνούν δεδομένα σε υποσυστήματα της εφαρμογής (π.χ. βάσηδεδομένων), αλλά αυτά τα «δεδομένα» συμβαίνει να περιέχουνχαρακτήρες για τους οποίους το υποσύστημα κάνει κάτιδιαφορετικό από το αναμενόμενο.Διαχείριση εξόδου: πρόβλημα cross-site scriptingΔεδομένα που αποστέλλονται από τον εξυπηρετητή στουςφυλλομετρητές των χρηστών της εφαρμογής, αν δεφιλτράρονται μπορεί να είναι επικίνδυνα.

ΑΞΙΟΠΙΣΤΙΑ & ΑΣΦΑΛΕΙΑ ΛΟΓΙΣΜΙΚΟΥ

Page 25: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Είσοδος από το χρήστη

Τα προγράμματα είναι κατασκευασμένα για να δέχονται δεδομένα, να ταεπεξεργάζονται, και να παράγουν αποτελέσματα (έξοδο). Ο υπολογισμόςπου εκτελούνε τα προγράμματα εξαρτάται από την είσοδο που δέχονται.

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

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

25

Page 26: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Είσοδος από το χρήστη

Λάθος δεδομένα θα οδηγήσουν το πρόγραμμα στο να πάρει λάθοςαποφάσεις και η εκτέλεσή του να είναι πιθανώς καταστροφική. Για νασιγουρευτούμε ότι η εφαρμογή λειτουργεί σωστά, πρέπει να εξετάζουμετην εγκυρότητα των δεδομένων εισόδου. Αυτή η διαδικασία λέγεταιεπικύρωση δεδομένων εισόδου (input validation).

Η επικύρωση είναι μία διαδικασία λήψης απόφασης του αν τα δεδομέναείναι αποδεκτά βάση των κανόνων της εφαρμογής.

26

Page 27: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Είσοδος από το χρήστη

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

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

27

Page 28: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Είσοδος από το χρήστη

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

Μαύρη λίστα: Αναγνώριση «κακών» δεδομένων και αφαίρεσή τους. Διαθέτουμε μια λίστα με δεδομένα που δε θεωρούνται ασφαλή. Δυστυχώς, αυτή η προσέγγιση δεν είναι ιδιαίτερα εποικοδομητική, γιατί εξαρτάται από την αντίληψη του προγραμματιστή.Λευκή λίστα: Αναγνώριση καλών δεδομένων και αφαίρεση τωνυπολοίπων (αρχή της εξορισμού άρνησης).Διαθέτουμε μια λίστα των δεδομένων που θεωρούμε ακίνδυνα. Κάθεφορά που διαβάζουμε κάτι που δεν υπάρχει στη λίστα, υποθέτουμε ότιμπορεί αυτό να είναι επιβλαβές, και το αφαιρούμε.

28

Page 29: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Πέρασμα δεδομένων σε υποσυστήματα

Οι εφαρμογές ιστού περνάνε δεδομένα σε ένα ή περισσότεραυποσυστήματα (βάσεις SQL, λειτουργικά συστήματα, βιβλιοθήκες, διερμηνευτές εντολών κελύφους, έγγραφα XML και παλαιέςεφαρμογές).

Η επικοινωνία με τα υποσυστήματα συχνά γίνεται δημιουργώνταςσυμβολοσειρές (strings) με δεδομένα ή πληροφορίες ελέγχου.

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

29

Page 30: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Πέρασμα δεδομένων σε υποσυστήματα

Για την εφαρμογή ιστού τα δεδομένα που στέλνονται σταυποσυστήματα είναι συμβολοσειρές, δηλ. ακολουθίες χαρακτήρων. Όταν τα δεδομένα περνάνε στα υποσυστήματα, τότε ένας ήπερισσότεροι χαρακτήρες μπορεί εκεί να μην αντιμετωπίζονται ωςκανονικοί χαρακτήρες, αλλά ως χαρακτήρες με ειδική σημασία (μετα‐χαρακτήρες), που επηρεάζουν την εκτέλεση μιας εργασίας.Προβλήματα ασφάλειας έχουμε όταν οι προγραμματιστέςπροσπαθώντας να περάσουν «καθαρά» δεδομένα στα υποσυστήματα, συμβαίνει να περνάνε δεδομένα με μετα‐χαρακτήρες, που εκτρέπουνένα υποσύστημα σε μη αναμενόμενη συμπεριφορά.Όταν ένα υποσύστημα συναντήσει μετα‐χαρακτήρα, τότε σταματάπλέον να διαβάζει το δεδομένο. Διαβάζει εντολές ή εκτρέπεται ηανάγνωση σε ένα διαφορετικό σύνολο δεδομένων.Αν ο επιτιθέμενος περάσει πληροφορία ελέγχου σε ένα υποσύστημα, τότε μπορεί δυνητικά να το κατευθύνει σε εργασίες που δεν έχουνπροβλεφθεί από τη σχεδίαση της εφαρμογής.

30

Page 31: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Πέρασμα δεδομένων σε υποσυστήματα

Κατηγοριοποίηση επιθέσεων εισαγωγής κώδικα31

Page 32: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Ένεση SQL εντολών (SQL injection)

Κατά την ένεση SQL εντολών, ο επιτιθέμενος τροποποιεί ή εισάγειερωτήματα SQL σε υποκείμενη βάση δεδομένων συνθέτονταςκατάλληλη είσοδο για μια εφαρμογή.

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

32

Page 33: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Παράδειγμα ένεσης SQL εντολών

Έστω ότι ένας χρήστης εγγράφει μόνο το πραγματικό του όνομα και τοπρόγραμμα Java της εφαρμογής παίρνει το όνομα αυτό από τη φόρμαεγγραφής και το αποθηκεύει σε μία βάση δεδομένων:

name = request.getParameter("name");query="INSERT INTO Usr (RealName) VALUES (’" + name + "’)";

Ένας καλοπροαίρετος χρήστης θα έγραφε, π.χ. ‘‘Panagiotis Katsaros’’, καιαυτό θα είχε ως συνέπεια να δημιουργηθεί το ερώτημα:

INSERT INTO Usr (RealName) VALUES (’Panagiotis Katsaros’)

Ένας άλλος χρήστης θα μπορούσε να γράψει, π.χ. ‘‘JamesO’Connor’’, καιαυτό θα είχε ως συνέπεια να δημιουργηθεί το ερώτημα:

INSERT INTO Usr (RealName) VALUES (’James O’Connor’)

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

33

Page 34: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Παράδειγμα ένεσης SQL εντολών

Τώρα αρχίζει η επίθεση. Υποθέτουμε ότι έχουμε κατασκευάσει πουαπαιτεί οι χρήστες να κάνουν log‐in μέσω μιας φόρμας.

userName = request.getParameter("user");password = request.getParameter("pass");query = "SELECT * FROM Usr " + "WHERE UserName=’"

+ userName + "’ " + "AND Password=’" + password + "’";

Ο επιτιθέμενος γνωρίζει, ή μαντεύει, ότι ένας ή περισσότεροι χρήστεςονομάζονται ‘‘john’’. Βάζει λοιπόν στο πεδίο user name

john’ --

και αφήνει κενό το password. Τελικά η εφαρμογή στέλνει στη βάση τοSELECT * FROM Usr WHERE UserName=’john’ --’ AND Password=’’

Οι χαρακτήρες ‐‐ αντιμετωπίζονται από την SQL ως αρχή σχολίου και έτσιαπενεργοποιείται ο έλεγχος για το password!

34

Page 35: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Παράδειγμα 2 ένεσης SQL εντολών

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

custId = Request.QueryString("id")query = "SELECT * FROM Customer WHERE CustId=" & custId

Εδώ υποτίθεται ότι το custId έχει αριθμητική τιμή (δεν υπάρχουν “) αλλάη γλώσσα VBScript του ASP δεν κάνει έλεγχο τύπων και δεν είναι η μόνηπου δεν το κάνει.Έτσι ο επιτιθέμενος περιλαμβάνει στην custId όχι μόνο αριθμητικάψηφία αλλά και χαρακτήρας και τελικά καταφέρνει να περάσει ως τιμήτης custId την:

1; DELETE FROM Customer

Η εφαρμογή μας τελικά συνθέτει το ερώτημα: SELECT * FROM Customer WHERE CustId=1; DELETE FROM Customer

Η επίθεση πέτυχε! Όλοι οι πελάτες θα διαγραφούν από τη βάση.

35

Page 36: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Ένεση SQL εντολών (SQL injection)

Υπάρχουν πολλοί διαφορετικοί τύποι ένεσης εντολών SQL και γενικά δενείναι εύκολη η πρόβλεψη της δράσης του επιτιθέμενου και η σχεδίασηκατάλληλης προστασίας για όλες τις περιπτώσεις.

Κατηγοριοποίηση με βάση τηνμέθοδο της επίθεσης

Κατηγοριοποίηση με βάση τα τεχνικά χαρακτηριστικά ανάπτυξης τηςεπίθεσης

36

Page 37: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Αντιμετώπιση ένεσης SQL εντολών

Παραμετροποίηση ερωτήσεων: οι παράμετροι ενός SQL ερωτήματος δενενσωματώνονται απευθείας στο ερώτημα, αλλά αποθηκεύονται σεμεταβλητές άρρηκτα δεμένες με έναν τύπο δεδομένων και στη συνέχειαβασιζόμαστε στον έλεγχο τύπων της γλώσσας της εφαρμογής.Αποφυγή χαρακτήρων που έχουν ειδική σημασία στην SQL. Ο οδηγός τηςSQL αναφέρει όλους τους μετα‐χαρακτήρες και επομένως είναι εφικτό νακατασκευαστεί μια περιεκτική λίστα χαρακτήρων, που απαιτούνμετάφραση. Η τακτική εναποθετεί την ευθύνη αποφυγής μετα‐χαρακτήρων στον προγραμματιστή και είναι επιρρεπής σε λάθη.

37

Page 38: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Ένεση εντολών κελύφους (Shell command injection)

Κάποιες εφαρμογές web περιέχουν προγράμματα Perl CGI. Η Perl είναι και σήμερα αρκετά διαδεδομένη γλώσσα για εφαρμογές web.

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

Όταν ένα Perl πρόγραμμα πρέπει να εκτελέσει εξωτερική εντολή, σεπολλές περιπτώσεις ο διερμηνευτής της γλώσσας εκχωρεί τον έλεγχοεκτέλεσης σε ένα κέλυφος λειτουργικού συστήματος, όπως τα sh καιbash του Unix. Δυστυχώς, αυτά αποδέχονται ένα αρκετά μεγάλοσύνολο μετα‐χαρακτήρων και αυτό ενέχει σημαντικούς κινδύνους ανδεν έχει προηγηθεί φιλτράρισμα.

38

Page 39: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Παράδειγμα ένεσης εντολών κελύφους

Θεωρήστε μια ιστοσελίδα με Perl που δίνει τη δυνατότητα να δούμεποιοι χρήστες είναι logged σε κάποιον από τους σταθμούς Unix ενόςπανεπιστημίου.Στο Unix, υπάρχει το πρόγραμμα finger που δίνει τη ζητούμενηπληροφορία αν το καλέσουμε μέσα από το πρόγραμμα Perl.

$username = $form"username";print ‘finger $username‘;

Στην Perl, οι χαρακτήρες ‘ σημαίνουν: «εκτέλεση από το κέλυφος τηςεντολής ανάμεσα στα ‘ και αντικατάσταση όλων των χαρακτήρωνανάμεσα στα ‘ με το αποτέλεσμα της επεξεργασίας».Τι θα συμβεί αν ζητηθεί από το πρόγραμμα η αναζήτηση χρήστη μεusername

qwe; rm -rf /

Προσέχουμε τον μετα‐χαρακτήρα ;. Θα εκτελούνταν η εντολήfinger qwe; rm -rf /

39

Page 40: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Επικοινωνία με προγράμματα C/C++

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

Οι περισσότερες εφαρμογές ιστού επικοινωνούνε με συστήματα πουέχουν γραφεί στη γλώσσα C. Ανάλογα με το ποιο λογισμικό πρόκειταιμπορεί να χρειαστεί να εστιάσουμε σε διαφορετικά σύνολα μετα‐χαρακτήρων, αλλά όλα τα προγράμματα σε C ή C++ είναι ευαίσθητα σεένα χαρακτήρα με ειδική σημασία: το null‐byte (τέλος συμβολοσειράς).

Οι γλώσσες προγραμματισμού του web κωδικοποιούν τα strings μεάμεση αναφορά στο μήκος και αντιμετωπίζουν το null‐byte ως έναχαρακτήρα όπως όλοι οι άλλοι. Όταν περνάμε strings σε προγράμματαπου έχουν γραφεί σε C, χρειάζεται προσοχή στα null‐bytes, για να μηνπέσουμε θύματα της επίθεσης poisonous null­byte.

40

Page 41: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Επίλυση προβλημάτων μετα‐χαρακτήρων

Για να επιλύσουμε τα προβλήματα που περιγράφηκαν μετους μετα‐χαρακτήρες, πρέπει πάντα να κατανοούμε πώςτο υποσύστημα στο επόμενο επίπεδο θα ερμηνεύσει ταδεδομένα. Αυτό δεν είναι τόσο εύκολο όσο ακούγεται.Κανόνας 1: Πάντα διαχειριζόμαστε τους μετα‐χαρακτήρες ότανπερνάμε δεδομένα σε υποσύστημα της εφαρμογής web.Κανόνας 2: Πάντα περνάμε τα δεδομένα στα υποσυστήματαανεξάρτητα από την πληροφορία ελέγχου της εκτέλεσηςεντολών.

41

Page 42: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Συμβουλή

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

Δυστυχώς πολλές δημοφιλείς σήμερα έτοιμες επεκτάσειςγια εφαρμογές έχουνε τέτοια προβλήματα. Συμβουλευτείτε μια βάση πληροφοριών τρωσιμότηταόπως π.χ. την SecurityFocus ή την Common Weakness Enumeration (CWE) στο http://cwe.mitre.org/.

42

Page 43: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

ΜΕΣΑΜΕΣΑ ΕΠΙΤΕΥΞΗΣΕΠΙΤΕΥΞΗΣ ΑΞΙΟΠΙΣΤΙΑΣΑΞΙΟΠΙΣΤΙΑΣ((MEANS FOR DEPENDABILITYMEANS FOR DEPENDABILITY))

Παρεμπόδιση Βλαβών (fault prevention)Μεθοδολογίες ανάπτυξης λογισμικού/υλικού και συστημάτωνπου προλαμβάνουν πιθανά ελαττωματική σχεδίαση. Αφαίρεση Βλαβών (fault removal)Κατά την ανάπτυξη ή κατά τη λειτουργία του συστήματος.Βλαβοανοχή (fault tolerance)Αποσκοπεί στην αποφυγή αποτυχιών μέσω του εντοπισμούλαθών και της ανάκαμψης (recovery) του συστήματος.Πρόβλεψη Βλαβών (fault forecasting)Λαμβάνει χώρα με εκτίμηση της συμπεριφοράς του συστήματοςως προς την εμφάνιση και την ενεργοποίηση βλαβών.

ΑΞΙΟΠΙΣΤΙΑ & ΑΣΦΑΛΕΙΑ ΛΟΓΙΣΜΙΚΟΥ

Page 44: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

2

Μέσα επίτευξης αξιοπιστίας

Page 45: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Παρεμπόδιση βλαβών (fault prevention)

Γλώσσες, φορμαλισμοί, εργαλεία standards ανάπτυξηςπ.χ. γλώσσες με αυστηρό σύστημα τύπων, απόκρυψηπληροφορίας, τμηματοποίηση

Οργάνωση & προγραμματισμός έργου, εκτίμηση ρίσκουγια την ανάπτυξη του συστήματοςΑνάλυση κινδύνου (hazard analysis)

κίνδυνος: υπαρκτή ή δυνητική συνθήκη που μπορεί να οδηγήσει σεαποτυχίαανάλυση: συστηματική & επαναληπτική διαδικασία αναγνώρισης, ιεράρχησης και περιορισμού του κινδύνου (π.χ. fault tree analysis, failure mode effect & criticality analysis)

3

Page 46: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Παρεμπόδιση βλαβών (fault prevention)4

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

ΥλοποίησηΑσφαλής προγραμματισμός (defensive programming)Απομόνωση/διαμελισμός (segregation/partitioning)Διεργασία παρατήρησης (watchdog)

Page 47: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Αφαίρεση βλαβών (fault removal)

Η αφαίρεση βλαβών εκτελείται επαναληπτικά καθ’ όλη τηδιάρκεια του κύκλου ανάπτυξης ελέγχοντας το αποτέλεσμα τηςκάθε δραστηριότητας για πληρότητα, συνέπεια, συμμόρφωσησε standards και κανόνες και ιχνηλασιμότητα (traceability).

ΕπαλήθευσηΣτατική ανάλυσηΔυναμική ανάλυση

ΔιάγνωσηΕπιδιόρθωση

5

αποσφαλμάτωση

Page 48: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Ανίχνευση λαθών (error detection)

Ανάκαμψη (recovery): μετατρέπει την κατάσταση του συστήματοςπου περιέχει ένα ή περισσότερα λάθη σε μία κατάσταση χωρίς λάθη

Διαχείριση λάθους (error handling)rollbackcompensationrollforward

Διαχείριση βλάβης (fault handling)διάγνωσηαπομόνωση (isolation)αναδιαμόρφωση (reconfiguration)επανεκκίνηση

6

Βλαβοανοχή (fault tolerance)ταυτόχρονη ανίχνευση

επακόλουθη ανίχνευση

Page 49: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

7

Βλαβοανοχή (fault tolerance)

Page 50: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Η εκτίμηση του αριθμού, της έκτασης και των συνεπειώντων βλαβών σε ένα σύστημα.Στηρίζεται στην αποτίμηση της συμπεριφοράς τουσυστήματος ως προς την εμφάνιση και την ενεργοποίησηβλαβών:ποιοτική ή τακτική (ordinal) αποτίμηση με στόχο τηναναγνώριση και την κατάταξη των καταστάσεων αποτυχίας ήτων συνδυασμών γεγονότων που οδηγούν σε αποτυχίεςΠαράδειγμα μεθόδου: Failure Mode and Effect Analysis (FMEA)ποσοτική ή πιθανοκρατική αποτίμηση για την εκτίμηση τηςπιθανότητας να ικανοποιούνται κάποιες ιδιότητες, πουαποκαλούμε μέτρα.Παράδειγμα μεθόδου: αλυσίδες Markov, στοχαστικά δίκτυα Petri

8

Πρόβλεψη βλαβών (fault forecasting)

Page 51: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Τύποι βλαβών

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

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

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

9

Page 52: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Αφαίρεση βλαβών: επαλήθευση με στατική ανάλυση

10

γράφος ροήςελέγχου (control flow graph)

π.χ. ανάλυση ροήςδεδομένων (data flow analysis)

if (a != NULL) b = a.get();

else b = NULL;

a.callMethod();

if (a > b)bb0

nConsec = 0;bb1

a.callMethod();bb3

if (a != NULL)bb0

b = a.get();bb1

b = NULL;bb2

if (a > b)bb0

if (a > b)bb0

nConsec = 0;bb1

nConsec = 0;bb1

a.callMethod();bb3

a.callMethod();bb3

if (a != NULL)bb0

b = a.get();bb1

b = NULL;bb2

if (a != NULL)bb0

if (a != NULL)bb0

b = a.get();bb1

b = a.get();bb1

b = NULL;bb2

b = NULL;bb2

Πηγαίος κώδικας

Page 53: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Αφαίρεση βλαβών: επαλήθευση μεmodel checking

11

Page 54: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Αφαίρεση βλαβών: επαλήθευση με δοκιμές (testing)

12

Page 55: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Βλαβοανοχή: τύποι βλαβών

Σταθερές βλάβες (solid/hard faults): η ενεργοποίησή τουςαναπαράγεταιπ.χ. από φυσικό παράγοντα ή λόγω απρόβλεπτης αλληλεπίδρασηςΛανθάνουσες βλάβες (elusive/soft faults): δεν ενεργοποιούνται σεσταθερή βάσηπ.χ. βλάβες από την ανάπτυξη λογισμικού, βλάβες σε μνήμες ημιαγωγών, απόαλλαγές σε παραμέτρους λειτουργίας στοιχείων hardware, συνθήκες πουεμφανίζονται όταν ο φόρτος του συστήματος υπερβαίνει ένα επίπεδοΟι βλάβες σε στοιχεία hardware ή σε στοιχεία που αλληλεπιδρούν με τοπεριβάλλον (π.χ. sensors) λέγονται επίσης εφήμερες βλάβες.Οι λανθάνουσες και οι εφήμερες βλάβες επιδέχονται παρόμοιεςστρατηγικές βλαβοανοχής. Και οι δύο λέμε ότι εμφανίζονται ωςασυνεχείς βλάβες (intermittent faults).Τα λάθη που προκαλούνται από ασυνεχείς βλάβες λέγονται soft errors.

13

Page 56: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Στρατηγικές βλαβοανοχής14

Page 57: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

15

Στρατηγικές βλαβοανοχής

Page 58: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

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

16

Βλαβοανοχή λογισμικού

Page 59: ΕΠΙΘΕΣΕΙΣ ΠΡΟΣΤΑΣΙΑportal.tee.gr/portal/page/portal/teetkm/DRASTHRIOTHTES/...Ορολογίαασφάλειας Ελάττωμαασφάλειας(security flaw)

Η βλαβοανοχή σε μία εκτελούμενη έκδοση λογισμικού υλοποιείπρόνοιες ανίχνευσης, απομόνωσης και διαχείρισης λαθών. Όλα τα λάθηενεργοποιούνται από προϋπάρχουσες βλάβες λόγω σχεδιαστικώνπαραλείψεων. Η βλαβοανοχή σε πολλές εκδόσεις του λογισμικού επιστρατεύειδιαφορετικές παραλλαγές υλοποίησης με ένα δομημένο τρόπο (π.χ. ζεύγη διεργασιών σε ρόλο βασικής ‐ εφεδρικής), έτσι ώστε οισχεδιαστικές παραλείψεις σε μία έκδοση να μην οδηγούν σε αποτυχίες .

17

Βλαβοανοχή λογισμικού