DedSec Project

Concurrency, Race Conditions, TOCTOU και Atomicity — DedSec Project

Concurrency, Race Conditions, TOCTOU και Atomicity Ελληνική έκδοση — Μάθημα 117. Οι διεθνείς τεχνικοί όροι, protocol names, standards και commands παραμένουν στα Αγγλικά όπου αυτό αυξάνει…

Ελληνική έκδοση — Μάθημα 117. Οι διεθνείς τεχνικοί όροι, protocol names, standards και commands παραμένουν στα Αγγλικά όπου αυτό αυξάνει την ακρίβεια.

Οι race conditions είναι σφάλματα χρόνου και state. Το μάθημα εξηγεί interleavings, atomicity, TOCTOU, locks και ασφαλή reproducibility σε local labs.

Μαθησιακοί στόχοι

Στο τέλος πρέπει να μπορείς να:

Βαθιές τεχνικές έννοιες

1. threads, tasks και interleavings

Concurrent code έχει πολλές νόμιμες σειρές εκτέλεσης. Ένα security invariant πρέπει να ισχύει σε κάθε επιτρεπτό interleaving και όχι μόνο στο timing που είδες μία φορά.

2. shared mutable state

Shared mutable state χρειάζεται ξεκάθαρο ownership και synchronization model. Σημείωσε τι είναι atomic, τι προστατεύεται από lock/transaction και αν readers μπορούν να δουν partial update.

3. check-then-act races

Σε check-then-act race η κατάσταση ελέγχεται και αργότερα χρησιμοποιείται αφού άλλος actor μπορεί να την αλλάξει. Προτίμησε atomic operation ή revalidation στο ίδιο authority boundary όπου γίνεται η τελική πράξη.

4. TOCTOU σε filesystem και IPC

Paths, handles και IPC state μπορούν να αλλάξουν μεταξύ check και use. Stable handles, descriptor-based APIs, immutable identifiers και server-side revalidation μειώνουν την εξάρτηση από mutable names.

5. atomic operations και memory ordering

Atomic δεν σημαίνει ότι ολόκληρο multi-step protocol είναι σωστό. Memory ordering καθορίζει πότε writes γίνονται ορατά σε άλλα threads, επομένως κατέγραψε το synchronization relation αντί να βασίζεσαι στο timing ενός CPU.

6. locks, deadlocks και granularity

Locks προσθέτουν ordering και liveness requirements. Χρησιμοποίησε lock hierarchy, μικρά critical sections και έλεγξε timeout/error paths ώστε security cleanup να μην παρακάμπτεται σε contention.

7. idempotency και distributed races

Distributed requests μπορεί να καθυστερήσουν, να επαναληφθούν ή να φτάσουν εκτός σειράς. Idempotency keys, versions, transactions και compare-and-swap βοηθούν να παραμένει σωστό το state σε retries και races.

8. stress tests και race detectors

Race detectors και controlled stress κάνουν timing bugs πιο επαναλήψιμα. Κράτα seed, build, workload και trace ώστε η remediation να μπορεί να γίνει regression-tested.

Καθοδηγούμενο εργαστήριο

Πλήρες αγγλικό μάθημα

English Module 117

Επόμενα μαθήματα

Σχετικά modules: 041, 065, 071, 084, 091, 095. Από το κύριο menu επίλεξε Αναζήτηση μαθημάτων για να βρεις σχετικά θέματα σε όλο το project.