OWASP_logoΣυνεχίζοντας τον κύκλο άρθρων σχετικά με την ασφάλεια σε δικτυακά περιβάλλοντα σε συνεργασία με τον Παναγιώτη Καλαντζή, προτελευταία του χορού των αδυναμιών παρουσιάζεται η χρήση έτοιμων αρθρωμάτων (modules) που έχουν ήδη γνωστά σφάλματα (using components with known vulnerabilities). Πάρα πολλές διαδικτυακές εφαρμογές χρησιμοποιούν έτοιμα αρθρώματα και βιβλιοθήκες για την ταχεία ανάπτυξή τους εκμεταλλευόμενες τα ιδιαίτερα βολικά API των βιβλιοθηκών για την εμφώλευση έτοιμων λειτουργιών.

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

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

Ενδεικτικά, τα αρθρώματα Apache CXF Authentication Bypass και Spring Remote Code Execution παρότι ελαττωματικά μεταφορτώθηκαν (downloads) ~22 εκατομμύρια φορές κατά το 2011.

Παρότι φαντάζει εύκολος ο εντοπισμός των προβληματικών αρθρωμάτων/βιβλιοθηκών οι αναφορές για εμπορικό ή/και ανοικτού κώδικα λογισμικό δε διακρίνονται για τη συνέπειά τους σχετικά με την έκδοση του λογισμικού που περιγράφουν. Στο πρόβλημα αυτό προστίθεται και η συνήθης μη κατανοητή μεθοδολογία αρίθμησης των εκδόσεων των αρθρωμάτων/βιβλιοθηκών. Επίσης, παρότι στις μέρες μας κεντρικά σημεία ενημέρωσης (λ.χ. http://cve.mitre.org/ και http://nvd.nist.gov/home.cfm) γίνονται διαρκώς όλο και πιο εύκολα για την χρήση τους προς ενημέρωση προβληματικών εκδόσεων αρθρωμάτων/βιβλιοθηκών, στο ευρύ σύνολό τους τα σφάλματα ανά έκδοση δεν είναι εύκολα αναζητήσιμα.

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

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

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

  1. Πλήρης καταγραφή των αρθρωμάτων που χρησιμοποιεί η εφαρμογή, των εκδόσεών τους καθώς και των αλληλεξαρτήσεών τους,
  2. Σχεδιασμός διαδικασίας της εφαρμογής που να εντοπίζει τα προαναφερθέντα του βήματος (1) και να ενημερώνει τον διαχειριστή της,
  3. Συνεχής παρακολούθηση των αρθρωμάτων σε σημεία ενημέρωσης για αυτά και διαρκείς ενημερώσεις τους βάσει των νεώτερων εκδόσεών τους,
  4. Σχεδιασμός και εφαρμογή πολιτικών ασφαλείας για την χρήση αρθρωμάτων (λ.χ. επιβεβαίωση επιπέδου ασφάλειας μέσω δοκιμών ή υποστήριξη εξειδικευμένων πρακτικών ασφάλειας από το άρθρωμα)
  5. Όπου εφικτό καλό θα ήταν να εμφωλεύεται το άρθρωμα σε ένα προγραμματιστικό περιέκτη που θα απενεργοποιεί λειτουργίες του που δεν είναι απαραίτητες στην διαδικτυακή εφαρμογή (και ίσως στις οποίες ελλοχεύουν κενά ασφαλείας)

Στο επόμενο άρθρο θα δούμε την αδυναμία που προκαλείται από τη χρήση πλαστών/κακόβουλων αιτημάτων μεταξύ ιστοσελίδων/διαδικτυακών εφαρμογών (Cross-Site Request Forgery).

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

Share This: