Hacking
Hermes‑px: το κακόβουλο PyPI πακέτο που υπέκλεψε prompts
Hermes‑px: το κακόβουλο PyPI πακέτο που υπέκλεψε prompts Μια σύντομη περίληψη της επίθεσης Ένα νέο, κακόβουλο πακέτο στο
Μια σύντομη περίληψη της επίθεσης
Ένα νέο, κακόβουλο πακέτο στο PyPI με όνομα hermes-px παρουσιάστηκε ως “Secure AI Inference Proxy” και διαφημιζόταν ως συμβατό με το OpenAI API, χωρίς να απαιτείται API key. Στην πραγματικότητα, το package δεν ήταν απλώς ένας proxy: υπέκλεπτε τα prompts των χρηστών, έγχυνε ένα μεγάλο, κλεμμένο system prompt από το περιβάλλον του Anthropic Claude, και εξήγαγε όλο το περιεχόμενο σε μια βάση δεδομένων που ελεγχόταν από τον επιτιθέμενο.
Η έρευνα έγινε από την ομάδα ασφαλείας της JFrog, η οποία αποκάλυψε ότι το πακέτο συνδύαζε αρκετές τεχνικές εξαπάτησης: ψεύτικη τεκμηρίωση για να κερδίσει εμπιστοσύνη, API που μιμείται το επίσημο OpenAI Python SDK για εύκολη αντικατάσταση του client, αποστολή κλήσεων μέσω Tor και —το πιο επικίνδυνο— αποστολή όλων των συνομιλιών σε έναν απομακρυσμένο Supabase endpoint με σκληροκωδικοποιημένο κλειδί.
Πώς λειτουργούσε το κακόβουλο πακέτο
Το hermes-px παρουσίαζε ένα API που καθρέφτιζε τη διεπαφή του OpenAI SDK, ώστε οι προγραμματιστές να μπορούν να αλλάξουν την αναφορά του client και να τρέξουν κλήσεις όπως client.chat.completions.create() χωρίς επιπλέον αλλαγές στον κώδικα. Αυτό είναι το πρώτο τέχνασμα: μειώνει την τριβή για να ενσωματωθεί το package σε υπάρχουσες εφαρμογές.
Στο παρασκήνιο, ο client κατασκευάζει μια requests.Session με ψευδείς browser headers και υποχρεώνει την κυκλοφορία inference να περάσει από έναν τοπικό Tor SOCKS5 proxy, σε μια προσπάθεια να συγκαλύψει την κατάχρηση μιας upstream υπηρεσίας. Ωστόσο, η κύρια επίθεση ήταν ότι το πακέτο κατευθύνει την inference κίνηση προς ένα ιδιωτικό API endpoint που ανήκει σε ένα πανεπιστήμιο στην Τυνησία — μια υπηρεσία campus AI που, όπως φαίνεται, δεν προοριζόταν για δημόσια χρήση.
Υποκλοπή και έγχυση του Claude prompt
Το πακέτο περιλάμβανε ένα αρχείο με όνομα base_prompt.pz που, όταν αποσυμπιέζεται, δημιουργεί ένα σύστημα οδηγίας (system prompt) μεγέθους 246.000 χαρακτήρων. Η δομή και τα σημάδια μέσα σε αυτό το prompt ταιριάζουν έντονα με το γνωστό system prompt του Claude από την Anthropic. Ο επιτιθέμενος απλώς έκανε μαζική εύρεση/αντικατάσταση για να το αναπλασάρει—μετονομάζοντας “Claude” σε “AXIOM-1” και “Anthropic” σε “EGen Labs”—αφήνοντας όμως σαφή υπολείμματα αναφορών σε “Claude” και συγκεκριμένα εσωτερικά tags και μοτίβα που αποκαλύπτουν την προέλευση.
Κάθε αίτημα που προωθείται στον πανεπιστημιακό backend συνδυάζει αυτό το τεράστιο system prompt και τις οδηγίες για τον “πανεπιστημιακό σύμβουλο” μαζί με τα μηνύματα του χρήστη. Με αυτόν τον τρόπο, ο επιτιθέμενος εξασφαλίζει ότι ο hijacked backend επεξεργάζεται το αίτημα μέσα σε ένα τεχνητά κατασκευασμένο, ιδιοκτησιακό πλαίσιο — και ταυτόχρονα καταγράφει κάθε συνομιλία.
Τεχνικές απόκρυψης και παράκαμψης ανάλυσης
Για να δυσκολέψει τον εντοπισμό, ο κώδικας περιείχε ένα τρίπτυχο τεχνικών απόκρυψης: πρώτα ένα XOR με μια κυλιόμενη κλειδαριά 210 byte, μετά zlib συμπίεση και τέλος base64 κωδικοποίηση. Αυτό εφαρμόζεται σε όλες τις ευαίσθητες συμβολοσειρές — URL του στόχου, ψευδείς headers, το σύστημα prompts, καθώς και τα διαπιστευτήρια του Supabase. Τα μυστικά δεν εμφανίζονται σε απλό κείμενο στο δίσκο αλλά αποκωδικοποιούνται μόνο στη μνήμη κατά τη διάρκεια της εκτέλεσης, καθιστώντας τις απλές σάρωσεις για strings αναποτελεσματικές.
Επιπλέον, για να κρατήσει τους χρήστες στο σκοτάδι ως προς την προέλευση των απαντήσεων, το πακέτο “πλύνει” τις απαντήσεις του backend: αντικαθιστά όρους όπως “OpenAI” με “EGen Labs”, “ChatGPT” με “AXIOM-1” και ανακατευθύνει links προς μια ψεύτικη domain. Ένα μήνυμα σφάλματος “quota exceeded” μετατρέπεται σε “model is currently offline” που παραπέμπει σε παραπλανητική τεκμηρίωση — όλα για να διατηρηθεί η ψευδαίσθηση μιας ιδιόκτητης υπηρεσίας.
Κεντρική απειλή: εξαγωγή δεδομένων σε Supabase
Η πραγματική ζημιά γίνεται από την τηλεμετρία. Μετά από κάθε inference, το package στέλνει το αρχικό prompt, την πλήρη απάντηση και μεταδεδομένα σε ένα Supabase REST endpoint, χρησιμοποιώντας ένα σκληροκωδικοποιημένο API key. Αυτό το POST γίνεται σκόπιμα εκτός της Tor συνεδρίας, αποκαλύπτοντας την πραγματική διεύθυνση IP του θύματος και προσθέτοντας σημαντικά μεταδεδομένα στο πακέτο πληροφοριών που αποκτά ο επιτιθέμενος. Το αποτέλεσμα: ο attacker λαμβάνει ένα πλήρες αρχείο συνομιλιών και πιθανώς ευαίσθητων πληροφοριών όπως κώδικες, credentials ή εσωτερικά αρχεία που οι χρήστες μπορεί να είχαν στείλει για ανάλυση.
Πώς κέρδισε εμπιστοσύνη το πακέτο
Σε αντίθεση με τα περισσότερα πρόχειρα κακόβουλα πακέτα, το hermes-px συνοδεύεται από προσεγμένη τεκμηρίωση: οδηγό εγκατάστασης, migration guide από το OpenAI SDK, παραδείγματα RAG pipeline, και σημειώσεις για error handling. Το README περιείχε επίσης ένα “Interactive Learning CLI” που ζητούσε από τον χρήστη να τραβήξει και να εκτελέσει απομακρυσμένο Python script μέσω urllib.request και exec() — ένα κλασικό κόκκινο σηματάκι για runtime code injection. Αυτές οι επιμελημένες λεπτομέρειες ήταν σχεδιασμένες να κατευνάσουν την προσοχή και να πείσουν τους developers να εμπιστευτούν και να εγκαταστήσουν το πακέτο.
Τι μπορούν να κάνουν οι επηρεαζόμενοι τώρα
Η άμεση και σαφής ενέργεια για όποιον εγκατέστησε το hermes-px είναι η άμεση απεγκατάσταση και ο έλεγχος των συνομιλιών που τρέξανε μέσω του πακέτου. Επιπλέον, απαιτούνται άμεσες ενέργειες ασφάλειας: αλλαγή και επαναέκδοση οποιωνδήποτε credentials ή κλειδιών που εμφανίστηκαν σε prompts, μπλοκάρισμα του domain εξαγωγής (Supabase endpoint), και έλεγχος για εγκατάσταση Tor αν έγινε ειδικά για αυτό το πακέτο.
Πιο συγκεκριμένα, προτείνω τα εξής βήματα:
- Απεγκαταστήστε hermes-px από τα περιβάλλοντα ανάπτυξης και παραγωγής άμεσα.
- Αλλάξτε όλα τα secrets, API keys και credentials που περιλαμβάνονταν σε prompts ή καλούνταν από εφαρμογές που χρησιμοποιούσαν το πακέτο.
- Αναζητήστε και απομονώστε αποστολές σε άγνωστα Supabase domains και μπλοκάρετέ τα στο επίπεδο firewall/DNS.
- Ελέγξτε logs για πρόσβαση στο ιδιωτικό πανεπιστημιακό API και επικοινωνίες μέσω Tor που συνδέονται με suspicious clients.
- Τρέξτε scans με εργαλεία δυναμικής ανάλυσης και sandboxing για να εντοπίσετε runtime αποκωδικοποιήσεις μυστικών στη μνήμη.
Ευρωπαϊκό και ελληνικό πλαίσιο — νομικές και κανονιστικές προεκτάσεις
Η χρήση ενός ιδιωτικού πανεπιστημιακού AI backend χωρίς άδεια και η εξαγωγή προσωπικών δεδομένων εγείρουν σοβαρά ζητήματα συμμόρφωσης με τον GDPR και την ευρωπαϊκή νομοθεσία για την προστασία δεδομένων. Το πανεπιστήμιο μπορεί να αντιμετωπίσει νομικές συνέπειες αν αποδειχθεί ότι το backend του χρησιμοποιήθηκε κακόβουλα ή ότι υπήρξε ανεπαρκής προστασία των δεδομένων των χρηστών.
Για εταιρείες και προγραμματιστές στην Ελλάδα και την Ευρώπη, αυτό το περιστατικό αναδεικνύει την ανάγκη για αυστηρότερες διαδικασίες ελέγχου ανοικτού λογισμικού: επαλήθευση maintainers στο PyPI, χρήση signing και 2FA για publishing, πολιτικές ανάγνωσης εξαρτήσεων και scanning των third-party packages πριν την παραγωγή. Οι οργανισμοί πρέπει να ενσωματώσουν πολιτικές “zero trust” και αρχές least privilege όταν επιτρέπουν πρόσβαση σε AI υπηρεσίες.
Γιατί έχει σημασία
Το περιστατικό με το hermes-px δεν είναι απλώς ένα ακόμα κακόβουλο package· είναι παράδειγμα του πώς οι supply chain επιθέσεις στο open-source οικοσύστημα μπορούν να αξιοποιήσουν την ευκολία ενσωμάτωσης σύγχρονων AI clients για να αποσπάσουν ευαίσθητα δεδομένα. Η χρήση γνωστών API διεπαφών ως δέλεαρ μειώνει το κόστος και το χρόνο για τον επιτιθέμενο και αυξάνει τον αριθμό των δυνητικά μολυσμένων θυμάτων.
Αυτά τα γεγονότα δείχνουν επίσης πόσο εύθραυστο είναι το οικοσύστημα του AI development: προγραμματιστές και μηχανικοί εμπιστεύονται βιβλιοθήκες για να επιταχύνουν εργασίες, αλλά η εμπιστοσύνη αυτή μπορεί να αξιοποιηθεί. Η τεχνολογία Tor, η μίμηση SDK και οι αποσυμπιεσμένες, κλεμμένες οδηγίες μοντέλων δημιουργούν ένα επικίνδυνο cocktail όπου εμπιστοσύνη, ασφάλεια και πνευματική ιδιοκτησία συγκρούονται.
Συμπεράσματα και μακροπρόθεσμες προτάσεις
Το περιστατικό με το hermes-px λειτουργεί ως προειδοποίηση: οι οργανισμοί και οι ανεξάρτητοι προγραμματιστές πρέπει να αυξήσουν την επιμέλεια στις εξωτερικές εξαρτήσεις. Η άμεση απόκριση περιλαμβάνει την απεγκατάσταση και την επαναφορά κλειδιών, αλλά η προληπτική ασφάλεια απαιτεί πολιτικές ασφαλούς προμηθείας λογισμικού, χρήση εργαλείων SCA (Software Composition Analysis), υπογραφή πακέτων και, όπου είναι δυνατόν, περιορισμό της μεταφοράς ευαίσθητων δεδομένων σε μη αξιόπιστα τρίτα μέρη.
Σε τεχνικό επίπεδο, η κοινότητα πρέπει να εστιάσει στην εκπαίδευση των developers σχετικά με σημάδια κινδύνου: ψεύτικα οργανισμούς GitHub, αίτηση για exec() απομακρυσμένου κώδικα, σκληροκωδικοποιημένα API keys, και API interfaces που μιμούνται επίσημα SDKs. Συνδυάζοντας τεχνικές λύσεις με πολιτικές και νομοθετικές ρυθμίσεις, μπορούμε να περιορίσουμε το εύρος τέτοιων επιθέσεων στο μέλλον.