Σημεία ευπάθειας είναι σημεία στο πρόγραμμα, μεμονωμένες εντολές ή τμήματα κώδικα, που επιτρέπουν σε εξωτερικό παράγοντα (άτομο ή άλλο πρόγραμμα) να διεισδύσει στο πρόγραμμά μας και να το χρησιμοποιήσει για δικούς του σκοπούς, άλλους από τον σκοπό για τον οποίo δημιουργήθηκε το συγκεκριμένο πρoγραμμα. Συνήθως οι προθέσεις τους είναι κακόβουλες. Μπορεί το πρόγραμμά μας να είναι τεχνικά σωστό και να δίνει σωστά αποτελέσματα σε όλα τα τεστ που έχουμε εφαρμόσει, αλλά σημεία ευπάθειας πιθανώς να υπάρχουν ακόμη παρ' όλα αυτά. Είναι λοιπόν καλή προγραμματιστική τακτική, και σε ορισμένες περιπτώσεις αναγκαίο, να αποφεύγουμε τη δημιουργία ευπαθειών ή τρωτών σημείων. Έτσι έχουμε πρακτικές και κανόνες ασφαλούς προγραμματισμού. Για κάθε τύπο ή είδος ευπάθειας έχουμε και αντίστοιχη πρακτική ασφάλειας. Η λίστα ευπαθειών είναι εκτενής (OWASP 2022). Υπάρχουν ευπάθειες γενικές που συνήθως εντοπίζονται σε κάθε γλώσσα προγραμματισμού και άλλες ειδικές για κάθε γλώσσα. Για παράδειγμα, στο ακόλουθο τμήμα κώδικα γραμμένο σε C μπορούμε να εντοπίσουμε τα εξής σημεία ευπάθειας: #define BUF_SIZE 64 int main(int argc, char *argv[]) { int volume = 0; int radius = 0; char *name = NULL; name = malloc(sizeof(char) * BUF_SIZE); printf(" strlen %d\n", strlen(argv[2])); ... return 0; } α) έχουμε μια κλήση στη συνάρτηση malloc() χωρίς να ελέγχεται η τιμη επιστροφής της συνάρτησης. Η πρακτική ασφαλούς προγραμματισμού είναι να ελέγξουμε την τιμή που επιστρέφεται και να δράσουμε ανάλογα: name = malloc(sizeof(char) * BUF_SIZE); if(name) { // successful - perform the remaining of the code ... } else { // failed - print message and return perror("a malloc error"); return 1; } β) βλέπουμε οτι η παράμετρος εισόδου argv[2] χρησιμοποιείται χωρίς να γίνει έλεγχος εγκυρότητάς της (validation). Στη συγκεκριμένη περίπτωση το πρόγραμμα μετατρέπει πεζά σε κεφαλαία, άρα θα ελέγξουμε αν οι χαρακτήρες που δίνονται στην παράμετρο εισόδου είναι γράμματα. Επίσης θα ελέγξουμε το μήκος της συμβολοσειράς αυτής να μην υπερβαίνει το όριο που έχουμε θέσει: if(strlen(argv[2])>BUF_SIZE) { printf(" name too long\n"); return 1; } int val=0; for(i=0; i<strlen(argv[2]); i++) { if(!(argv[2][i]>='a' && argv[2][i]<='z') && !(argv[2][i]>='A' && argv[2][i]<='Z') val=1; } if(val==1) { printf(" name should have alphabet letters only\n"); return 1; } Όπως βλέπουμε λοιπόν, ένα σημείο προγράμματος μπορεί νε εμφανίζει πολλαπλά σημεία ευπάθειας και οι πρακτικές αντιμετώπισης μπορεί να είναι απλές τεχνικές προγραμματισμού ή εκτενής έλεγχος όλων των πιθανοτήτων συμπεριφοράς μιάς εντολής ή ενός τμήματος κώδικα. OWASP (2022) Vulnerabilities https://owasp.org/www-community/vulnerabilities/ Accessed 13 Σεπτεμβρίου 2022.
-
Email: [email protected]
-
Εργασίες
Πτυχιακές
Βιογραφικά
Μεταφράσεις
Ιδιαίτερα -
Πρόσφατα άρθρα
Kατηγορίες
- Human Resources Management
- Marketing assignments
- MME
- Ανθρωπιστικές Επιστήμες
- Αρθρογραφία
- Αρχιτεκτονική
- Βιο-Ιατρική
- Βιολογία
- Γενικά
- Γεωλογία
- Γεωπονία
- Δημόσια Διοίκηση
- Διατροφολογία
- Διοίκηση Ανθρωπίνων Πόρων
- Διοίκηση Επιχειρήσεων
- Εκπαίδευση
- Εργασίες Βιολογίας
- Θεατρολογία
- Θεολογία
- Ιατρική
- Ιστορία
- Ιστορία της Τέχνης
- Κοινωνιολογία
- Λογιστική
- Λογοθεραπεία
- Μαθηματικά
- Μηχανική
- Ναυτιλία
- Νομικά
- Οικονομικά
- Οργανωτική Ψυχολογία
- Περιβάλλον
- Πληροφορική
- Πολιτικές Επιστήμες
- Πολιτιστικά
- Στατιστική
- Στρατηγική
- Συγχωνεύεις
- Τέχνη
- Τεχνολογία
- Τουρισμός
- Υγεία
- Φιλολογία
- Φιλοσοφία
- Φυσική
- Χημεία
- Χρηματοοικονομικά
- Ψυχολογία