sans top 20 security vulnerabilities software applications
Μάθετε και κατανοήστε τις 20 κορυφαίες ευπάθειες ασφαλείας του SANS στις εφαρμογές λογισμικού με παραδείγματα σε αυτό το σεμινάριο:
Η λέξη ΧΩΡΙΣ δεν είναι απλώς μια συνηθισμένη λεξική λέξη αλλά σημαίνει SysAdmin , Ελεγχος , Δίκτυο , και Ασφάλεια .
Σε αυτό το σεμινάριο, θα μάθουμε για τις 20 κορυφαίες αδυναμίες ασφαλείας του SANS που μπορούμε να βρούμε σε προγράμματα λογισμικού και τι μπορούμε να κάνουμε για να το μετριάσουμε.
Τι θα μάθετε:
- Επιπτώσεις των SAN στην κοινότητα ασφάλειας στον κυβερνοχώρο
- Λίστα των 20 κορυφαίων ευπαθών στο SANS λογισμικού
- # 1) CWE-119: Σφάλμα προσωρινής μνήμης
- # 2) CWE-79: Διαδικτυακή δέσμη ενεργειών
- # 3) CWE-20: Σφάλμα εισόδου χωρίς επικύρωση
- # 4) CWE-200: Σφάλμα έκθεσης ευαίσθητων πληροφοριών
- # 5) CWE-125: Σφάλμα ανάγνωσης εκτός ορίων
- # 6) CWE-89: SQL Injection
- # 7) CWE-416: Μνήμη που ελευθερώθηκε προηγουμένως
- # 8) CWE-190: Σφάλμα ακέραιας υπερχείλισης
- # 9) CWE-352: Πλαστά αιτήματα μεταξύ ιστότοπων
- # 10) CWE-22: Διαδρομή καταλόγου
- # 11) CWE-78: Έγχυση εντολών OS
- # 12) CWE-787: Σφάλμα εγγραφής εκτός ορίου
- # 13) CWE-287: Λανθασμένο σφάλμα ελέγχου ταυτότητας
- # 14) CWE-476: Διαχωρισμός δείκτη NULL
- # 15) CWE-732: Εσφαλμένη εκχώρηση άδειας
- # 16) CWE-434: Απεριόριστη μεταφόρτωση αρχείων
- # 17) CWE-611: Έκθεση πληροφοριών μέσω οντοτήτων XML
- # 18) CWE-94: Έγχυση κώδικα
- # 19) CWE-798: Κλειδί πρόσβασης με κωδικό
- # 20) CWE-400: Μη ελεγχόμενη κατανάλωση πόρων
- Συχνές Ερωτήσεις
- συμπέρασμα
Επιπτώσεις των SAN στην κοινότητα ασφάλειας στον κυβερνοχώρο
Σύμφωνα με ΧΩΡΙΣ , ο ΧΩΡΙΣ Το Ινστιτούτο ιδρύθηκε ως ερευνητικός και εκπαιδευτικός οργανισμός. Τα διάφορα προγράμματα ασφαλείας του είναι πολύ περιεκτικά και έχουν θετική επίδραση σε περισσότερους από 165.000 επαγγελματίες ασφάλειας παγκοσμίως.
Μπορούμε να πούμε σωστά ότι με αυτό το είδος κάλυψης που προέρχεται από το SANS και άλλες θετικές κριτικές, τους καθιστά τον πιο αξιόπιστο και μακράν τον μεγαλύτερο οργανισμό εκπαίδευσης InfoSec και διάφορες πιστοποιήσεις ασφαλείας στον κόσμο.
Αυτό το άρθρο θα επικεντρωθεί στα 20 κορυφαία σφάλματα SANS που μπορούν να κάνουν το λογισμικό σας ευάλωτο σε επιθέσεις και ορισμένα από τα στοιχεία ελέγχου ασφαλείας που μπορείτε να εφαρμόσετε για να μετριάσετε αυτά τα σφάλματα. Αν και μπορούμε να βρούμε περισσότερα από 20, αλλά θα συζητήσουμε τις κορυφαίες 20 ευπάθειες.
Λίστα των 20 κορυφαίων ευπαθών στο SANS λογισμικού
- CWE-119 : Σφάλμα προσωρινής μνήμης
- CWE-79 : Σενάριο μεταξύ ιστότοπων
- CWE-20 : Σφάλμα εισόδου χωρίς επικύρωση
- CWE-200 : Σφάλμα έκθεσης ευαίσθητων πληροφοριών
- CWE-125 : Σφάλμα ανάγνωσης εκτός ορίων
- CWE-89 : SQL Injection
- CWE-416 : Δωρεάν σφάλμα μνήμης
- CWE-190 : Σφάλμα ακέραιας υπερχείλισης
- CWE-352 : Συγχώνευση αιτήσεων μεταξύ ιστότοπων
- CWE-22 : Διαδρομή καταλόγου
- CWE-78 : Ένεση εντολών OS
- CWE-787 : Σφάλμα εγγραφής εκτός ορίων
- CWE-287 : Λανθασμένο σφάλμα ελέγχου ταυτότητας
- CWE-476 : Δείκτης αναφοράς NULL
- CWE-732 : Εσφαλμένη εκχώρηση άδειας
- CWE-434 : Απεριόριστη μεταφόρτωση αρχείων
- CWE-611 : Έκθεση πληροφοριών μέσω οντοτήτων XML
- CWE-94 : Έγχυση κώδικα
- CWE-798 : Κλειδί πρόσβασης με κωδικοποίηση
- CWE-400 : Μη ελεγχόμενη κατανάλωση πόρων
Τι σημαίνει ο όρος CWE;
ο Κοινή απαρίθμηση αδυναμίας (CWE) είναι μια αποδεκτή από την κοινότητα λίστα ευπαθειών λογισμικού και υλικού με κωδικό αναγνώρισης εκχωρημένο για κάθε αδυναμία. Ο στόχος είναι να εντοπιστούν διάφορα ελαττώματα στο λογισμικό και το υλικό για να είναι σε θέση να διορθώσουν και να μετριάσουν όλα αυτά τα ελαττώματα.
# 1) CWE-119: Σφάλμα προσωρινής μνήμης
Αυτό το ελάττωμα παρουσιάζεται συνήθως κατά τη διάρκεια των σταδίων Αρχιτεκτονικής και Σχεδιασμού, Υλοποίησης, Λειτουργίας του SDLC.
Αυτή η υπερχείλιση buffer συμβαίνει όταν μια διαδικασία εφαρμογής προσπαθεί να αποθηκεύσει περισσότερα δεδομένα από αυτά που μπορεί να διατηρήσει στη μνήμη. Δεδομένου ότι τα buffer μπορούν να αποθηκεύσουν μόνο ένα επίπεδο δεδομένων και όταν φτάσει και ξεπεραστεί αυτό το επίπεδο, τα δεδομένα ρέουν σε μια άλλη θέση μνήμης που μπορεί να καταστρέψει τα δεδομένα που ήδη περιέχονται σε αυτό το buffer.
Αυτό το συμβάν μερικές φορές συμβαίνει κατά λάθος μέσω κάποιου σφάλματος προγραμματισμού, αλλά το αποτέλεσμα θα μπορούσε να είναι καταστροφικό, καθώς αυτό μπορεί να διαγράψει δεδομένα, να κλέψει εμπιστευτικές πληροφορίες και ακόμη και ολόκληρη η εφαρμογή θα μπορούσε να διακοπεί λόγω αυτής της υπερχείλισης του buffer.
Το παρακάτω παράδειγμα δείχνει ένα buffer που έχει εκχωρηθεί με χώρο αποθήκευσης 8 bytes. Αλλά ξεχειλίζει από 2 bytes λόγω των περισσότερων δεδομένων που στάλθηκαν για εκτέλεση.
(εικόνα πηγή )
# 2) CWE-79: Διαδικτυακή δέσμη ενεργειών
Το Cross-site Scripting (XSS) είναι μια επίθεση με ένεση που συνήθως συμβαίνει όταν ένας κακόβουλος ηθοποιός ή ένας εισβολέας εισάγει κακόβουλο ή επιβλαβές σενάριο σε μια εφαρμογή ιστού που μπορεί να εκτελεστεί μέσω των προγραμμάτων περιήγησης στο Web. Μόλις το κακόβουλο σενάριο βρεθεί στο παραβιασμένο σύστημα, μπορεί να χρησιμοποιηθεί για την εκτέλεση διαφορετικών κακόβουλων δραστηριοτήτων.
Ορισμένες από τις κακόβουλες δραστηριότητες μπορεί να έχουν τη μορφή μεταφοράς ιδιωτικών πληροφοριών, όπως cookie που έχουν τις πληροφορίες περιόδου λειτουργίας από τον υπολογιστή του θύματος στον υπολογιστή του εισβολέα.
Εμφάνιση σεναρίων μεταξύ ιστότοπων:
- Όταν μη επικυρωμένα και μη αξιόπιστα δεδομένα εισάγονται σε μια εφαρμογή Ιστού μέσω του αιτήματος φόρμας Ιστού.
- Όταν η εφαρμογή ιστού εξάγει αμέσως μια ιστοσελίδα που περιέχει αυτά τα κακόβουλα δεδομένα.
- Κατά τη διαδικασία δημιουργίας μιας σελίδας, το λογισμικό δεν επικυρώνει τα δεδομένα, τα οποία φιλοξενούν το περιεχόμενο που μπορεί να εκτελεστεί από ένα πρόγραμμα περιήγησης ιστού, όπως HTML και JavaScript.
- Το θύμα επισκέπτεται ασυνείδητα τη σελίδα που δημιουργήθηκε μέσω ενός προγράμματος περιήγησης ιστού, που φιλοξενεί το κακόβουλο σενάριο που εγχύθηκε μέσω της χρήσης των μη αξιόπιστων δεδομένων.
- Το κακόβουλο σενάριο προέρχεται από μια σελίδα που εστάλη από τον διακομιστή ιστού του εισβολέα, το πρόγραμμα περιήγησης ιστού του συστήματος που έχει παραβιαστεί στη συνέχεια προχωρά στην επεξεργασία του κακόβουλου σεναρίου.
- Αυτή η ενέργεια παραβιάζει την πολιτική του προγράμματος περιήγησης ιστού για την ίδια προέλευση, η οποία ορίζει ότι τα σενάρια που προέρχονται από έναν τομέα δεν πρέπει να έχουν πρόσβαση σε πόρους ή να εκτελούν κώδικα σε άλλον διαφορετικό τομέα εκτός από τον δικό του τομέα.
(εικόνα πηγή )
# 3) CWE-20: Σφάλμα εισόδου χωρίς επικύρωση
Η εφαρμογή λαμβάνει είσοδο, αλλά δεν επικυρώνει την είσοδο, εάν έχει όλες τις απαραίτητες λεπτομέρειες για να γίνει αποδεκτή στο σύστημα επεξεργασίας.
Όταν υπάρχει απολύμανση εισόδου, αυτό μπορεί να χρησιμοποιηθεί για τον έλεγχο τυχόν δυνητικά επικίνδυνων εισόδων, προκειμένου να διασφαλιστεί ότι οι είσοδοι είναι ασφαλείς για επεξεργασία με τον πηγαίο κώδικα ή όταν πρόκειται για είσοδο που απαιτείται για την επικοινωνία με άλλα στοιχεία.
Όταν τέτοιες είσοδοι δεν απολυμαίνονται σωστά ή επικυρώνονται, τότε αυτό θα ανοίξει το δρόμο για έναν εισβολέα να στείλει μια κακόβουλη είσοδο την οποία η κύρια εφαρμογή θα επεξεργαστεί γενναιόδωρα και αυτό θα οδηγήσει σε αλλαγές στη ροή ελέγχου, αυθαίρετος έλεγχος ενός πόρου ή αυθαίρετος κώδικας εκτέλεση.
Οι παρακάτω εικόνες δείχνουν ότι μια καλή εφαρμογή δεν πρέπει να δέχεται σενάριο ή εντολή ως είσοδο. Εάν αυτές οι είσοδοι δεν απολυμανθούν σωστά, η εφαρμογή θα την επεξεργαστεί θεωρώντας ότι είναι ένα έγκυρο αίτημα.
(εικόνα πηγή )
# 4) CWE-200: Σφάλμα έκθεσης ευαίσθητων πληροφοριών
Αυτό συμβαίνει όταν η εφαρμογή εκθέτει εν γνώσει και άγνωστα πληροφορίες που είναι εμπιστευτικές και ευαίσθητες σε έναν εισβολέα που δεν έχει την άδεια πρόσβασης σε αυτές τις πληροφορίες.
Διαφορετικά σφάλματα οδηγούν σε έκθεση αυτών των πληροφοριών σε έναν εισβολέα. Η σοβαρότητα αυτού του σφάλματος ποικίλλει ανάλογα με το πλαίσιο στο οποίο λειτουργεί η εφαρμογή, τον τύπο ευαίσθητων πληροφοριών που αποκαλύπτονται και τι μπορεί να κερδίσει ο ηθοποιός από τις εκτεθειμένες πληροφορίες.
Ακολουθούν μερικές ευαίσθητες πληροφορίες που θα μπορούσαν να εκτεθούν:
- Προσωπικά στοιχεία όπως προσωπικά μηνύματα, οικονομικά δεδομένα, αρχεία κατάστασης υγείας, γεωγραφική τοποθεσία ή στοιχεία επικοινωνίας
- Λεπτομέρειες διαμόρφωσης συστήματος και περιβάλλον, για παράδειγμα, το λειτουργικό σύστημα και τα εγκατεστημένα πακέτα
- Επιχειρηματικό αρχείο και πνευματική ιδιοκτησία
- Λεπτομέρειες διαμόρφωσης δικτύου
- Κατάσταση εσωτερικής εφαρμογής
- Μεταδεδομένα όπως οι κεφαλίδες μηνυμάτων
Μερικές φορές θα μπορούσαν να υπάρξουν τεχνικοί κνησμοί όπως σφάλμα σύνδεσης βάσης δεδομένων, σφάλμα χρόνου εκτέλεσης και σφάλμα δικτύου στις εφαρμογές ή τους ιστότοπούς μας.
Εάν αυτά τα σφάλματα δεν αντιμετωπιστούν σωστά κατά τη διάρκεια της ανάπτυξης, δηλαδή όταν η εφαρμογή εμφανίζει το μήνυμα σφάλματος, θα μπορούσε να εμφανίσει πληροφορίες στο κοινό τις οποίες μπορεί να χρησιμοποιήσει ένας εισβολέας για κακόβουλους σκοπούς, όπως η παρακάτω εικόνα.
# 5) CWE-125: Σφάλμα ανάγνωσης εκτός ορίων
Αυτό συμβαίνει συνήθως όταν η εφαρμογή διαβάζει δεδομένα πέρα από το κανονικό επίπεδο, είτε στο τέλος είτε πριν από την έναρξη του buffer. Αυτό δίνει ασύμφορη πρόσβαση σε έναν εισβολέα για να διαβάσει ευαίσθητες πληροφορίες από άλλες θέσεις μνήμης, οι οποίες μπορούν επίσης να οδηγήσουν σε σφάλμα συστήματος ή εφαρμογής.
Ένα σφάλμα θα συμβεί σίγουρα όταν ο κώδικας διαβάζει δεδομένα και πιστεύει ότι υπάρχει ένας δείκτης που σταματά τη λειτουργία ανάγνωσης σαν NULL που εφαρμόζεται σε μια συμβολοσειρά
Στον ακόλουθο κώδικα, η συνάρτηση ανακτά μια τιμή από μια θέση ευρετηρίου πίνακα, η οποία με τη σειρά της είναι η παράμετρος εισόδου στη συνάρτηση.
(εικόνα πηγή )
Από τον παραπάνω κώδικα, μπορούμε να δούμε ότι η συνάρτηση επαληθεύει ότι το δεδομένο ευρετήριο πίνακα είναι μικρότερο από το μέγιστο μήκος του πίνακα, αλλά δεν επικυρώνει την ελάχιστη τιμή.
Αυτή η μη επικύρωση θα οδηγήσει στην αποδοχή μιας αρνητικής τιμής ως ευρετηρίου συστοιχίας εισόδου, προκαλώντας ανάγνωση εκτός ορίων, η οποία με τη σειρά της δίνει πρόσβαση σε ευαίσθητη μνήμη.
Υπάρχει ανάγκη επαλήθευσης του ευρετηρίου πίνακα εισαγωγής εάν βρίσκεται εντός του μέγιστου και του ελάχιστου εύρους που απαιτείται για τον πίνακα.
Εάν ελέγξετε τώρα το παρακάτω παράδειγμα, θα δείτε ότι η δήλωση IF πρέπει να τροποποιηθεί ώστε να περιλαμβάνει μια ελάχιστη επικύρωση εύρους.
# 6) CWE-89: SQL Injection
Έγχυση SQL είναι μια μορφή ευπάθειας ασφαλείας με την οποία ο εισβολέας εισάγει έναν κώδικα Structured Query Language (SQL) στο πλαίσιο εισαγωγής φόρμας Web, προκειμένου να αποκτήσει πρόσβαση σε πόρους ή να αλλάξει δεδομένα που δεν επιτρέπεται η πρόσβαση.
Αυτή η ευπάθεια μπορεί να εισαχθεί στην εφαρμογή κατά τα στάδια σχεδιασμού, εφαρμογής και λειτουργίας.
ψεύτικο email και κωδικό πρόσβασης που λειτουργεί
Αυτό που κάνει αυτό το ερώτημα SQL είναι να υποβάλει ένα μη εξουσιοδοτημένο αίτημα στη βάση δεδομένων για ορισμένες πληροφορίες. Σε μια κανονική λειτουργία εισαγωγής, χρησιμοποιείται μια φόρμα Web για έλεγχο ταυτότητας χρήστη. Όταν ένας χρήστης εισάγει το όνομα και τον κωδικό πρόσβασης στα πλαίσια κειμένου, αυτές οι τιμές εισάγονται σε ένα ερώτημα SELECT.
Εάν οι τιμές εισαγωγής είναι σωστές, ο χρήστης έχει πρόσβαση στην εφαρμογή ή στο αίτημα, αλλά εάν οι τιμές είναι λανθασμένες, η πρόσβαση δεν θα επιτρέπεται.
Ορισμένες φόρμες Ιστού σήμερα δεν διαθέτουν μηχανισμούς για τον αποκλεισμό κακόβουλης εισόδου που ένας εισβολέας μπορεί να χρησιμοποιήσει τα πλαίσια εισόδου για να στείλει κακόβουλα αιτήματα στη βάση δεδομένων. Αυτό το μεμονωμένο αίτημα μπορεί να τους δώσει πρόσβαση σε ολόκληρη τη βάση δεδομένων που μπορεί να περιέχει ευαίσθητες πληροφορίες.
# 7) CWE-416: Μνήμη που ελευθερώθηκε προηγουμένως
Αυτό το ζήτημα προκαλείται από την αναφορά της μνήμης μετά την απελευθέρωσή της, η οποία μπορεί σοβαρά να οδηγήσει σε διακοπή λειτουργίας του προγράμματος. Όταν χρησιμοποιείτε μια μνήμη που ελευθερώθηκε προηγουμένως, αυτό μπορεί να έχει δυσμενείς συνέπειες, όπως καταστροφή έγκυρων δεδομένων, αυθαίρετη εκτέλεση κώδικα που εξαρτάται από το χρονικό ελάττωμα.
Δύο κοινές αιτίες είναι:
- Συνθήκες σφάλματος στο λογισμικό και σε ορισμένες άλλες εξαιρετικές περιπτώσεις.
- Καμία εξήγηση για το ποιο μέρος του προγράμματος προκάλεσε την ελεύθερη μνήμη.
Σε αυτήν την περίπτωση, η μνήμη εκχωρείται σε άλλο δείκτη αμέσως μετά την απελευθέρωσή της. Ο προηγούμενος δείκτης της απελευθερωμένης μνήμης χρησιμοποιείται ξανά και τώρα δείχνει κάπου γύρω από τη νέα κατανομή. Μέχρι να αλλάξουν τα δεδομένα, αυτό μπορεί να καταστρέψει τη χρησιμοποιημένη μνήμη και θα μπορούσε να κάνει την εφαρμογή να συμπεριφέρεται με απροσδιόριστο τρόπο.
# 8) CWE-190: Σφάλμα ακέραιας υπερχείλισης
Όταν ένας υπολογισμός υποβάλλεται σε επεξεργασία από μια εφαρμογή και υπάρχει μια λογική υπόθεση ότι η προκύπτουσα τιμή θα είναι μεγαλύτερη από την ακριβή τιμή, συμβαίνει ακέραια υπερχείλιση. Εδώ, μια ακέραια τιμή αυξάνεται σε μια τιμή που δεν μπορεί να αποθηκευτεί σε μια τοποθεσία.
Όταν συμβεί αυτό, η τιμή συνήθως τυλίγεται για να γίνει μια πολύ μικρή ή αρνητική τιμή. Εάν το περιτύλιγμα αναμένεται, τότε είναι εντάξει, αλλά μπορεί να υπάρξουν συνέπειες ασφαλείας εάν το περιτύλιγμα είναι απρόσμενο. Όταν παρουσιαστεί αυτό το σενάριο, θα μπορούσε να χαρακτηριστεί κρίσιμο καθώς το αποτέλεσμα χρησιμοποιείται για τη διαχείριση βρόχου, την απόφαση ασφαλείας, χρησιμοποιείται για την εκχώρηση μνήμης και πολλά άλλα.
Αυτή η αδυναμία γενικά θα οδηγήσει σε ακανόνιστη συμπεριφορά και μπορεί να οδηγήσει σε διακοπές. Εάν η τιμή είναι σημαντική για τα δεδομένα παρά για τη ροή, τότε μπορεί να συμβεί μια απλή καταστροφή δεδομένων. Αλλά εάν το περιτύλιγμα οδηγεί σε περαιτέρω συνθήκες όπως υπερχείλιση buffer, τότε μπορεί να συμβεί καταστροφή της μνήμης.
Αυτό το ζήτημα μπορεί να προκαλέσει υπερχείλιση buffer, το οποίο μπορεί να χρησιμοποιηθεί για την εκτέλεση αυθαίρετου κώδικα από έναν εισβολέα. Αυτό το ακέραιο σφάλμα υπερχείλισης συνήθως εισάγεται στο σύστημα κατά τα στάδια σχεδίασης και υλοποίησης του SDLC.
# 9) CWE-352: Πλαστά αιτήματα μεταξύ ιστότοπων
Αυτό συμβαίνει όταν μια εφαρμογή ιστού δεν επαληθεύει επαρκώς το αίτημα HTTP, είτε το αίτημα προήλθε από τον σωστό χρήστη είτε όχι. Οι webservers έχουν σχεδιαστεί για να δέχονται όλα τα αιτήματα και να ανταποκρίνονται σε αυτά.
Ας υποθέσουμε ότι ένας πελάτης στέλνει πολλά αιτήματα HTTP σε μία ή περισσότερες περιόδους σύνδεσης. Είναι πολύ δύσκολο για έναν διακομιστή ιστού να γνωρίζει εάν όλα τα αιτήματα ήταν αυθεντικά ή όχι και συνήθως υποβάλλονται σε επεξεργασία. Ένας εισβολέας μπορεί να έχει τον τρόπο να αναγκάσει έναν πελάτη να επισκεφτεί μια ειδικά σχεδιασμένη ιστοσελίδα και τώρα να μπορεί να εκτελεί ορισμένα αιτήματα όπως μεταφορά χρημάτων, αλλαγή της διεύθυνσης email του και πολλά άλλα.
Αμέσως ένας εισβολέας έχει πρόσβαση και θα είναι σε θέση να κλέψει δεδομένα και μπορεί ακόμη και να καταστρέψει δεδομένα. Μπορούν πάντα να διατηρήσουν την πρόσβασή τους και όταν τελειώσουν, μπορούν να θέσουν σε κίνδυνο το αρχείο καταγραφής ελέγχου για να αποτρέψουν οποιαδήποτε μελλοντική εγκληματολογία που θα μπορούσε να εκθέσει την εκμετάλλευσή τους.
Η παρακάτω εικόνα δείχνει έναν εισβολέα που παρακινεί έναν χρήστη να εκτελέσει ενέργειες που δεν προτίθεται να εκτελέσει.
# 10) CWE-22: Διαδρομή καταλόγου
Διαδρομή καταλόγου ή διέλευση διαδρομής αρχείων είναι μια ευπάθεια ασφάλειας ιστού που επιτρέπει σε έναν εισβολέα να διαβάσει αυθαίρετα αρχεία στον διακομιστή που εκτελεί αυτήν τη στιγμή μια εφαρμογή.
Αυτά τα αρχεία θα μπορούσαν να είναι ένας κωδικός εφαρμογής, διαπιστευτήρια για συστήματα back-end και τα αρχεία του λειτουργικού συστήματος. Σε κάποιο άλλο σενάριο, ένας εισβολέας μπορεί να είναι σε θέση να γράψει σε αυτά τα αυθαίρετα αρχεία στον διακομιστή, τα οποία θα μπορούσαν να τους επιτρέψουν να τροποποιήσουν τα δεδομένα ή τη συμπεριφορά της εφαρμογής, και αυτό θα τους δώσει πλήρη έλεγχο του διακομιστή.
(εικόνα πηγή )
# 11) CWE-78: Έγχυση εντολών OS
Πρόκειται για την ακατάλληλη εξυγίανση ειδικών στοιχείων που μπορεί να οδηγήσουν στην τροποποίηση της προβλεπόμενης εντολής λειτουργικού συστήματος που αποστέλλεται σε ένα μεταγενέστερο στοιχείο. Ένας εισβολέας μπορεί να εκτελέσει αυτές τις κακόβουλες εντολές σε ένα λειτουργικό σύστημα προορισμού και να έχει πρόσβαση σε ένα περιβάλλον στο οποίο δεν έπρεπε να διαβάσει ή να τροποποιήσει.
Αυτό θα επέτρεπε πάντα έναν εισβολέα να εκτελεί επικίνδυνες εντολές απευθείας στο λειτουργικό σύστημα.
Κάθε φορά που αυτή η ευπάθεια εμφανίζεται σε ένα προνομιακό πρόγραμμα, επιτρέπει στον εισβολέα να χρησιμοποιεί εντολές που επιτρέπονται στο περιβάλλον ή να καλεί άλλες εντολές με δικαιώματα που δεν έχει ο εισβολέας, κάτι που θα μπορούσε να αυξήσει το ποσό της ζημιάς που θα μπορούσε να προκύψει.
# 12) CWE-787: Σφάλμα εγγραφής εκτός ορίου
Αυτό συμβαίνει όταν η εφαρμογή γράφει δεδομένα μετά το τέλος ή πριν από την έναρξη του καθορισμένου buffer.
Όταν συμβαίνει αυτό, το τελικό αποτέλεσμα είναι συνήθως καταστροφή δεδομένων, σφάλμα συστήματος ή εφαρμογής. Αυτό που κάνει η εφαρμογή είναι ένα είδος αριθμητικής δείκτη που χρησιμοποιείται για την αναφορά μιας τοποθεσίας μνήμης έξω από τα όρια του buffer.
# 13) CWE-287: Λανθασμένο σφάλμα ελέγχου ταυτότητας
Αυτό συμβαίνει όταν ένας εισβολέας ισχυρίζεται ότι έχει έγκυρη ταυτότητα, αλλά το λογισμικό απέτυχε να επαληθεύσει ή να αποδείξει ότι η αξίωση είναι σωστή.
Ένα λογισμικό επικυρώνει λανθασμένα τα στοιχεία σύνδεσης ενός χρήστη και ως αποτέλεσμα, ένας εισβολέας θα μπορούσε να αποκτήσει ορισμένα προνόμια στην εφαρμογή ή να αποκαλύψει ευαίσθητες πληροφορίες που τους επιτρέπουν να έχουν πρόσβαση σε ευαίσθητα δεδομένα και να εκτελούν αυθαίρετο κώδικα.
# 14) CWE-476: Διαχωρισμός δείκτη NULL
Η αποπροσανατολισμός ενός μηδενικού δείκτη είναι όταν η εφαρμογή αποπροσανατολίζει έναν δείκτη που έπρεπε να επιστρέψει ένα έγκυρο αποτέλεσμα, αντί να επιστρέψει το NULL και αυτό οδηγεί σε διακοπή λειτουργίας. Η αποπροσανατολισμός ενός μηδενικού δείκτη μπορεί να συμβεί μέσω πολλών ελαττωμάτων όπως οι συνθήκες αγώνα και κάποιο σφάλμα προγραμματισμού.
Οι διαδικασίες που εκτελούνται με τη βοήθεια του δείκτη NULL συνήθως οδηγούν σε αποτυχία και η πιθανότητα εκτέλεσης της διαδικασίας είναι πολύ λεπτή. Αυτό βοηθά τους εισβολείς να εκτελέσουν κακόβουλο κώδικα.
(εικόνα πηγή )
# 15) CWE-732: Εσφαλμένη εκχώρηση άδειας
Αυτή η ευπάθεια συμβαίνει όταν μια εφαρμογή εκχωρεί δικαιώματα σε έναν πολύ σημαντικό και κρίσιμο πόρο με τέτοιο τρόπο που εξέθεσε τον πόρο για πρόσβαση από κακόβουλο χρήστη.
Όταν δίνετε σε πολλά άτομα άδεια για έναν πόρο, αυτό θα μπορούσε να οδηγήσει στην έκθεση ή την τροποποίηση ευαίσθητων πληροφοριών από έναν εισβολέα. Εάν δεν υπάρχουν έλεγχοι σχετικά με αυτό το είδος προσέγγισης για την εκχώρηση άδειας στους πόρους, μπορεί να οδηγήσει σε πολύ καταστροφικό τέλος εάν μια διαμόρφωση προγράμματος ή κάποια ευαίσθητα δεδομένα φτάσουν σε λάθος χέρι.
# 16) CWE-434: Απεριόριστη μεταφόρτωση αρχείων
Αυτή η ευπάθεια παρουσιάζεται όταν η εφαρμογή δεν επικυρώνει τους τύπους αρχείων πριν από τη μεταφόρτωση αρχείων στην εφαρμογή. Αυτή η ευπάθεια είναι ανεξάρτητη από τη γλώσσα, αλλά συνήθως εμφανίζεται σε εφαρμογές γραμμένες σε γλώσσα ASP και PHP.
Ένας επικίνδυνος τύπος αρχείου είναι ένα αρχείο που μπορεί να υποβληθεί σε αυτόματη επεξεργασία εντός του περιβάλλοντος εφαρμογής.
Το παρακάτω πρόγραμμα δείχνει μια μεταφόρτωση ενός αρχείου PHP. Ο τύπος αρχείου δεν επαληθεύτηκε και επικυρώθηκε πριν από τη μεταφόρτωση στον κατάλογο webroot. Ως αποτέλεσμα αυτής της αδυναμίας, ένας εισβολέας μπορεί να ανεβάσει ένα αυθαίρετο αρχείο PHP και να το εκτελέσει με άμεση πρόσβαση στο μεταφορτωμένο αρχείο.
# 17) CWE-611: Έκθεση πληροφοριών μέσω οντοτήτων XML
Όταν ένα έγγραφο XML μεταφορτώνεται σε μια εφαρμογή για επεξεργασία και αυτό το έγγραφο περιέχει οντότητες XML με ομοιόμορφο αναγνωριστικό πόρου που καταλήγει σε άλλο έγγραφο σε άλλη τοποθεσία διαφορετική από την προβλεπόμενη θέση. Αυτή η ανωμαλία μπορεί να κάνει την εφαρμογή να επισυνάψει εσφαλμένα έγγραφα στην έξοδο της.
Τα έγγραφα XML μερικές φορές περιέχουν έναν ορισμό τύπου εγγράφου (DTD), ο οποίος χρησιμοποιείται για τον ορισμό των οντοτήτων XML και άλλων δυνατοτήτων. Μέσω του DTD, το ομοιόμορφο αναγνωριστικό πόρου μπορεί να χρησιμεύσει ως μορφή συμβολοσειράς υποκατάστασης. Αυτό που θα κάνει το πρόγραμμα ανάλυσης XML είναι να αποκτήσει πρόσβαση σε αυτό που περιέχεται στο ενιαίο αναγνωριστικό πόρου και να εισαγάγει αυτά τα περιεχόμενα πίσω στο έγγραφο XML για εκτέλεση.
(εικόνα πηγή )
# 18) CWE-94: Έγχυση κώδικα
Η ύπαρξη σύνταξης κώδικα στα δεδομένα του χρήστη αυξάνει τη δυνατότητα του εισβολέα να αλλάξει την προγραμματισμένη συμπεριφορά ελέγχου και να εκτελέσει αυθαίρετο κώδικα. Αυτή η ευπάθεια αναφέρεται ως «αδυναμίες έγχυσης» και αυτή η αδυναμία θα μπορούσε να κάνει έναν έλεγχο δεδομένων να ελέγχεται από το χρήστη.
Αυτή η ευπάθεια απεικονίζει ένα σενάριο όπου το λογισμικό επιτρέπει μη αξιόπιστα δεδομένα στον κώδικα και δεν εκτελεί επικύρωση ειδικών χαρακτήρων που μπορούν να επηρεάσουν αρνητικά τόσο τη συμπεριφορά του τμήματος κώδικα όσο και τη σύνταξη.
Εν ολίγοις, ένας εισβολέας θα μπορούσε να εισάγει κάποιο είδος αυθαίρετου κώδικα και να τον εκτελέσει στην εφαρμογή. Ο ακόλουθος κωδικός PHP δείχνει τη χρήση της συνάρτησης eval () σε μη αξιόπιστα δεδομένα. Στον παρακάτω κώδικα ένας εισβολέας είναι σε θέση να περάσει στον κωδικό ο παράμετρος παράμετρος «param» που θα εκτελεστεί στο λογισμικό.
Το παρακάτω παράδειγμα εξηγεί την κλήση στο phpinfo () λειτουργία. Αυτή η ευπάθεια μπορεί περαιτέρω να αξιοποιηθεί σε άλλο για την εκτέλεση αυθαίρετων εντολών OS στο λογισμικό προορισμού μέσω της κλήσης του συστήματος ().
# 19) CWE-798: Κλειδί πρόσβασης με κωδικό
Αυτό συμβαίνει όταν ο κωδικός πρόσβασης και το κλειδί πρόσβασης κωδικοποιούνται σκληρά στην εφαρμογή απευθείας για σκοπούς ελέγχου ταυτότητας εισερχόμενων και εξερχόμενης επικοινωνίας σε ορισμένα εξωτερικά στοιχεία και για κρυπτογράφηση εσωτερικών δεδομένων. Τα στοιχεία σύνδεσης με κωδικοποίηση συνήθως προκαλούν ευπάθεια που ανοίγει το δρόμο για έναν εισβολέα να παρακάμψει τον έλεγχο ταυτότητας που έχει ρυθμιστεί από τον διαχειριστή του λογισμικού.
Ο διαχειριστής του συστήματος θα είναι πάντα πολύ δύσκολο να εντοπίσει αυτήν την ευπάθεια και να το διορθώσει.
Υπάρχουν δύο κύριες ροές σε αυτήν την αδυναμία:
- Εισερχόμενος : Η εφαρμογή περιέχει ένα σύστημα ελέγχου ταυτότητας που επικυρώνει τα διαπιστευτήρια εισαγωγής έναντι των κωδικοποιημένων λεπτομερειών.
- Εξερχόμενος : Η εφαρμογή συνδέεται σε άλλο σύστημα και οι λεπτομέρειες σύνδεσης στο άλλο σύστημα είναι κωδικοποιημένες στο σύστημα.
Στη ροή Εισερχόμενα, υπάρχει πάντα ένας προεπιλεγμένος λογαριασμός διαχειριστή που δημιουργείται και τα διαπιστευτήρια για πρόσβαση σε αυτόν θα είναι κωδικοποιημένα στην εφαρμογή και θα συσχετίζονται με αυτόν τον προεπιλεγμένο λογαριασμό διαχειριστή.
Οι κωδικοποιημένες λεπτομέρειες είναι συνήθως το ίδιο σε κάθε εγκατάσταση της εφαρμογής και αυτό δεν μπορεί να αλλάξει ή να απενεργοποιηθεί από κανέναν. Ακόμη και οι διαχειριστές του συστήματος δεν έχουν το δικαίωμα, εκτός εάν μπορούν να τροποποιήσουν χειροκίνητα την εφαρμογή. Εάν ο κωδικός πρόσβασης αποκαλύπτεται ποτέ στο κοινό, τότε ένας εισβολέας μπορεί να έχει πρόσβαση σε ολόκληρη την εφαρμογή και μπορεί να τον χειριστεί για δικό του όφελος.
Δεδομένου ότι όλες οι εγκαταστάσεις της εφαρμογής έχουν τον ίδιο κωδικό πρόσβασης, ακόμη και όταν εγκαθίστανται σε ξεχωριστούς οργανισμούς, αυτό μπορεί να προκαλέσει πολύ μαζικές επιθέσεις σε όλα τα σύνορα του οργανισμού, για παράδειγμα, εγχύοντας ένα σκουλήκι στην εφαρμογή που θα εξαπλωθεί.
Η εξερχόμενη ροή ισχύει μόνο για συστήματα front-end που κάνουν έλεγχο ταυτότητας με μια υπηρεσία back-end. Η υπηρεσία back-end μπορεί να απαιτεί έναν σκληρό κωδικό ή έναν σταθερό κωδικό πρόσβασης που μπορεί εύκολα να εντοπιστεί. Αυτό που κάνει ο προγραμματιστής είναι απλά να κωδικοποιήσει αυτά τα διαπιστευτήρια back-end στο λογισμικό front-end. Οποιοσδήποτε χρήστης αυτής της εφαρμογής ενδέχεται να μπορεί να εξαγάγει τον κωδικό πρόσβασης.
Οποιοδήποτε λογισμικό από την πλευρά του πελάτη όπου ο κωδικός πρόσβασης και το κλειδί πρόσβασης είναι κωδικοποιημένο σε αυτό συνήθως αποτελεί μεγαλύτερη απειλή από αυτά που δεν είναι κωδικοποιημένα, επειδή η εξαγωγή ενός κωδικού πρόσβασης από ένα δυαδικό είναι συνήθως πολύ εύκολο να επιτευχθεί.
# 20) CWE-400: Μη ελεγχόμενη κατανάλωση πόρων
Αυτή η ευπάθεια συμβαίνει όταν η εφαρμογή δεν ελέγχει σωστά την κατανομή και τη συντήρηση ενός περιορισμένου πόρου, αυτό επιτρέπει σε έναν εισβολέα να μπορεί να επηρεάσει την ποσότητα των πόρων που καταναλώνονται, κάτι που τελικά θα οδηγήσει στην εξάντληση των διαθέσιμων πόρων.
Μέρος των περιορισμένων πόρων περιλαμβάνει μνήμη, χώρο αποθήκευσης συστήματος αρχείων, καταχωρήσεις συγκέντρωσης βάσης δεδομένων και CPU.
Ας υποθέσουμε ότι ένας εισβολέας μπορεί να προκαλέσει την κατανομή αυτών των περιορισμένων πόρων και ο αριθμός ή το μέγεθος των πόρων δεν ελέγχεται, τότε ο εισβολέας θα μπορούσε να προκαλέσει χάος μέσω άρνησης υπηρεσίας που καταναλώνει όλους τους διαθέσιμους πόρους.
Όταν συμβεί αυτό, θα αποτρέψει την πρόσβαση έγκυρων χρηστών στην εφαρμογή, η οποία θα έχει πάντοτε αρνητικές επιπτώσεις στο περιβάλλον. Για παράδειγμα, Όταν η μνήμη της εφαρμογής περνά από μια επίθεση εξάντλησης, αυτό θα μπορούσε να επιβραδύνει ολόκληρη την εφαρμογή καθώς και το λειτουργικό σύστημα κεντρικού υπολογιστή.
Οι τρεις διαφορετικές περιπτώσεις που μπορούν να οδηγήσουν σε εξάντληση πόρων είναι:
- Έλλειψη περιορισμού του αριθμού των διατιθέμενων πόρων
- Χάνοντας όλες τις αναφορές σε έναν πόρο πριν φτάσετε στο στάδιο τερματισμού
- Αποτυχία κλεισίματος / επιστροφής πόρου μετά την επεξεργασία
Το ζήτημα της εξάντλησης των πόρων είναι συνήθως αποτέλεσμα εσφαλμένης εφαρμογής των ακόλουθων σεναρίων:
- Συνθήκες σφάλματος και άλλες εξαιρετικές περιστάσεις.
- Υπάρχει ανάμικτη αντίδραση για το ποιο μέρος του προγράμματος απελευθερώνει τον πόρο.
Το ακόλουθο παράδειγμα βοηθά στην απόδειξη της φύσης αυτής της ευπάθειας και περιγράφει μεθόδους που μπορούν να χρησιμοποιηθούν για τον μετριασμό του κινδύνου.
Το ακόλουθο παράδειγμα εξηγεί την ευπάθεια:
(εικόνα πηγή )
Αυτό το πρόγραμμα δεν παρακολουθεί πόσες συνδέσεις έχουν πραγματοποιηθεί και δεν περιορίζει τον αριθμό των διαθέσιμων συνδέσεων. Το Forking είναι ένας από τους τρόπους που χρησιμοποιεί ένας εισβολέας για να κάνει το σύστημα να εξαντληθεί από CPU, διεργασίες ή μνήμη κάνοντας μεγάλο αριθμό συνδέσεων.
Αυτό που κάνει ένας εισβολέας είναι να καταναλώσει όλες τις διαθέσιμες συνδέσεις, εμποδίζοντας τους άλλους να έχουν πρόσβαση στο σύστημα από απόσταση.
Συχνές Ερωτήσεις
Ε # 1) Τι σημαίνει το SANS;
Απάντηση: Το SANS σημαίνει SysAdmin, Audit, Network και Security.
Q # 2) Καταχωρίστε μερικά παραδείγματα τρωτών σημείων.
Απάντηση: Τα παραδείγματα είναι τα εξής:
- Ευπάθειες λογισμικού
- Ευπάθειες τείχους προστασίας
- Ευπάθειες δικτύου
- Ευπάθειες του λειτουργικού συστήματος
- Ευπάθειες διακομιστή Web
- Ευπάθειες βάσης δεδομένων
Q # 3) Ποια είναι η διαφορά μεταξύ των απειλών και των τρωτών σημείων;
Απάντηση: Απειλή είναι η πιθανότητα εκτέλεσης μιας κακόβουλης ή ανεπιθύμητης ενέργειας σε μια προσπάθεια βλάβης ενός συστήματος υπολογιστή ή μιας εφαρμογής μέσω των υπαρχουσών τρωτών σημείων του συστήματος. Παράδειγμα: ransomware.
Ευπάθειες είναι αδυναμίες που υπάρχουν σε ένα σύστημα που θα μπορούσε να επιτρέψει ανεπιθύμητη ή μη εξουσιοδοτημένη πρόσβαση από έναν εισβολέα για να διεισδύσει σε ζημιά σε έναν οργανισμό. Παράδειγμα: Λανθασμένη διαμόρφωση τείχους προστασίας.
Q # 4) Ποιες είναι οι πιο κοινές ευπάθειες;
Απάντηση: Αυτά είναι τα εξής:
- SQL Injection
- Σενάριο μεταξύ ιστότοπων
- Λανθασμένη διαμόρφωση ασφαλείας
- Ευαίσθητη έκθεση δεδομένων
- Σπασμένος έλεγχος ταυτότητας
- Διαχείριση συνεδρίας
συμπέρασμα
Αυτή η λίστα με τα 20 πιο ευάλωτα σημεία του SANS δεν είναι κανόνας ή πολιτική, αλλά ένας οδηγός για να μας βοηθήσετε στο πώς να αποφύγουμε τις ευπάθειες λογισμικού. Είτε είμαστε προγραμματιστές είτε ειδικοί ασφαλείας, μας αφήνει να ακολουθήσουμε αυτόν τον οδηγό σχετικά με το τι μπορεί να γίνει για να αποφευχθεί οποιοδήποτε λάθος που θα μπορούσε να οδηγήσει σε ευπάθειες στην εφαρμογή μας που μπορούν να δημιουργήσουν μια πίσω πόρτα για έναν ηθοποιό να εκτελέσει μια κακόβουλη πράξη.
Συνιστώμενη ανάγνωση
- Δοκιμή ασφαλείας (Ένας πλήρης οδηγός)
- Εργαλείο δοκιμής ασφάλειας Acunetix Web Vulnerability Scanner (WVS) (Hands on Review)
- Οδηγός αξιολόγησης και διαχείρισης ευπάθειας δικτύου
- Κορυφαία 10 ισχυρότερα εργαλεία σάρωσης αξιολόγησης ευπάθειας το 2021
- Εκτίμηση ευπάθειας και διαφορά δοκιμής διείσδυσης
- Jenkins Security: Ενεργοποίηση ασφάλειας & Project Security Matrix
- Κορυφαία 4 λάθη ασφάλειας στον κυβερνοχώρο για αποφυγή κατά τη δοκιμή λογισμικού
- 10 ΚΑΛΥΤΕΡΟ λογισμικό ασφαλείας δικτύου (ΜΟΝΟ ΕΠΙΛΟΓΗ 2021)