Ασφάλεια
Αυτή η σελίδα λέει και τι προστατεύουμε, και τι δεν μπορούμε να προστατεύσουμε. Μια ιστορία ασφάλειας από την οποία λείπει το δεύτερο μέρος σπρώχνει τον αναγνώστη να μπερδέψει μια λίστα με μια εγγύηση.
Το σημείο εκκίνησης
Η δημοσίευση ενός πακέτου σημαίνει εκτέλεση κώδικα στον υπολογιστή κάθε μηχανικού που το εγκαθιστά. Κάθε απόφαση ασφάλειας σε αυτό το προϊόν ζυγίστηκε πρώτα απέναντι σε μια ερώτηση: κάνει αυτή η αλλαγή ευκολότερη τη δημοσίευση χωρίς δικαίωμα;
Τα πακέτα υπογράφονται (ECDSA P-256)
Το αρχείο της υπογραφής ταξιδεύει μέσα στο πακέτο. Υπογράφει ένα μανιφέστο με τα αποτυπώματα των αρχείων, το αναγνωριστικό του πακέτου και την έκδοση — όχι ένα απλό αποτύπωμα του αρχείου.
Αν υπογραφόταν μόνο το αποτύπωμα, ένα παλιό αρχείο σωστά υπογεγραμμένο θα μπορούσε να παρουσιαστεί με νέο αριθμό έκδοσης: η υπογραφή θα περνούσε τον έλεγχο, και ο χρήστης θα εγκαθιστούσε ως «ενημέρωση» ένα εργαλείο με γνωστή ευπάθεια.
Το ιδιωτικό κλειδί ΔΕΝ βρίσκεται στον διακομιστή
Ο διακομιστής μόνο ελέγχει. Η υπογραφή γίνεται στον υπολογιστή αυτού που δημοσιεύει, με χωριστό εργαλείο.
Αν το κλειδί βρισκόταν στον διακομιστή, όποιος τον έπαιρνε θα μπορούσε να αλλάξει ένα πακέτο και να το ξαναϋπογράψει — πράγμα που θα έκανε την υπογραφή άχρηστη.
Ελέγχει και ο πελάτης
Το πρόσθετο στον υπολογιστή του μηχανικού ελέγχει την υπογραφή μόνο του, και η λίστα έμπιστων κλειδιών που χρησιμοποιεί δεν έρχεται από τον διακομιστή.
Η υπογραφή υπάρχει ακριβώς επειδή ο διακομιστής δεν μπορεί να πιστευτεί στον λόγο του. Το να πάρουμε τη λίστα εμπιστοσύνης από τον ίδιο διακομιστή θα ακύρωνε αθόρυβα την αρχική υπόθεση.
Ένα μητρώο ελέγχου που δεν σβήνεται
Κάθε δημοσίευση, κάθε αλλαγή δικαιώματος και κάθε απόφαση καναλιού γράφονται μόνιμα. Δεν υπάρχει, εσκεμμένα, καμία οδός αλλαγής ή διαγραφής, και ο καθαρισμός μετά τη διάρκεια διατήρησης δεν το αγγίζει.
Το «πώς έφτασε εδώ αυτό το εργαλείο» ρωτιέται συνήθως μετά από μήνες. Εκείνη την ημέρα, μια εγγραφή που θα μπορούσε να είχε σβηστεί είναι μια εγγραφή που δεν υπήρξε ποτέ.
Κανόνας των τεσσάρων ματιών, προαιρετικός
Η προώθηση μιας έκδοσης σε ευρύτερο κανάλι μπορεί να απαιτεί την έγκριση ενός δεύτερου διαχειριστή, και όποιος ζήτησε δεν μπορεί να εγκρίνει το δικό του αίτημα. Η επαναφορά δεν ζητά ποτέ έγκριση.
Από προεπιλογή είναι κλειστός. Σε μια ομάδα τριών ατόμων, το εμπόδιο μετατρέπεται μέσα σε λίγες εβδομάδες σε ένα μήνυμα που εγκρίνεται χωρίς να διαβαστεί· ένας έλεγχος που πιστεύεται ότι προστατεύει χωρίς να προστατεύει είναι χειρότερος από την απουσία κάθε ελέγχου.
Η αποσυμπίεση ενός αρχείου είναι από μόνη της επιφάνεια επίθεσης
Τα ανεβασμένα αρχεία ελέγχονται για εξόδους από τον φάκελο (zip-slip) και για βόμβες αποσυμπίεσης, και το μέγεθος μετά την αποσυμπίεση είναι περιορισμένο.
Η αποσυμπίεση ενός αρχείου φαίνεται αθώα. Ένα ειδικά φτιαγμένο μπορεί να γράψει αρχεία έξω από τον φάκελο προορισμού ή να γεμίσει τον δίσκο του διακομιστή.
Σύνδεση χωρίς κωδικό
Οι χρήστες συνδέονται με έναν κωδικό μίας χρήσης που στέλνεται στη διεύθυνσή τους. Η συνεδρία στηρίζεται σε ένα διακριτικό μικρής διάρκειας· το διακριτικό ανανέωσης δεν είναι ποτέ ορατό στον κώδικα του περιηγητή.
Αν δεν υπάρχει αποθήκη κωδικών προς διαχείριση, δεν υπάρχει ούτε βάση κωδικών που μπορεί να διαρρεύσει. Και η επαναχρησιμοποίηση ενός ήδη ανακληθέντος διακριτικού ανανέωσης αντιμετωπίζεται ως σημάδι κλοπής: η συνεδρία τερματίζεται.
Βλέπετε τι εγκαθιστάτε
Ο φάκελος εγκατάστασης περιέχει έναν κατάλογο συστατικών αναγνώσιμο από μηχανή (SBOM CycloneDX) και σενάρια μετάπτωσης και για τις δύο βάσεις δεδομένων.
Η ομάδα πληροφορικής σας πρέπει να μπορεί να ελέγξει τι φτάνει στον διακομιστή πριν φτάσει. Όταν ανακοινώνεται μια ευπάθεια σε μια εξάρτηση, το «την έχουμε;» γίνεται μια αναζήτηση μέσα σε αρχεία.
Τι δεν μπορούμε να προστατεύσουμε
Αυτά δεν είναι ελλείψεις, είναι όρια. Προκύπτουν από τη δομή, και το να υποστηρίζαμε το αντίθετο θα ήταν αναληθές.
- Δύο διαχειριστές που ενεργούν μαζί. Ο κανόνας των τεσσάρων ματιών σταματά έναν, όχι δύο.
- Ο διαχειριστής συστήματος του διακομιστή. Για όποιον έχει πρόσβαση στη βάση δεδομένων και στο σύστημα αρχείων, κανένας έλεγχος σε επίπεδο εφαρμογής δεν είναι εμπόδιο.
- Ο σταθμός όπου βρίσκεται το κλειδί υπογραφής. Το κλειδί δεν είναι στον διακομιστή, αλλά είναι κάπου· αν πέσει εκείνο το μηχάνημα, πέφτει και η υπογραφή.
- Η επίτηδες κρυμμένη κακόβουλη συμπεριφορά. Η δική μας επιθεώρηση των πακέτων είναι ευρετική και δεν ισχυριζόμαστε ότι θα πιάσει κώδικα που προσπαθεί να κρυφτεί.
- Η διαρροή δεδομένων. Ένα εγκατεστημένο εργαλείο τρέχει με τα δικά δικαιώματα του μηχανικού και μπορεί να διαβάσει ό,τι αγγίζουν αυτά. Αυτό το περιορίζουν οι έλεγχοι του λειτουργικού συστήματος και του δικτύου, όχι αυτό το προϊόν.
- Η ασφάλεια των δικών σας αντιγράφων. Το αντίγραφο της βάσης δεδομένων είναι στα χέρια σας, και ό,τι βρίσκεται μέσα του αξίζει ακριβώς όσο το ζωντανό σύστημα.
Αναφορά ευπάθειας
Αν βρήκατε κάποια, γράψτε μας. Παίρνουμε τις αναφορές στα σοβαρά, δεν αποκλείουμε από τη διαδικασία αυτόν που αναφέρει, και σας λέμε πότε βγαίνει η διόρθωση.