Η μετάβαση προς τα αριστερά (shift-left) είναι μια έκφραση-κλειδί στον χώρο της ασφάλειας των εφαρμογών εδώ και αρκετά χρόνια και για καλό λόγο – το να γίνει η ασφάλεια αναπόσπαστο μέρος της ανάπτυξης εφαρμογών είναι η μόνη πρακτική προσέγγιση για τις σύγχρονες, ευέλικτες ροές εργασίας. Όμως, στην προσπάθειά τους να ενσωματώσουν τις δοκιμές ασφαλείας όσο το δυνατόν νωρίτερα στην ανάπτυξη, πολλοί οργανισμοί παραμελούν την ασφάλεια εφαρμογών σε μεταγενέστερες φάσεις χάνοντας την γενική εικόνα.
Μετάβαση προς τα αριστερά: παρεξηγημένη, εφαρμοσμένη λανθασμένα και απολύτως απαραίτητη
Στη βιομηχανία AppSec, έχουμε επανειλημμένως και για αρκετά χρόνια αναφερθεί στη «μετάβαση προς τα αριστερά» (shifting left), λέγοντας ξανά και ξανά ότι ο μοναδικός τρόπος για να διασφαλιστεί ότι οι δοκιμές ασφάλειας εφαρμογών είναι αποτελεσματικές και αποδοτικές είναι απαραίτητη η ενσωμάτωση τους στη διαδικασία ανάπτυξης. Αν και απολύτως αληθές, το παραπάνω περιλαμβάνει μία μικρή αλλά κρίσιμης σημασίας παραδοχή: ότι πραγματοποιείτε επίσης δοκιμές ασφάλειας εφαρμογών και προς τα δεξιά, δηλαδή, σε κάθε στάδιο της ανάπτυξης και παραγωγής. Επιπλέον, ο ίδιος ο όρος «μετάβαση προς τα αριστερά» μπορεί να παρεξηγηθεί ως μεταφορά όλων των δοκιμών ασφαλείας στα αρχικά στάδια της διαδικασίας ανάπτυξης- και κάτι τέτοιο ενδέχεται να αφήσει κενά στην ασφάλειά σας.
[Μια τυπική διαδικασία ανάπτυξης λογισμικού είναι διαδοχική (1970-1990): καθορίζονται απαιτήσεις, γίνεται ανάλυση, σχεδιασμός, ανάπτυξη κώδικα, δοκιμές και εφαρμογή/ παραγωγή. Σε αυτή τη διαδικασία, οι δοκιμές γίνονται προς το τέλος της διαδικασίας. Προβλήματα που αποκαλύπτονται από δοκιμές σε τόσο μεταγενέστερο στάδιο μπορεί να προκαλέσουν δαπανηρό επανασχεδιασμό και καθυστερήσεις. Η ιδέα του Shift-Left είναι να εμπλέξει τις δοκιμές νωρίτερα στη διαδικασία ανάπτυξης και να ενισχύσει την πεποίθηση ότι οι δοκιμές θα πρέπει να πραγματοποιούνται σε όλα τα στάδια της διαδικασίας.]
Ας υποθέσουμε ότι πραγματοποιείτε εκτεταμένες δοκιμές ασφάλειας κατά τη φάση της ανάπτυξης και αισθάνεστε αρκετή αυτοπεποίθηση ότι καθώς περνούν τα στάδια και τη φάση της παραγωγής, οι εφαρμογές σας δεν περιέχουν σημαντικές ευπάθειες. Όμως ακόμη και αν κάτι τέτοιο αληθεύει (και έχουμε ένα μεγάλο «αν» εδώ) υπάρχει πάντα η πιθανότητα να εμφανιστούν ευπάθειες μετά το deployment λόγω προβληματικής διαμόρφωσης ή λόγω διαφορών στην έκδοση. Ενδέχεται επίσης να ανακαλυφθούν νέες ευπάθειες στην τεχνολογική σας στοίβα, είτε σε frameworks, είτε σε libraries ή σε άλλα στοιχεία. Ενδέχεται επίσης να κάνουν την εμφάνιση τους νέες τεχνικές επίθεσης. Και τέλος, οι δοκιμές ασφαλείας σας θα καλύπτουν μόνο τον νέο και ενημερωμένο κώδικα που διέρχεται από την στραμμένη προς τα αριστερά ροή εργασίας σας – οι υπάρχουσες ιστοσελίδες και εφαρμογές θα παραμείνουν ανέγγιχτες από τις δοκιμές ασφαλείας, όπως και τα προϊόντα τρίτων που χρησιμοποιούνται στον οργανισμό σας.
Δεν υπάρχει αμφιβολία ότι η επέκταση των εργαλείων δοκιμών ασφάλειας και των ροών εργασίας με τη συμμετοχή των προγραμματιστών είναι απαραίτητη προκειμένου η ασφάλεια να συμβαδίζει με τον ρυθμό αλλαγών που επιβάλλει η ευέλικτη ανάπτυξη. Μάλιστα υπάρχει ένα ολόκληρο whitepaper για αυτό το θέμα. Όμως ο έλεγχος του νέου κώδικα για ευπάθειες αποτελεί μόνο ένα κομμάτι από το παζλ της ασφαλείας – και για να συμπληρώσετε όλο το παζλ θα πρέπει να έχετε μία ευρύτερη εικόνα.
Δημιουργία ενός προγράμματος AppSec που να λειτουργεί
Η επαγγελματική ανάπτυξη ιστοσελίδων δεν είναι εύκολη υπόθεση. Οι προγραμματιστές έχουν ήδη επιφορτιστεί με το δύσκολο έργο του να κάνουν κάθε χαρακτηριστικό να δουλεύει σωστά ενώ παράλληλα προσπαθούν να διατηρήσουν την επαφή τους με τις τελευταίες τεχνολογίες, να καλύψουν τις όποιες απαιτήσεις και να τηρήσουν τις προθεσμίες. Αν αποφασίσετε να μετατοπίσετε τις δοκιμές ασφάλειας προς τα αριστερά προσθέτοντας απλώς περισσότερα εργαλεία δοκιμών, συσσωρεύετε ακόμη περισσότερες εργασίες και ειδοποιήσεις στους ήδη εξαντλημένους προγραμματιστές σας. Εκτός και αν είναι actionable, οι περισσότερες ειδοποιήσεις θα αυξήσουν τον θόρυβο έναντι ελάχιστου οφέλους για την ασφάλεια.
Ένας τρόπος για να αντιμετωπίσετε κάτι τέτοιο χωρίς να χάσετε τη γενικότερη εικόνα, είναι να βασίσετε το πρόγραμμα ασφάλειας εφαρμογών σας γύρω από το DAST ή αλλιώς τις δυναμικές δοκιμές ασφάλειας εφαρμογών (DAST). Οι σύγχρονες λύσεις DAST είναι αρκετά ακριβείς στο να παρέχουν χρήσιμα σχόλια στους προγραμματιστές αλλά και αρκετά ευέλικτες για να λειτουργούν σε όλα τα στάδια της ανάπτυξης, των δοκιμών και της παραγωγής. Τα προϊόντα Invicti προσφέρουν επίσης δυνατότητες ανακάλυψης περιουσιακών στοιχείων (asset discovery) ώστε να γνωρίζετε πάντα τι έχετε και τι πρέπει να προστατεύσετε.
Ειδικά όσον αφορά το Netsparker, ένα κρίσιμης σημασίας πλεονέκτημα είναι ότι με την τεχνολογία Proof-Based Scanning μπορείτε να παρέχετε στους προγραμματιστές actionable αναφορές για πραγματικές, εκμεταλλεύσιμες ευπάθειες σε συνδυασμό με πλήρεις οδηγίες αποκατάστασης που βασίζονται σε βέλτιστες πρακτικές. Χρησιμοποιώντας τις out-of-the-box ενσωματώσεις με δημοφιλή προγράμματα ιχνηλάτησης ζητημάτων/ προβλημάτων (issue trackers) μπορείτε ακόμα και να δημιουργείτε αυτόματα tickets στα εργαλεία που ήδη χρησιμοποιούνται από τις ομάδες σας. Και μόλις γίνει deploy το πρόσθετο module IAST, οι αναφορές για ευπάθειες που προορίζονται για τους προγραμματιστές μπορούν να περιλαμβάνουν λεπτομέρειες μέχρι ακόμα και μία συγκεκριμένη γραμμή κώδικα, κάνοντας την αποκατάσταση πολύ πιο απλή υπόθεση.
Αυτή η δυνατότητα αλλάζει εντελώς τη δυναμική των δοκιμών ασφάλειας εφαρμογών. Αντί για ένα σύνολο από αόριστες συστάσεις του τύπου «αυτό το κομμάτι μπορεί να είναι ανασφαλές, θα χρειαστεί να ρίξετε μια ματιά» οι προγραμματιστές λαμβάνουν πραγματικά, actionable tickets στον αγαπημένο τους issue tracker. Αντί να ξαναγράψουν κώδικα για να κάνουν απλώς την ειδοποίηση να φύγει, οι προγραμματιστές τώρα γνωρίζουν ότι διορθώνουν μια συγκεκριμένη και εκμεταλλεύσιμη ευπάθεια που θα μπορούσε να αξιοποιηθεί από κακόβουλους για να επιτεθούν στην εφαρμογή. Έτσι, αυτή η πρόσθετη εργασία που γίνεται για ζητήματα ασφάλειας κάνει πραγματική και μετρήσιμη διαφορά στη συνολική στάση ασφαλείας σας.
Μείωση και αποφυγή του χρέους ασφαλείας
Η ιδέα του τεχνικού χρέους είναι γνωστή στον αναπτυξιακό κόσμο. Ενδεχομένως να έχετε χιλιάδες γραμμές κώδικα που εξαρτώνται από μια ξεπερασμένη βιβλιοθήκη, ωστόσο η παλιά βιβλιοθήκη είναι ακόμα επαρκώς καλή. Η ενημέρωση όλου αυτού του κώδικα θα σήμαινε αρκετή πρόσθετη εργασία και δοκιμές, οπότε πάντα αναβάλλεται για αργότερα έναντι περισσότερο επειγόντων και πολύτιμων έργων. Αυτό το τεχνικό χρέος συχνά συσσωρεύεται μέχρι ωσότου χαλάσει κάτι πραγματικά και αναγκαστείτε να το διορθώσετε επειδή δεν γίνεται διαφορετικά. Εφαρμόστε τώρα την ίδια ακριβώς ιδέα και στην ασφάλεια, αντικαθιστώντας το «μέχρι να χαλάσει κάτι» από το «μέχρι να γίνει παραβίαση» και έχετε το αντίστοιχο «χρέος ασφάλειας».
Όσον αφορά την ασφάλεια εφαρμογής, αυτό το χρέος μπορεί να συσσωρευτεί σε πολλά επίπεδα, από τη χρήση γνωστών ευάλωτων στοιχείων έως την αντιμετώπιση του τείχους προστασίας διαδικτυακών εφαρμογών σας (WAF) ως μία μακροπρόθεσμη λύση και όχι ως μία «γάζα» ή επίδεσμο ωσότου διατεθεί ή είναι έτοιμο κάποιο patch για την ευπάθεια/ τις ευπάθειες. Μάλιστα ενδέχεται να έχετε να κάνετε και με συσσωρευμένο χρέος, όπου οι ίδιοι τύποι ευπαθειών εμφανίζονται ξανά και ξανά λόγω κακών πρακτικών προγραμματισμού ή ανεπαρκούς καθοδήγησης στην αποκατάσταση. Όλα αυτά αθροίζονται έως ότου αρκετοί οργανισμοί σταματήσουν να φροντίζουν συστηματικών για την ασφάλεια όλων των εφαρμογών τους επειδή ότι και αν κάνουν, το backlog για την ασφάλεια εξακολουθεί να αυξάνεται.
Ο μόνος τρόπος για να αντιμετωπίσετε το χρέος ασφάλειας είναι να επιλύετε τα ζητήματα ασφαλείας που προκύπτουν αντί να τα «σκουπίζετε κάτω από το χαλί». Για να καταφέρετε κάτι τέτοιο, αρκεί να δώσετε στους προγραμματιστές σας τα σωστά εργαλεία και διαδικασίες για να επιδιορθώσουν τις ευπάθειες και τα τρωτά σημεία γρήγορα και μόνιμα. Και εδώ είναι που γίνεται εμφανής η αξία ενός shift-left και DAST-centric προγράμματος με proof-based προσέγγιση. Αυτή η εστίαση στις πραγματικές αδυναμίες που θα μπορούσαν να αξιοποιηθούν από τους επιτιθέμενους θα σας βοηθήσει να βελτιώνετε διαρκώς τις πρακτικές ασφάλειας και προγραμματισμού σας για να αποτρέψετε τη συσσώρευση ζητημάτων ασφαλείας.
Η ασφάλεια έχει να κάνει με τη γενικότερη εικόνα
Πρόσφατα περιστατικά/ παραβιάσεις ή επιθέσεις υψηλού προφίλ στέλνουν το μήνυμα ότι στη σύγχρονη διαδικτυακή ασφάλεια δεν υπάρχει τέτοιο πράγμα όπως μία ασήμαντη εφαρμογή. Οι επιτιθέμενοι μπορούν να επιλέξουν τον χρόνο και τον τόπο τους καθώς η επιφάνεια επίθεσης των εφαρμογών (και των οργανισμών) συνεχίζει να αυξάνεται εκτείνοντας νέο κώδικα μαζί με τον υφιστάμενο, πολλαπλές διαδικτυακές τεχνολογικές στοίβες, βιβλιοθήκες ανοιχτού κώδικα, στοιχεία τρίτων και πολλά άλλα. Για να γνωρίζετε την πραγματική στάση ασφαλείας σας, πρέπει να ξεκινήσετε με τη μεγάλη εικόνα προτού προχωρήσετε στην ανάλυση συγκεκριμένων ευπαθειών.
Οι σύγχρονες λύσεις σάρωσης ευπαθειών όπως το Netsparker by Invicti είναι εξαιρετικά ακριβείς και μπορούν να εκτελέσουν πλήρεις σαρώσεις σε λίγες ώρες ή τμηματικές σαρώσεις μέσα σε λίγα λεπτά. Για τις υπάρχουσες εφαρμογές, μία τέτοια επιλογή σας επιτρέπει να σαρώνετε ολόκληρο το περιβάλλον σας για ευπάθειες όσο συχνά χρειάζεστε – ακόμη και καθημερινά αν αυτό επιβάλλεται από την πολιτική ασφαλείας σας. Στην περίπτωση των δοκιμών ασφάλειας στο στάδιο της ανάπτυξης, παρέχεται γρήγορο και actionable feedback στους προγραμματιστές, οι οποίοι στη συνέχεια μπορούν να προχωρήσουν στην γρήγορη και αποτελεσματική επίλυση ζητημάτων ασφαλείας στον δικό τους κώδικα.
Και καθ’ όλη τη διάρκεια έχετε πλήρη ορατότητα πάνω στην τρέχουσα στάση ασφαλείας σας βελτιώνοντας παράλληλα την ασφάλεια της εφαρμογής σας μακροπρόθεσμα. Και επειδή εργάζεστε με αξιόπιστα δεδομένα, οι επαγγελματίες ασφάλειας και ανάπτυξης σας δεν χάνουν χρόνο σε αναποτελεσματικές επικοινωνίες ή παραπλανητικά αποτελέσματα.
Έτσι γίνεται σωστά η «μετάβαση προς τα αριστερά».
Source: Netsparker