Πώς να χρησιμοποιήσετε ένα απλό βοηθητικό πρόγραμμα για να βρείτε τρωτά σημεία στον κώδικα προγράμματος

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

Πώς να χρησιμοποιήσετε ένα απλό βοηθητικό πρόγραμμα για να βρείτε τρωτά σημεία στον κώδικα προγράμματος
Πηγή: Unsplash (Μάρκους Σπίσκε)

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

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

Υπάρχουν διαφορετικές προσεγγίσεις για την επίλυση προβλημάτων ασφάλειας, όπως Στατική Δοκιμή Ασφάλειας Εφαρμογών (SAST), Δυναμική Δοκιμή Ασφάλειας Εφαρμογών (DAST), Διαδραστική Δοκιμή Ασφάλειας Εφαρμογών (IAST), Ανάλυση Σύνθεσης Λογισμικού κ.λπ.

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

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

Γιατί επέλεξα ένα εργαλείο ανοιχτού κώδικα για ανάλυση ασφάλειας στατικού κώδικα

Υπάρχουν διάφοροι λόγοι για αυτό: πρώτον, είναι δωρεάν επειδή χρησιμοποιείτε ένα εργαλείο που αναπτύχθηκε από μια κοινότητα ομοϊδεατών που θέλουν να βοηθήσουν άλλους προγραμματιστές. Εάν έχετε μια μικρή ομάδα ή startup, έχετε μια μεγάλη ευκαιρία να εξοικονομήσετε χρήματα χρησιμοποιώντας λογισμικό ανοιχτού κώδικα για να δοκιμάσετε την ασφάλεια της βάσης κωδίκων σας. Δεύτερον, εξαλείφει την ανάγκη να προσλάβετε μια ξεχωριστή ομάδα DevSecOps, μειώνοντας περαιτέρω το κόστος σας.

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

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

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

Χρήση Graudit για ανάλυση ασφαλείας κώδικα

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

Εδώ θα χρησιμοποιήσουμε Graudit, ένα απλό βοηθητικό πρόγραμμα γραμμής εντολών που θα μας επιτρέψει να βρούμε τρωτά σημεία στη βάση κώδικα μας. Υποστηρίζει διαφορετικές γλώσσες, αλλά και πάλι το σύνολο τους είναι περιορισμένο. Το Graudit αναπτύχθηκε με βάση το βοηθητικό πρόγραμμα grep, το οποίο κάποτε κυκλοφόρησε με την άδεια GNU.

Υπάρχουν παρόμοια εργαλεία για την ανάλυση στατικού κώδικα - Rough Auditing Tool for Security (RATS), Securitycompass Web Application Analysis Tool (SWAAT), flawfinder και ούτω καθεξής. Αλλά το Graudit είναι πολύ ευέλικτο και έχει ελάχιστες τεχνικές απαιτήσεις. Ωστόσο, μπορεί να έχετε προβλήματα που το Graudit δεν μπορεί να λύσει. Στη συνέχεια, μπορείτε να αναζητήσετε άλλες επιλογές εδώ σε αυτή τη λίστα.

Μπορούμε να ενσωματώσουμε αυτό το εργαλείο σε ένα συγκεκριμένο έργο ή να το κάνουμε διαθέσιμο σε έναν επιλεγμένο χρήστη ή να το χρησιμοποιήσουμε ταυτόχρονα σε όλα τα έργα μας. Εδώ παίζει επίσης ρόλο η ευελιξία του Graudit. Ας κλωνοποιήσουμε λοιπόν πρώτα το repo:

$ git clone https://github.com/wireghoul/graudit

Τώρα ας δημιουργήσουμε έναν συμβολικό σύνδεσμο για το Graudit για να τον χρησιμοποιήσει σε μορφή εντολών

$ cd ~/bin && mkdir graudit
$ ln --symbolic ~/graudit/graudit ~/bin/graudit

Ας προσθέσουμε ένα ψευδώνυμο στο .bashrc (ή οποιοδήποτε αρχείο διαμόρφωσης που χρησιμοποιείτε):

#------ .bashrc ------
alias graudit="~/bin/graudit"

Επανεκκίνηση:

$ source ~/.bashrc # OR
$ exex $SHELL

Ας ελέγξουμε αν η εγκατάσταση ήταν επιτυχής:

$ graudit -h

Αν δείτε κάτι παρόμοιο, τότε όλα είναι καλά.

Πώς να χρησιμοποιήσετε ένα απλό βοηθητικό πρόγραμμα για να βρείτε τρωτά σημεία στον κώδικα προγράμματος

Θα δοκιμάσω ένα από τα υπάρχοντα έργα μου. Πριν από την εκτέλεση του εργαλείου, πρέπει να του περάσει μια βάση δεδομένων που αντιστοιχεί στη γλώσσα στην οποία είναι γραμμένο το έργο μου. Οι βάσεις δεδομένων βρίσκονται στο φάκελο ~/gradit/signatures:

$ graudit -d ~/gradit/signatures/js.db

Έτσι, δοκίμασα δύο αρχεία js από το έργο μου και το Graudit εμφάνισε πληροφορίες σχετικά με ευπάθειες στον κώδικά μου στην κονσόλα:

Πώς να χρησιμοποιήσετε ένα απλό βοηθητικό πρόγραμμα για να βρείτε τρωτά σημεία στον κώδικα προγράμματος

Πώς να χρησιμοποιήσετε ένα απλό βοηθητικό πρόγραμμα για να βρείτε τρωτά σημεία στον κώδικα προγράμματος

Μπορείτε να δοκιμάσετε να δοκιμάσετε τα έργα σας με τον ίδιο τρόπο. Μπορείτε να δείτε μια λίστα βάσεων δεδομένων για διαφορετικές γλώσσες προγραμματισμού εδώ.

Πλεονεκτήματα και μειονεκτήματα του Graudit

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

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

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

Έναρξη…

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

Σχετικά με τα Δικαιώματα Διαφήμισης

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

Πώς να χρησιμοποιήσετε ένα απλό βοηθητικό πρόγραμμα για να βρείτε τρωτά σημεία στον κώδικα προγράμματος

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο