Τι είναι το Fuzz Testing;

Ο έλεγχος Fuzz, επίσης γνωστός ως δοκιμή fuzzing ή μαϊμού, είναι μια τεχνική που χρησιμοποιείται για τη δοκιμή λογισμικού για άγνωστα τρωτά σημεία. Η διαδικασία δοκιμής του fuzz είναι αυτοματοποιημένη από ένα πρόγραμμα γνωστό ως fuzzer, το οποίο έρχεται με ένα μεγάλο όγκο δεδομένων για να στείλει στο πρόγραμμα στόχο ως είσοδο. Εάν το πρόγραμμα-στόχος καταρρεύσει ή συμπεριφέρεται με ανεπιθύμητο τρόπο, ο διανομέας κάνει ένα αρχείο καταγραφής της εισόδου που προκάλεσε το σφάλμα.

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

Προέλευση

Το πρώτο fuzzer γράφτηκε στις αρχές της δεκαετίας του 1980 από τον προγραμματιστή Steve Capps για να δοκιμάσει την αδυναμία στα προγράμματα για τον υπολογιστή Macintosh. Κάλεσε το πρόγραμμά του "Το μαϊμού", αναφερόμενος στο κλασικό ρητό ενός πιθήκου πιέζοντας τυχαία πλήκτρα σε μια γραφομηχανή για ένα άπειρο χρονικό διάστημα. Η θεωρία είναι ότι δίνεται αρκετός χρόνος, ο πίθηκος τελικά θα γράψει τα πλήρη έργα του Σαίξπηρ. Παρόλο που αυτή η προσέγγιση για τις δοκιμές λογισμικού ονομάζεται συνήθως "fuzzing", ονομάζεται επίσης "δοκιμή μαϊμού" λόγω του προγράμματος Capps.

Κατάλογος των Fuzzers

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

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

Όνομα / URL FuzzerΠεριγραφή
Google SanitizersΜια ομάδα τεσσάρων απολυμαντικών δεδομένων που αναπτύχθηκε στο Google, οι οποίες χρησιμοποιούν το fuzzing για την ανίχνευση σφαλμάτων προγράμματος:
  • AddressSanitizer, που ανιχνεύει σφάλματα διευθύνσεων μνήμης σε προγράμματα C και C ++.
  • LeakSanitizer, που ανιχνεύει διαρροές μνήμης.
  • ThreadSanitizer, το οποίο ανιχνεύει τις συνθήκες του αγώνα σε C + + και Go.
  • Memory Sanitizer, το οποίο ανιχνεύει μη αρχικοποιημένη μνήμη.
afl-fuzzAmerican Fuzzy Lop, ένα εργαλείο που χρησιμοποιεί γενετικούς αλγόριθμους για να ελέγξει την ασφάλεια των μεταγλωττισμένων προγραμμάτων.
ΠίσωΈνα πακέτο εργαλείων με παγωμένο πρωτόκολλο.
BrundleFuzzΈνα διανεμημένο fuzzer για Windows και Linux.
CERT FOEFailure Observation Engine, ένα εργαλείο που αναπτύχθηκε από το CERT, το οποίο χρησιμοποιεί μεταλλαγμένο fuzzing για την ανίχνευση τρωτών σημείων στα προγράμματα των Windows.
CERTfuzzΟ πηγαίος κώδικας του CERT FOE.
ChoronzonΈνας εξελικτικός βασιστής της γνώσης.
ΔιαφορετικάΈνα εργαλείο που αναπτύχθηκε από το Twitter για να ανακαλύψει ευπάθειες στις υπηρεσίες web.
ΖαλισμένοςΜία εύχρηστη βιβλιοθήκη για την Python
dfuzzerΈνα εργαλείο ασυμμετρίας για δοκιμές διεργασιών που επικοινωνούν μέσω του μηχανισμού D-Bus IPC και RPC.
dotdotpwnΈνα εργαλείο για τη δοκιμή εφαρμογών ιστού για ευπάθειες διαδρομής διαδρομής.
DranzerΈνας ελεγκτής fuzz για τα στοιχεία ελέγχου ActiveX.
EMFFuzzerΈνας ενισχυμένος μετρητής fuzz Metafile.
ΑξιοποιήσιμηΜια επέκταση για το GDB (το GNU debugger) που αναλύει τα εκτελέσιμα Linux και ταξινομεί τα σφάλματα τους με σοβαρότητα σύμφωνα με γνωστά εκμεταλλεύματα. Αρχικά αναπτύχθηκε στο CERT.
Go-fuzzΈνας δοκιμαστής fuzz για προγράμματα Go που συγκεντρώνει τα αντικείμενα τους με τυχαίες τιμές.
grrΜεταφράζει τα δυαδικά δυαδικά αρχεία 32-bit σε 64-bit, τα οποία τα συγχωνεύουν ως μέρος της διαδικασίας.
honggfuzzΕξελικτικός, ανατροφοδοτούμενος fuzzer για υλικό και λογισμικό.
HTTP / 2 FuzzerΈνα fuzzer για εφαρμογές HTTP / 2, που είναι ακόμα διαθέσιμες για λήψη, αλλά δεν αναπτύσσονται πλέον.
HodorΜια "λίγο περισσότερο από εντελώς χαζή" (brute force) fuzzer.
iFuzzerΈνας κόμβος γραμμένος σε Python που χρησιμοποιεί Mercurial και Valgrind.
KEMUfuzzerΈνα διανομέα για εικονικές μηχανές που εκτελούνται σε πλατφόρμες εξομοίωσης QEMU, VMware, VirtualBox ή BHOCS.
KernelFuzzerΈνας κόμβος για κλήσεις συστήματος πυρήνα
LibFuzzerΜια βιβλιοθήκη για την εξέλιξη, την εξελικτική, την καθοδηγούμενη από την κάλυψη ανάλυση.
NetzobΈνας ασαφιστήρας για πρωτόκολλα επικοινωνιών αντίστροφης μηχανικής.
Νευρωνικό FuzzerΈνα διανομέα που χρησιμοποιεί μηχανική μάθηση (νευρωνικά δίκτυα) για να εκτελέσει τις δοκιμές του.
ΕφιάλτηςΈνα κατανεμημένο διανομέα με εργαλεία διαχείρισης μέσω διαδικτύου.
PathgrindΔυναμική ανάλυση βάσει μονοπατιών για εφαρμογές 32-bit.
Perf-fuzzerΈνας κόμβος ειδικά σχεδιασμένος για να ελέγξει την κλήση συστήματος perf_event_open () στον πυρήνα του Linux.
PulsarΈνα θρυμματισμό που "μαθαίνει" τα πρωτόκολλα.
PyJFuzzΈνας ψεκαστήρας Python JSON.
QuickFuzzΈνας πειραματικός γραμματικός fuzzer που γράφτηκε στο Haskell.
RadamsaΈνα γενικό σκοπό.
ΡάντιΈνας απλός πυγμάχος Python που παράγει τυχαία είσοδο για το δοκιμασμένο πρόγραμμα.
sfuzzΑπλό fuzz. "Ακριβώς ό, τι ακούγεται - ένας απλός θόρυβος." Περιλαμβάνεται ως μέρος του εργαλείου Kali Linux.
skipfishΈνας σαρωτής ασφάλειας εφαρμογών ιστού που αναπτύχθηκε στο Google.
syntribiosΈνας αυτοματοποιημένος ελεγκτής fuzz για web API, γραμμένο σε Python και συντηρείται από την OpenStack Security Group.
TriforceAFLΈνα πλήρες σύστημα ασυρμάτου που χρησιμοποιεί το QEMU.
Είδος ελάφου της ΑμερικήςΈνας σαρωτής ευπάθειας web εφαρμογής.
WfuzzΈνας κόμβος ωμής βίας για εφαρμογές ιστού.
zzufΈνα ντετερμινιστικό, διαφανές fuzzer εισόδου εφαρμογών που αλλάζει τυχαία τα bits στις λειτουργίες εισαγωγής ενός αρχείου.

Τα ακόλουθα είναι αμαυρώματα ή πλαίσια, τα οποία μπορούν να σας βοηθήσουν να διαχειριστείτε τις δοκιμές σας με αστραπές.

Fuzzing πλαίσιοΠεριγραφή
CERT BFFΤο BFF (Basic Fuzzing Framework), το οποίο αναπτύχθηκε από το CERT, έχει σχεδιαστεί για να εντοπίζει ευπάθειες σε εφαρμογές Windows, macOS και Linux.
FuzzFlowΈνα εύθραυστο πλαίσιο στο AngularJS.
FuzzinatorΈνα πλαίσιο για την τυχαία δοκιμασία fuzz.
FuzzLabsΈνα πλαίσιο δοκιμών γενικού σκοπού.
ΤραπεζίτηςΈνα αυτοματοποιητή / πλαίσιο ελέγχου για τη δοκιμή φυλλομετρητών ιστού.
ΓατούλαΈνα πλαίσιο δοκιμής Fuzz γραμμένο στην Python.
ofuzzΈνα ασαφές πλαίσιο γραμμένο στο OCaml.
NodefuzzΈνα πλαίσιο δοκιμών για web browsers, γραμμένο σε nodejs.
PassiveFuzzFrameworkOSXΈνας θόρυβος για τον έλεγχο τρωτών σημείων στον πυρήνα macOS.
Ροδάκινο FuzzerΜια πλατφόρμα για δοκιμές fuzz που μπορούν να "δοκιμάσουν σχεδόν οποιοδήποτε σύστημα για άγνωστα τρωτά σημεία".
RamFuzzΈνας ασαφιστήρας για τη δοκιμή των μεμονωμένων παραμέτρων των μεθόδων αντικειμένου.
ΣουλλίΈνα "πλήρως αυτοματοποιημένο και μη επιτηρούμενο, καθαρό πλαίσιο Python".
FunFuzzerΜια ιμάντα Python fuzzing για μηχανές JavaScript και εκδότες DOM, από το Mozilla.

Bug, Προγραμματιστικοί όροι, Όροι ασφάλειας, Δοκιμές λογισμικού