Η Google παρουσίασε το έργο ClusterFuzzLite, το οποίο σας επιτρέπει να οργανώσετε δοκιμές fuzzing κώδικα για την έγκαιρη ανίχνευση πιθανών ευπαθειών στο στάδιο των συστημάτων συνεχούς ολοκλήρωσης. Προς το παρόν, το ClusterFuzz μπορεί να χρησιμοποιηθεί για την αυτοματοποίηση των δοκιμών fuzzing των αιτημάτων pull στο GitHub Actions, το Google Cloud Build και το Prow, αλλά αναμένεται υποστήριξη για άλλα συστήματα CI στο μέλλον. Το έργο βασίζεται στην πλατφόρμα ClusterFuzz, η οποία δημιουργήθηκε για τον συντονισμό του έργου των clusters δοκιμών fuzzing και διανέμεται με την άδεια Apache 2.0.
Σημειώνεται ότι μετά την εισαγωγή της υπηρεσίας OSS-Fuzz από την Google το 2016, περισσότερα από 500 σημαντικά έργα ανοιχτού κώδικα έγιναν δεκτά στο πρόγραμμα συνεχούς δοκιμής fuzzing. Με βάση τους ελέγχους που διεξήχθησαν, εξαλείφθηκαν περισσότερες από 6500 επιβεβαιωμένες ευπάθειες και διορθώθηκαν περισσότερα από 21 χιλιάδες σφάλματα. Το ClusterFuzzLite συνεχίζει να αναπτύσσει μηχανισμούς δοκιμής fuzzing με τη δυνατότητα ανίχνευσης προβλημάτων νωρίτερα στο στάδιο της αναθεώρησης των προτεινόμενων αλλαγών. Το ClusterFuzzLite έχει ήδη εφαρμοστεί στις διαδικασίες αναθεώρησης αλλαγών στα έργα systemd και curl και έχει καταστήσει δυνατή την αναγνώριση σφαλμάτων που δεν εντοπίστηκαν από τους στατικούς αναλυτές και τα linters που χρησιμοποιούνται στο αρχικό στάδιο του ελέγχου νέου κώδικα.
Το ClusterFuzzLite υποστηρίζει τον έλεγχο έργων σε C, C++, Java (και άλλες γλώσσες που βασίζονται σε JVM), Go, Python, Rust και Swift. Ο έλεγχος fuzzing εκτελείται χρησιμοποιώντας τη μηχανή LibFuzzer. Τα εργαλεία AddressSanitizer, MemorySanitizer και UBSan (UndefinedBehaviorSanitizer) μπορούν επίσης να κληθούν για την ανίχνευση σφαλμάτων και ανωμαλιών μνήμης.
Βασικά χαρακτηριστικά του ClusterFuzzLite: γρήγορη δοκιμή προτεινόμενων αλλαγών για την εύρεση σφαλμάτων πριν από την αποδοχή του κώδικα· φόρτωση αναφορών σχετικά με τις συνθήκες σφάλματος· δυνατότητα μετάβασης σε πιο προηγμένες δοκιμές fuzzing για τον εντοπισμό βαθύτερων σφαλμάτων που δεν εμφανίστηκαν μετά τον έλεγχο της αλλαγής κώδικα· δημιουργία αναφορών κάλυψης για την αξιολόγηση της κάλυψης του κώδικα κατά τη διάρκεια των δοκιμών· αρθρωτή αρχιτεκτονική που σας επιτρέπει να επιλέξετε την απαραίτητη λειτουργικότητα.
Ας υπενθυμίσουμε ότι οι δοκιμές fuzzing περιλαμβάνουν τη δημιουργία μιας ροής κάθε είδους τυχαίων συνδυασμών δεδομένων εισόδου που πλησιάζουν τα πραγματικά δεδομένα (π.χ. σελίδες HTML με τυχαίες παραμέτρους ετικετών, αρχεία ή εικόνες με μη φυσιολογικές κεφαλίδες κ.λπ.) και την καταγραφή πιθανών σφαλμάτων κατά την επεξεργασία τους. Εάν κάποια ακολουθία οδηγήσει σε σφάλμα ή δεν αντιστοιχεί στην αναμενόμενη αντίδραση, τότε μια τέτοια συμπεριφορά είναι πολύ πιθανό να υποδηλώνει σφάλμα ή ευπάθεια.
Πηγή: opennet.ru
