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.
Μαθησιακοί στόχοι
Στο τέλος πρέπει να μπορείς να:
- εξηγήσεις το threads, tasks and interleavings και να εντοπίσεις trust boundary, state transition και evidence που σχετίζονται με αυτό,
- εξηγήσεις το shared mutable state και να εντοπίσεις trust boundary, state transition και evidence που σχετίζονται με αυτό,
- εξηγήσεις το check-then-act races και να εντοπίσεις trust boundary, state transition και evidence που σχετίζονται με αυτό,
- εξηγήσεις το TOCTOU across filesystem and IPC boundaries και να εντοπίσεις trust boundary, state transition και evidence που σχετίζονται με αυτό,
- εξηγήσεις το atomic operations and memory ordering και να εντοπίσεις trust boundary, state transition και evidence που σχετίζονται με αυτό,
- εξηγήσεις το locks, deadlocks and lock granularity και να εντοπίσεις trust boundary, state transition και evidence που σχετίζονται με αυτό,
Βαθιές τεχνικές έννοιες
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.
Καθοδηγούμενο εργαστήριο
Εργαστήριο 1 — Δημιούργησε συνθήκη ανταγωνισμού κατά την ενημέρωση ενός τοπικού μετρητή και κατέγραψε ασυνεπή αποτελέσματα.
Εργαστήριο 2 — Μοντελοποίησε έλεγχο και άνοιγμα προσωρινού αρχείου που σου ανήκει και επανασχεδίασέ το με ασφαλή handles ή ατομικές λειτουργίες.
Εργαστήριο 3 — Γράψε αναλλοίωτες συνθήκες για μια μηχανή καταστάσεων πληρωμών και δοκίμασε διπλά ή αναδιατεταγμένα συμβάντα χωρίς πραγματικές συναλλαγές.
Πλήρες αγγλικό μάθημα
Επόμενα μαθήματα
Σχετικά modules: 041, 065, 071, 084, 091, 095. Από το κύριο menu επίλεξε Αναζήτηση μαθημάτων για να βρεις σχετικά θέματα σε όλο το project.