Έχουν αποκαλυφθεί ευπάθειες στους χειριστές ενεργειών GitHub, οι οποίοι ενεργοποιούνται αυτόματα κατά την υποβολή αιτημάτων έλξης στο αποθετήριο πακέτων Nixpkgs, που χρησιμοποιείται στην διανομή NixOS και στο οικοσύστημα διαχειριστή πακέτων Nix. Η ευπάθεια επέτρεπε σε έναν μη εξουσιοδοτημένο χρήστη να εξαγάγει ένα διακριτικό που παρείχε πρόσβαση ανάγνωσης και εγγραφής στον πηγαίο κώδικα όλων των πακέτων που φιλοξενούνται στο Nixpkgs. Αυτό το διακριτικό επέτρεπε την άμεση τροποποίηση οποιουδήποτε πακέτου μέσω του αποθετηρίου Git του έργου, παρακάμπτοντας τις διαδικασίες αναθεώρησης και έγκρισης.
Η δυνατότητα παραβίασης του Nixpkgs και η εισαγωγή προσαρμοσμένου κώδικα σε οποιοδήποτε πακέτο επιδείχθηκε από ερευνητές ασφαλείας τον περασμένο Οκτώβριο στο συνέδριο NixCon και ενσωματώθηκε αμέσως στην υποδομή του έργου. Ωστόσο, οι λεπτομέρειες της επίθεσης αποκαλύφθηκαν μόνο ένα χρόνο αργότερα. Το ζήτημα σχετιζόταν με τη χρήση των χειριστών GitHub Actions στο αποθετήριο Nixpkgs GitHub, οι οποίοι είναι συνδεδεμένοι με το συμβάν "pull_request_target" και εκτελούν αυτοματοποιημένους ελέγχους σε νέα αιτήματα έλξης.
Σε αντίθεση με το συμβάν "pull_request", οι χειριστές στο "pull_request_target" έχουν πρόσβαση ανάγνωσης/εγγραφής στο περιβάλλον δημιουργίας, κάτι που απαιτεί ιδιαίτερη προσοχή κατά την εργασία με δεδομένα που διαβιβάζονται σε ένα αίτημα έλξης. Ένας από τους χειριστές που είναι συνδεδεμένος στο "pull_request_target" επικύρωσε το αρχείο "OWNERS" που παρέχεται στο αίτημα έλξης δημιουργώντας και καλώντας το βοηθητικό πρόγραμμα codeowners-validator: steps: — uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf with: ref: refs/pull/$/merge path: pr — run: nix-build base/ci -A codeownersValidator — run: result/bin/codeowners-validator env: OWNERS_FILE: pr/ci/OWNERS
Το πρόβλημα ήταν ότι εάν το αρχείο OWNERS είχε μορφοποιηθεί λανθασμένα, το βοηθητικό πρόγραμμα codeowners-validator θα εξήγαγε τα περιεχόμενα της λανθασμένης συμβολοσειράς στο τυπικό, δημόσια προσβάσιμο αρχείο καταγραφής. Η επίθεση συνίστατο στην τοποθέτηση ενός συμβολικού συνδέσμου με το όνομα OWNERS στο αίτημα έλξης, που να δείχνει στο αρχείο ".credentials", το οποίο αποθηκεύει διαπιστευτήρια στο περιβάλλον δημιουργίας. Κατά συνέπεια, η επεξεργασία αυτού του αρχείου οδήγησε σε σφάλμα και η πρώτη γραμμή, που περιείχε το διακριτικό πρόσβασης στο αποθετήριο, εξήχθη στο δημόσιο αρχείο καταγραφής.

Επιπλέον, εντοπίστηκε μια άλλη ευπάθεια στον χειριστή που ελέγχει τους κανόνες editorconfig. βήματα: — όνομα: Λήψη λίστας με τα αλλαγμένα αρχεία από την εκτέλεση PR: gh api […] | jq [ … ] > «$HOME/changed_files» — χρήσεις: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 με: ref: refs/pull/$/merge — όνομα: Έλεγχος εκτέλεσης EditorConfig: cat «$HOME/changed_files» | xargs -r editorconfig-checker
Σε αυτήν την περίπτωση, το πρόβλημα ήταν η χρήση του βοηθητικού προγράμματος "xargs" για την εκτέλεση του editorconfig-checker με κάθε αρχείο στο αίτημα έλξης. Δεδομένου ότι τα ονόματα αρχείων δεν επικυρώθηκαν, ένας εισβολέας θα μπορούσε να συμπεριλάβει ένα αρχείο που περιέχει ειδικούς χαρακτήρες στο αίτημα έλξης, το οποίο θα υποβαλλόταν σε επεξεργασία ως ορίσματα γραμμής εντολών κατά την εκτέλεση του editorconfig-checker. Για παράδειγμα, κατά τη δημιουργία ενός αρχείου "--help", το editorconfig-checker θα εμφάνιζε μια υπόδειξη σχετικά με τις διαθέσιμες επιλογές.
Πηγή: opennet.ru
