Fuzzing, Harness Design και Coverage-Guided Testing — DedSec Project
Fuzzing, Harness Design και Coverage-Guided Testing Ελληνική έκδοση — Μάθημα 068. Οι διεθνείς τεχνικοί όροι, protocol names, standards και commands διατηρούνται στα Αγγλικά όπου αυτό βοηθά…
Ελληνική έκδοση — Μάθημα 068. Οι διεθνείς τεχνικοί όροι, protocol names, standards και commands διατηρούνται στα Αγγλικά όπου αυτό βοηθά την ακρίβεια.
Στόχος του μαθήματος
Σε αυτό το μάθημα εστιάζεις ειδικά στο Fuzzing, Harness Design και Coverage-Guided Testing. Στο τέλος πρέπει να μπορείς να περιγράψεις το security model με δικά σου λόγια, να αναγνωρίζεις τα βασικά failure modes, να σχεδιάζεις ασφαλή test cases και να εξηγείς ποιο evidence χρειάζεται για να στηριχθεί ένα συμπέρασμα.
Θέματα που καλύπτονται
- What fuzzing actually does Στο What fuzzing actually does, σύνδεσε τον υψηλού επιπέδου μηχανισμό με process, memory και runtime state. Χρησιμοποίησε harmless samples, debugger/sanitizer ή static analysis σε lab και κατέγραψε root cause, mitigation και observable artifacts.
- Fuzzing models Στο Fuzzing models, σύνδεσε τον υψηλού επιπέδου μηχανισμό με process, memory και runtime state. Χρησιμοποίησε harmless samples, debugger/sanitizer ή static analysis σε lab και κατέγραψε root cause, mitigation και observable artifacts.
- Mutation-based Για το Mutation-based, σχεδίασε deterministic harness με σαφή input boundary, bounded resources και reproducible crash capture. Χρησιμοποίησε coverage/sanitizers ως feedback, κάνε minimize κάθε failure και κράτησε regression input μόνο για λογισμικό που ελέγχεις.
- Generation-based Για το Generation-based, σχεδίασε deterministic harness με σαφή input boundary, bounded resources και reproducible crash capture. Χρησιμοποίησε coverage/sanitizers ως feedback, κάνε minimize κάθε failure και κράτησε regression input μόνο για λογισμικό που ελέγχεις.
- Coverage-guided Για το Coverage-guided, σχεδίασε deterministic harness με σαφή input boundary, bounded resources και reproducible crash capture. Χρησιμοποίησε coverage/sanitizers ως feedback, κάνε minimize κάθε failure και κράτησε regression input μόνο για λογισμικό που ελέγχεις.
- Property-based Για το Property-based, σχεδίασε deterministic harness με σαφή input boundary, bounded resources και reproducible crash capture. Χρησιμοποίησε coverage/sanitizers ως feedback, κάνε minimize κάθε failure και κράτησε regression input μόνο για λογισμικό που ελέγχεις.
- Stateful/protocol fuzzing Στο Stateful/protocol fuzzing, ακολούθησε packet και protocol state από άκρο σε άκρο: ποιο endpoint δημιουργεί κάθε field, τι validation γίνεται, πού αλλάζει trust boundary και ποια telemetry επιβεβαιώνει την πραγματική ροή.
- Harness design Για το Harness design, σχεδίασε deterministic harness με σαφή input boundary, bounded resources και reproducible crash capture. Χρησιμοποίησε coverage/sanitizers ως feedback, κάνε minimize κάθε failure και κράτησε regression input μόνο για λογισμικό που ελέγχεις.
- Corpus design Για το Corpus design, σχεδίασε deterministic harness με σαφή input boundary, bounded resources και reproducible crash capture. Χρησιμοποίησε coverage/sanitizers ως feedback, κάνε minimize κάθε failure και κράτησε regression input μόνο για λογισμικό που ελέγχεις.
- Coverage is a guide, not a goal Για το Coverage is a guide, not a goal, σχεδίασε deterministic harness με σαφή input boundary, bounded resources και reproducible crash capture. Χρησιμοποίησε coverage/sanitizers ως feedback, κάνε minimize κάθε failure και κράτησε regression input μόνο για λογισμικό που ελέγχεις.
- Sanitizers Για το Sanitizers, σχεδίασε deterministic harness με σαφή input boundary, bounded resources και reproducible crash capture. Χρησιμοποίησε coverage/sanitizers ως feedback, κάνε minimize κάθε failure και κράτησε regression input μόνο για λογισμικό που ελέγχεις.
- Timeouts and hangs Για το Timeouts and hangs, σχεδίασε deterministic harness με σαφή input boundary, bounded resources και reproducible crash capture. Χρησιμοποίησε coverage/sanitizers ως feedback, κάνε minimize κάθε failure και κράτησε regression input μόνο για λογισμικό που ελέγχεις.
- Crash deduplication Στο Crash deduplication, σύνδεσε τον υψηλού επιπέδου μηχανισμό με process, memory και runtime state. Χρησιμοποίησε harmless samples, debugger/sanitizer ή static analysis σε lab και κατέγραψε root cause, mitigation και observable artifacts.
- Minimization Για το Minimization, σχεδίασε deterministic harness με σαφή input boundary, bounded resources και reproducible crash capture. Χρησιμοποίησε coverage/sanitizers ως feedback, κάνε minimize κάθε failure και κράτησε regression input μόνο για λογισμικό που ελέγχεις.
- Differential fuzzing Στο Differential fuzzing, σύνδεσε τον υψηλού επιπέδου μηχανισμό με process, memory και runtime state. Χρησιμοποίησε harmless samples, debugger/sanitizer ή static analysis σε lab και κατέγραψε root cause, mitigation και observable artifacts.
- Metamorphic testing Για το Metamorphic testing, δες το workflow σαν reproducible local environment: paths, package/source provenance, permissions, environment state, error handling και rollback. Στο Termux προτίμησε standard-library εργαλεία, explicit paths και δοκιμές σε harmless local files/services.
- Safe Python micro-fuzzer Για το Safe Python micro-fuzzer, δες το workflow σαν reproducible local environment: paths, package/source provenance, permissions, environment state, error handling και rollback. Στο Termux προτίμησε standard-library εργαλεία, explicit paths και δοκιμές σε harmless local files/services.
- Fuzzing authorization logic Για το Fuzzing authorization logic, χαρτογράφησε principal/subject, credential ή authentication context, permissions, lifetime και revocation. Ξεχώρισε ποιο component πιστοποιεί την ταυτότητα από εκείνο που παίρνει την τελική authorization απόφαση.
- CI integration Για το CI integration, σχεδίασε deterministic harness με σαφή input boundary, bounded resources και reproducible crash capture. Χρησιμοποίησε coverage/sanitizers ως feedback, κάνε minimize κάθε failure και κράτησε regression input μόνο για λογισμικό που ελέγχεις.
Μέθοδος ανάλυσης
Χρησιμοποίησε τη Μεθοδολογία Μελέτης για scope, evidence, note-taking και κριτήρια ολοκλήρωσης. Για το Fuzzing, Harness Design και Coverage-Guided Testing, πριν κάνεις οποιοδήποτε test σχεδίασε τα components, σημείωσε πού αλλάζει η εμπιστοσύνη και γράψε μία πρόταση που περιγράφει το security invariant που θέλεις να ελέγξεις.
Καθοδηγούμενο εργαστήριο
Ακολούθησε τη Μεθοδολογία Μελέτης: γράψε expected result πριν το test, άλλαξε μία μεταβλητή κάθε φορά, κράτησε sanitized evidence και κάνε retest μετά το hardening του Fuzzing, Harness Design και Coverage-Guided Testing.
Έλεγχος γνώσεων
- Μπορείς να εξηγήσεις το βασικό trust boundary του Fuzzing, Harness Design και Coverage-Guided Testing χωρίς σημειώσεις;
- Μπορείς να δώσεις ένα failure mode και να πεις ποιο evidence θα το επιβεβαίωνε;
- Μπορείς να ξεχωρίσεις symptom, root cause και compensating control;
- Μπορείς να σχεδιάσεις ασφαλές retest που δεν επεκτείνει το scope;