Hacking
GhostAction: μαζική κλοπή κλειδιών από λογαριασμούς GitHub
Το GhostAction χρησιμοποιεί αυτοματοποιημένα injections σε workflows για να συλλέξει διαπιστευτήρια από ενεργά αρχεία και παλιά commits, με αποστολή δεδομένων σε C2 servers. Το άρθρο περιγράφει τεχνικές, επιπτώσεις και πρακτικά μέτρα αντιμετώπισης για developers και SOCs.
Μια νέα, εκτεταμένη εκστρατεία με την ονομασία GhostAction έχει θέσει σε κίνδυνο πάνω από 500 λογαριασμούς στο GitHub και έχει εγχύσει κακόβουλα workflows σε δεκάδες χιλιάδες αποθετήρια από τις αρχές Οκτωβρίου 2026. Σύμφωνα με την ανάλυση της εταιρείας ασφαλείας Socket, οι επιτιθέμενοι στοχεύουν συστηματικά τόσο τα GitHub Actions secrets όσο και κλειδιά API υπηρεσιών AI και cloud που βρίσκονται στο ενεργό περιεχόμενο και στο ιστορικό των αποθετηρίων.
Η κλίμακα της επιχείρησης και η αυτοματοποίηση που παρατηρήθηκε δείχνουν ότι δεν πρόκειται για μεμονωμένη παραβίαση, αλλά για οργανωμένη εκστρατεία με δυνατότητα γρήγορης εντοπισμού και εκμετάλλευσης εκτεθειμένων προνομίων συνεισφερόντων και maintainers. Οι επιθέσεις αποκαλύπτουν πόσο εύκολα ένα παραβιασμένο άτομο μπορεί να επεκτείνει πρόσβαση σε οργανωτικά έργα.
Πώς ξεκίνησε η εκστρατεία και ποιοι λογαριασμοί επηρεάστηκαν
Στην πρώτη φάση που ανέλυσε η Socket, μια έκρηξη δράσης στις 8 Οκτωβρίου χτύπησε τουλάχιστον 346 αποθετήρια μέσω των παραβιασμένων maintainers με τα ψευδώνυμα henrywoo και kitao. Μεταγενέστερα, τα στοιχεία της εκστρατείας επεκτάθηκαν σε περισσότερους από 500 λογαριασμούς, ενώ οι εισροές workflows εμφανίστηκαν σε χιλιάδες repos μέσα σε συμπιεσμένα χρονικά παράθυρα, ένδειξη αυτοματισμού.
Μαζί με τα παραδείγματα των uber/athenadriver και kitao/pyxel, η εκστρατεία δείχνει πως δικαιώματα συνεισφοράς μπορούν να μετατρέψουν μια παραβίαση προσωπικού λογαριασμού σε πρόσβαση σε έργα που ανήκουν σε οργανισμούς. Η Socket δεν κατέληξε στο πώς απέκτησαν οι επιτιθέμενοι τα αρχικά διαπιστευτήρια των maintainer.
Τι ήταν το «security-audit.yml» και γιατί ήταν επικίνδυνο
Οι επιτιθέμενοι εισήγαγαν ένα αρχείο workflow στο μονοπάτι .github/workflows/security-audit.yml ή σε παραλλαγές όπως github_actions_security.yml. Το commit συνοδευόταν από κανένα αθώο μήνυμα, όπως «Add security audit workflow», που παραπλάνησε maintainers και reviewers. Ωστόσο, το workflow δεν εκτελούσε σάρωση ασφαλείας· εξόρμησε για διαπιστευτήρια.
Το malicious workflow ρυθμίζεται να τρέχει σε γεγονότα push χωρίς περιορισμούς σε branches ή paths και επιτρέπει χειροκίνητη ενεργοποίηση μέσω του workflow_dispatch. Αυτό σημαίνει ότι μόλις προστεθεί στο default branch, μπορεί να εκτελεστεί αμέσως και να αξιοποιήσει υπάρχοντα δικαιώματα για να προσεγγίσει σφραγίδες (secrets) που αναφέρονται σε άλλα workflows.
Πώς ανιχνεύει το ιστορικό και γιατί αυτό αυξάνει τον κίνδυνο
Η νέα παραλλαγή του GhostAction δεν περιορίζεται στο τρέχον δέντρο εργασίας: χρησιμοποιεί το action actions/checkout@v4 με fetch-depth: 0 για να κατεβάσει ολόκληρο το ιστορικό, κλάδους και tags. Στη συνέχεια εκτελεί εντολές όπως git log -p –all και σαρώνει τόσο τα αρχεία του working tree όσο και τις αλλαγές σε commits, με buffer ιστορικού περιορισμένο στις 200.000 γραμμές.
Αυτή η προσέγγιση είναι κρίσιμη γιατί πολλές ομάδες πιστεύουν, λανθασμένα, ότι ένα secret “αφαιρέθηκε” όταν το διέγραψαν από το τρέχον περιεχόμενο. Όμως, τα μυστικά συχνά παραμένουν προσβάσιμα σε προηγούμενα commits. Η ιστορική σάρωση επιτρέπει στους επιτιθέμενους να ανακτήσουν παλαιά κλειδιά, προσωρινά tokens και άλλα διαπιστευτήρια που θεωρούνταν πια ασφαλή.
Ποια μοτίβα κλειδιών εντοπίζει το εργαλείο και τι σημαίνει το context capture
Το payload κάνει έλεγχο για τουλάχιστον 13 μοτίβα διαπιστευτηρίων: αναγνωριστικά και κλειδιά πρόσβασης AWS, session tokens, κλειδιά API υπηρεσιών AI όπως Anthropic, OpenAI και OpenRouter, tokens GitHub και GitLab, καθώς και κλειδιά για Google, Slack και SendGrid. Στόχος είναι να συλλέξει ό,τι μπορεί να αξιοποιηθεί για περαιτέρω κίνηση στον λογαριασμό ή στο cloud περιβάλλον.
Πολύ σημαντικό τεχνικό στοιχείο: όταν εντοπίζει ένα AWS access key identifier (π.χ. AKIA…), το payload αποθηκεύει δύο γραμμές πριν και μετά την ταυτοποιημένη γραμμή. Αυτό το “context capture” επιτρέπει στον επιτιθέμενο να βρει παράπλευρα secret keys ή σχόλια κοντά στον identifier, αυξάνοντας την πιθανότητα να ανασυνθέσει ένα χρήσιμο ζευγάρι access key + secret.
Πώς εξάγονται τα δεδομένα και ποιος είναι ο στόχος τους
Τα συλλεχθέντα στοιχεία και οι αναγνωριστές αποθετηρίων αποστέλλονται μέσω ενός cleartext HTTP POST σε μια διεύθυνση ελέγχου και εντολών (C2). Η Socket κατέγραψε το στόχο ως hxxp://193.32.204[.]199/?c=monami, με την IP intentionally defanged στα reports για ασφάλεια. Η χρήση HTTP και όχι HTTPS δείχνει απλούστερη, αλλά αποτελεσματική αποστολή δεδομένων, και επιτρέπει εύκολο έλεγχο της εισροής πληροφοριών στον server των επιτιθέμενων.
Στόχος του επιτιθέμενου είναι σαφώς να συλλέξει και να συγκεντρώσει credentials που θα επιτρέψουν περαιτέρω πρόσβαση σε cloud λογαριασμούς, κοντέινερ registries, πλατφόρμες AI και υπηρεσίες αποστολής μηνυμάτων. Σε αποδεδειγμένα παραδείγματα, το workflow του Pyxel στόχευσε συγκεκριμένα tokens όπως CARGO_REGISTRY_TOKEN, PERSONAL_ACCESS_TOKEN, PYPI_PASSWORD και PYPI_USERNAME, ανοίγοντας τον δρόμο σε κακόβουλες δημοσιεύσεις σε crates.io και PyPI εάν οι επιτιθέμενοι επέλεγαν να κάνουν push.
Τι παρατήρησαν οι ερευνητές και τι δεν έχει συμβεί ακόμα
Η Socket επιβεβαίωσε επιτυχείς εκτελέσεις των workflows σε επηρεασμένα αποθετήρια και κατέγραψε τις στοχεύσεις σε credentials δημοσίως. Παρόλα αυτά, μέχρι την ώρα της αναφοράς, δεν είχαν παρατηρηθεί σαφώς κακόβουλες δημοσιεύσεις σε PyPI ή crates.io που να αποδίδονται άμεσα σε αυτή τη δραστηριότητα, ενδεικτικό ότι οι επιτιθέμενοι ίσως συλλέγουν πρώτα διαπιστευτήρια για μετέπειτα -και μεγαλύτερης αξίας- εκμετάλλευση.
Η ομοιογένεια στα payloads και τα σύντομα χρονικά παράθυρα ανάπτυξης υποδεικνύουν αυτοματοποιημένο scanner-injector, πιθανώς με λίστα αρχικών λογαριασμών παραβίασης που αναζητούν projects με πρόσβαση σε πολύτιμα secrets.
Οδηγίες αντιμετώπισης για ομάδες και maintainers
Οι άμεσα αναγκαίες ενέργειες για να αμβλυνθεί ο κίνδυνος είναι: αφαίρεση των εισαχθέντων workflows από τα επηρεασμένα αποθετήρια, επανεξέταση των logs εκτέλεσης Actions για σημάδια εκτέλεσης του κακόβουλου κώδικα και άμεση ανάκληση πρόσβασης για παραβιασμένους χρήστες. Η περιστροφή (rotation) οποιωνδήποτε εκτεθειμένων credentials είναι υποχρεωτική, τόσο για Actions secrets όσο και για credentials που μπορεί να έχουν δεσμευτεί σε commits.
Επιπλέον βήματα περιλαμβάνουν τον έλεγχο των releases σε registry υπηρεσίες για ύποπτες εκδόσεις, την ανάλυση του AWS CloudTrail για μη αναγνωρισμένη δραστηριότητα, το μπλοκάρισμα της διεύθυνσης εξαγωγής δεδομένων στο firewall και την ενεργοποίηση secret scanning με push protection ώστε να αποτρέπονται commit που περιέχουν μυστικά κατά το push.
Περιλαμβάνονται επίσης πρακτικές: επιβολή MFA σε όλους τους maintainers, χρήση fine-grained tokens με ελάχιστα δικαιώματα, περιορισμός της ικανότητας να τρέχουν workflows από forks χωρίς έλεγχο, και έλεγχος όλων των forks πριν επιτραπεί η ενεργοποίηση Actions. Σε περιπτώσεις ιστορικών εκθέσεων, η καθαίρεση από το git history απαιτεί εργαλεία όπως git filter-repo ή BFG και, σε κάθε περίπτωση, ακολουθεί περιστροφή των κλειδιών αφού το ιστορικό purge ολοκληρωθεί και επαναδημοσιευθεί.
Τι σημαίνει αυτό στην πράξη για χρήστες και οργανισμούς
Για ομάδες ανάπτυξης και SOCs, το μήνυμα είναι σαφές: η ασφάλεια δεν σταματά στο να μη συμπεριλάβεις μυστικά στο τρέχον tree. Οι επιθέσεις όπως το GhostAction εκμεταλλεύονται την ανεπαρκή διαχείριση προνομίων και τη μη επαρκή προστασία του ιστορικού. Κάθε repository, ακόμα και forks και παλιά projects, μπορεί να αποτελέσει κανάλι διαρροής που οδηγεί σε πιο επικίνδυνες ενέργειες—από κλοπή χρημάτων μέχρι υποκλοπή μοντέλων AI και sabotage υπηρεσιών.
Οι οργανισμοί πρέπει να αντιμετωπίσουν τα workflows σαν κρίσιμο χώρο επίθεσης: να περιορίσουν ποιος μπορεί να τα ενημερώνει, να επιβάλουν δοκιμές και reviews πριν να συγχωνεύονται changes σε default branches και να θεωρήσουν την ενεργοποίηση Actions ως εφαρμογή που χρειάζεται το ίδιο scrutiny με κάθε άλλη παραγωγική υπηρεσία.