Atheris, ένα Python Code Testing Toolkit

Η Google αποκάλυψε πρόσφατα η κυκλοφορία του Πρόγραμμα Atheris, η οποία είναι μια ανάπτυξη του ένα σύνολο εργαλείων ανοιχτού κώδικα εξειδικευμένο για δοκιμές fuzzing του κώδικα Python και επεκτάσεις για CPython γραμμένα σε C / C ++.

Το έργο χρησιμοποιεί κινητήρα που βασίζεται στο libFuzzer και μπορούν να χρησιμοποιηθούν σε συνδυασμό με τα εργαλεία Sanitizer διεύθυνσης και απροσδιόριστης συμπεριφοράς για την ανίχνευση πρόσθετων σφαλμάτων. Ο κωδικός είναι ανοιχτός με την άδεια Apache 2.0.

Σχετικά με το Google Atheris

Σύμφωνα με τα λόγια του Google Atheris, είναι μια εργαλειοθήκη που μπορεί να χρησιμοποιηθεί για την αυτόματη εύρεση σφαλμάτων στον κώδικα Python και στις εγγενείς επεκτάσεις. Το Atheris είναι ένα fuzzer «με γνώμονα την κάλυψη», που σημαίνει ότι ο Atheris θα δοκιμάσει επανειλημμένα διάφορες εισόδους στο πρόγραμμά σας, παρακολουθώντας το να τρέχει και θα προσπαθήσει να βρει ενδιαφέρουσες διαδρομές.

Υποστηρίζεται η αναθεώρηση κώδικα για το Python 2.7 και το Python 3.3+, αλλά για πλήρη καθοδηγούμενη κάλυψη, συνιστάται η χρήση των κλάδων Python 3.8 και 3.9, τα οποία υποστηρίζουν πλέον στατιστικά στοιχεία opcode από opcode.

Κατά τη διάρκεια, Ο Atheris παραθέτει πιθανούς συνδυασμούς δεδομένων εισαγωγής και δημιουργεί μια αναφορά σε όλες τις ανιχνευμένες βλάβες και τις μη εντοπισμένες εξαιρέσεις

Για παράδειγμα, κατά τον έλεγχο της βιβλιοθήκης ανάλυσης YAML στο Atheris, διαπιστώθηκε ότι ορισμένες δομές YAML, όπως ο καθορισμός "-_" αντί για ακέραια τιμή ή χρήση λίστας αντί κλειδιού, ρίχνουν μια απροσδόκητη εξαίρεση αντί για ένα πρότυπο YAMLErrors λάθος.

Η δοκιμή fuzz είναι μια πολύ γνωστή τεχνική για την ανακάλυψη λαθών προγραμματισμού. Πολλά από αυτά τα ανιχνεύσιμα σφάλματα έχουν σοβαρές επιπτώσεις στην ασφάλεια. Η Google εντόπισε χιλιάδες ευπάθειες ασφαλείας και άλλα σφάλματα κατά τη χρήση αυτής της τεχνικής. Το Fuzzing χρησιμοποιείται παραδοσιακά σε μητρικές γλώσσες όπως το C ή το C ++, αλλά πέρυσι δημιουργήσαμε μια νέα μηχανή Python fuzzing. Σήμερα, κυκλοφορήσαμε τον κινητήρα Atheris fuzzing ως ανοιχτού κώδικα.

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

Μία από τις καλύτερες χρήσεις για το Atheris είναι για διαφορικούς διαχύτες. Αυτά είναι fuzzers που αναζητούν διαφορές στη συμπεριφορά δύο βιβλιοθηκών που προορίζονται να κάνουν το ίδιο πράγμα. Ένα από τα παραδείγματα fuzzers που συσκευάστηκαν με τον Atheris το κάνει ακριβώς αυτό για να συγκρίνει το πακέτο "idna" της Python με το πακέτο C "libidn2".

Ειδικότερα, εάν ο τομέας χρησιμοποιούσε ακολουθίες Unicode, τότε το "idna" και το "libidn2" μετέτρεψαν το διεθνές όνομα τομέα σε διαφορετικούς κεντρικούς υπολογιστές.

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

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

Εάν κάποια ακολουθία οδηγεί σε εξαίρεση ή δεν ταιριάζει με την αναμενόμενη απόκριση, αυτή η συμπεριφορά υποδηλώνει πιθανότατα σφάλμα ή ευπάθεια.

Τέλος, όπως αναφέρθηκε Ο Atheris συνεργάζεται με τον κώδικα Python στις εκδόσεις 2.7 και 3.3+, αν και η Google συνιστά ανεπιφύλακτα τη χρήση 3.8+ και εγγενών επεκτάσεων που έχουν γραφτεί για το CPython.

Τα Windows δεν είναι ακόμη μεταξύ των υποστηριζόμενων λειτουργικών συστημάτων, οπότε ο κινητήρας ενδιαφέρει μόνο τους χρήστες Linux και Mac OS X προς το παρόν.

Για να το χρησιμοποιήσουν σε αυτές τις πλατφόρμες, οι προγραμματιστές πρέπει να έχουν εγκατεστημένη μια τρέχουσα έκδοση του frontend μεταγλωττιστή Clang.

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


Αφήστε το σχόλιό σας

Η διεύθυνση email σας δεν θα δημοσιευθεί. Τα υποχρεωτικά πεδία σημειώνονται με *

*

*

  1. Υπεύθυνος για τα δεδομένα: Miguel Ángel Gatón
  2. Σκοπός των δεδομένων: Έλεγχος SPAM, διαχείριση σχολίων.
  3. Νομιμοποίηση: Η συγκατάθεσή σας
  4. Κοινοποίηση των δεδομένων: Τα δεδομένα δεν θα κοινοποιούνται σε τρίτους, εκτός από νομική υποχρέωση.
  5. Αποθήκευση δεδομένων: Βάση δεδομένων που φιλοξενείται από τα δίκτυα Occentus (ΕΕ)
  6. Δικαιώματα: Ανά πάσα στιγμή μπορείτε να περιορίσετε, να ανακτήσετε και να διαγράψετε τις πληροφορίες σας.