Το επίσημο SDK της Telnyx Python στο PyPI παραβιάστηκε σήμερα το πρωί ως μέρος μιας κλιμακούμενης καμπάνιας εφοδιαστικής αλυσίδας εβδομάδων που ενορχηστρώθηκε από την ομάδα απειλών TeamPCP.
Κακόβουλες εκδόσεις 4.87.1 και 4.87.2 του telnyx Το πακέτο μεταφορτώθηκε στο PyPI στις 03:51 UTC στις 27 Μαρτίου 2026, με το ωφέλιμο φορτίο να εκτελείται σιωπηλά κατά την εισαγωγή τόσο σε συστήματα Windows όσο και σε συστήματα Linux/macOS.
Οι οργανισμοί που χρησιμοποιούν αυτές τις εκδόσεις θα πρέπει να αντιμετωπίζουν τα επηρεαζόμενα περιβάλλοντα ως πλήρως παραβιασμένα και να εναλλάσσουν αμέσως όλα τα εκτεθειμένα διαπιστευτήρια.
TeamPCP Supply Chain Attack
Ο συμβιβασμός Telnyx δεν είναι ένα μεμονωμένο γεγονός, είναι ο πιο πρόσφατος κρίκος σε μια καμπάνια αλυσίδας εφοδιασμού με διαπιστευτήρια που εκτελεί η TeamPCP από τις 19 Μαρτίου 2026.
Το μοτίβο λειτουργίας του ομίλου είναι ακριβές και επαναλαμβανόμενο: διακυβεύστε μια αξιόπιστη ασφάλεια ή εργαλείο προγραμματιστή, κλέψτε τα διαπιστευτήρια CI/CD που εκθέτει, χρησιμοποιήστε αυτά τα διαπιστευτήρια για να δηλητηριάσετε τον επόμενο στόχο στην αλυσίδα, συλλέξτε ό,τι μυστικά κρύβει το νέο περιβάλλον και επαναλάβετε.
Το χρονοδιάγραμμα της καμπάνιας έχει ως εξής:
- 19 Μαρτίου: Ο σαρωτής ευπάθειας ανοιχτού κώδικα της Aqua Security, Trivy, είχε οπισθοδρόμηση, εκχωρήθηκε CVE-2026-33634 (CVSS 9.4). Το TeamPCP ώθησε εξαναγκαστικά κακόβουλα δυαδικά αρχεία σε 75 από τις 77 ετικέτες trivy-action και 7 setup-trivy tags, συγκεντρώνοντας μυστικά CI/CD, συμπεριλαμβανομένων των διακριτικών npm, των διαπιστευτηρίων Docker Hub και των κουπονιών δημοσίευσης PyPI από κάθε αγωγό που εκτελεί το Trivy χωρίς καρφίτσωμα έκδοσης. Μέχρι το τέλος της ημέρας, 44 αποθετήρια Aqua Security GitHub μετονομάστηκαν με το πρόθεμα
tpcp-docs-. - 20 Μαρτίου: Χρησιμοποιώντας κλεμμένα διακριτικά npm από θύματα Trivy, το TeamPCP ανέπτυξε την κερκόπορτα CanisterWorm σε πακέτα 46+ npm. Ο ιός τύπου worm αυτοματοποιούσε το token-to-compromise: δεδομένου ενός κλεμμένου διακριτικού npm, απαρίθμησε όλα τα πακέτα με δυνατότητα δημοσίευσης, τις εκδόσεις bump και δημοσίευσε κακόβουλες εκδόσεις σε ολόκληρα πεδία σε λιγότερο από 60 δευτερόλεπτα.
- 22 Μαρτίου: Οι ερευνητές παρατήρησαν το TeamPCP να αναπτύσσει στεγανογραφία WAV για να παρέχει ωφέλιμα φορτία σε μια παραλλαγή υαλοκαθαριστήρα Kubernetes. Ένα ωφέλιμο φορτίο κακόβουλου λογισμικού ήταν ενσωματωμένο μέσα
.wavαρχεία ήχου — που συγκαλύπτουν δυαδικά δεδομένα ως έγκυρα πλαίσια ήχου — σηματοδοτούν το ντεμπούτο μιας τεχνικής που θα επανεμφανιζόταν πέντε ημέρες αργότερα στον συμβιβασμό Telnyx. - 23 Μαρτίου: του Checkmarx
kics-github-actionκαιast-github-actionΟι ενέργειες GitHub παραβιάστηκαν, μαζί με δύο επεκτάσεις OpenVSX (cx-dev-assist 1.7.0καιast-results 2.53.0). Ο εισβολέας κατέλαβε 35 ετικέτες μεταξύ 12:58 και 16:50 UTC χρησιμοποιώντας έναν νέο τομέα C2,checkmarx[.]zoneυποδυόμενος την επωνυμία του Checkmarx. Ο κακόβουλος κώδικας αφαιρέθηκε περίπου τρεις ώρες αργότερα. - 24 Μαρτίου: Οι εκδόσεις 1.82.7 και 1.82.8 του LiteLLM δημοσιεύτηκαν στο PyPI χρησιμοποιώντας διαπιστευτήρια που είχαν κλαπεί από τον αγωγό CI/CD του LiteLLM, ο οποίος εκτελούσε το Trivy χωρίς καρφιτσωμένο. Το LiteLLM εξυπηρετεί περίπου 95 εκατομμύρια λήψεις ανά μήνα και αναπτύσσεται ευρέως ως μια κεντρική πύλη LLM με πρόσβαση σε διαπιστευτήρια για OpenAI, Anthropic, AWS Bedrock, GCP Vertex AI και άλλα. Η PyPI έθεσε τα πακέτα σε καραντίνα εντός περίπου τριών ωρών. Το C2 ήταν
models[.]litellm[.]cloud. - 27 Μαρτίου (σήμερα): Το Telnyx — με 742.000 λήψεις τον περασμένο μήνα — γίνεται το τελευταίο θύμα.
The Telnyx Payload: Import-Time Execution
Σύμφωνα με την Akidio συμβουλευτικήη κακόβουλη ένεση στη συσκευασία Telnyx βρίσκεται μέσα telnyx/_client.py και εκτελείται κατά την εισαγωγή. Δεν υπάρχει άγκιστρο εγκατάστασης για απενεργοποίηση, όχι postinstall το σενάριο για τον αποκλεισμό του κακόβουλου λογισμικού εκτελείται τη στιγμή που καλεί ένας προγραμματιστής ή μια εφαρμογή import telnyx. Η επίθεση διαχωρίζεται σε δύο διαδρομές εκτέλεσης ανάλογα με το λειτουργικό σύστημα του κεντρικού υπολογιστή.
Στα Windows, γίνεται λήψη του ωφέλιμου φορτίου hangup.wav από το C2 του επιτιθέμενου στο 83[.]142[.]209[.]203:8080. Τα δεδομένα πλαισίου του αρχείου ήχου περιέχουν ένα εκτελέσιμο αρχείο με κωδικοποίηση base64, συσκοτισμένο με XOR.
Μετά την αποκωδικοποίηση, το dropper γράφει το εκτελέσιμο στο %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\msbuild.exeδιασφαλίζοντας ότι εκτελείται αθόρυβα σε κάθε σύνδεση συστήματος. Ένα κρυφό .lock Το αρχείο επιβάλλει ένα 12ωρο επαναφοράς ψύξης για να μειώσει την επιφάνεια ανίχνευσης.
Σε Linux και macOS, ένα πλήρες σενάριο Python δεύτερου σταδίου είναι κωδικοποιημένο ως βασικό 64 blob στο _client.py στη γραμμή 459. Αυτό το σενάριο ανακτά ringtone.wav από το ίδιο C2, αποκωδικοποιεί ένα σενάριο συλλογής τρίτου σταδίου από τα πλαίσια WAV χρησιμοποιώντας την ίδια τεχνική XOR και το εκτελεί μέσω sys.executable διοχετεύτηκε στο stdin.
Η συλλεγόμενη έξοδος είναι κρυπτογραφημένη με AES-256-CBC. το κλειδί συνεδρίας είναι τυλιγμένο με ένα δημόσιο κλειδί RSA-4096 που κρατά ο εισβολέας (OAEP), διασφαλίζοντας ότι μόνο ο εισβολέας μπορεί να αποκρυπτογραφήσει τα δεδομένα που έχουν εξαχθεί. Το πακέτο exfil μεταδίδεται μέσω HTTP POST με την κεφαλίδα X-Filename: tpcp.tar.gz.
Η τεχνική WAV Steganography
Ο μηχανισμός παράδοσης ωφέλιμου φορτίου αξίζει ιδιαίτερης προσοχής. Αντί να φέρουμε ένα ακατέργαστο δυαδικό ή ένα σενάριο Python — που και τα δύο προκαλούν συναγερμούς φιλτραρίσματος περιεχομένου και επιθεώρησης URL — το TeamPCP παραδίδει τα ωφέλιμα φορτία του μεταμφιεσμένα ως .wav αρχεία ήχου. Τα αρχεία είναι δομικά έγκυρος ήχος και περνούν ελέγχους τύπου MIME. Το κακόβουλο περιεχόμενο κρύβεται στα δεδομένα του πλαισίου ήχου χρησιμοποιώντας την ακόλουθη λογική αποκωδικοποίησης:
with wave.open(wf, 'rb') as w:
b = base64.b64decode(w.readframes(w.getnframes()))
s, m = b[:8], b[8:]
payload = bytes([m[i] ^ s[i % len(s)] for i in range(len(m))])
Τα πρώτα 8 byte των αποκωδικοποιημένων δεδομένων πλαισίου χρησιμεύουν ως κλειδί XOR. το υπόλοιπο είναι το ωφέλιμο φορτίο. Τα φίλτρα ασφαλείας που βασίζονται σε περιεχόμενο που επιθεωρούν το αρχείο ως ήχο δεν θα βρουν τίποτα ανώμαλο.
Αυτή η τεχνική παρατηρήθηκε για πρώτη φορά στον υαλοκαθαριστήρα Kubernetes του TeamPCP στις 22 Μαρτίου. Η επαναχρησιμοποίησή της στο πακέτο Telnyx μόλις πέντε ημέρες αργότερα — μεταφέροντας τόσο το σταγονόμετρο των Windows όσο και το Linux infostealer επιβεβαιώνει ότι το TeamPCP το έχει τυποποιήσει ως μέρος της εργαλειοθήκης του.
Δείκτες συμβιβασμού
| Κατηγορία | Δείκτης |
|---|---|
| Κακόβουλο πακέτο | telnyx==4.87.1 (SHA256: 7321caa303fe96ded0492c747d2f353c4f7d17185656fe292ab0a59e2bd0b8d9) |
| Κακόβουλο πακέτο | telnyx==4.87.2 (SHA256: cd08115806662469bbedec4b03f8427b97c8a4b3bc1442dc18b72b4e19395fe3) |
| Διακομιστής C2 | 83[.]142[.]209[.]203:8080 |
| URL ωφέλιμου φορτίου των Windows | hxxp://83[.]142[.]209[.]203:8080/hangup.wav |
| URL ωφέλιμου φορτίου Linux/macOS | hxxp://83[.]142[.]209[.]203:8080/ringtone.wav |
| Exfil τελικό σημείο | hxxp://83[.]142[.]209[.]203:8080/ (ΘΕΣΗ) |
| Κεφαλίδα Exfil | X-Filename: tpcp.tar.gz |
| Διαδρομή επιμονής των Windows | %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\msbuild.exe |
| Αρχείο κλειδώματος των Windows | %APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\msbuild.exe.lock |
Βήματα μετριασμού
Οργανισμοί που εγκατέστησαν telnyx==4.87.1 ή telnyx==4.87.2 θα πρέπει να προβεί χωρίς καθυστέρηση στις ακόλουθες ενέργειες:
- Καταργήστε τις κακόβουλες εκδόσεις — Υποβάθμιση σε
telnyx==4.87.0και καρφιτσώστε την έκδοση ρητά σε όλα τα αρχεία εξάρτησης. - Αντιμετωπίστε το περιβάλλον ως διακυβευμένο — Περιστρέψτε όλα τα κλειδιά API, τα διαπιστευτήρια βάσης δεδομένων, τα κλειδιά SSH, τα διακριτικά παρόχου cloud και οποιαδήποτε άλλα μυστικά είναι προσβάσιμα από το επηρεαζόμενο μηχάνημα ή τη διοχέτευση CI/CD.
- Ειδικά για Windows — Ελέγξτε για
msbuild.exeσε%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup\και διαγράψτε το μαζί με οποιοδήποτε συνοδευτικό.lockαρχείο. - Παρακολούθηση δικτύου — Αποκλεισμός και παρακολούθηση όλης της εξερχόμενης κίνησης HTTP προς
83[.]142[.]209[.]203:8080. - Έλεγχος αγωγών CI/CD — Εξετάστε εάν τυχόν αγωγοί κατασκευής που εκτελούσαν τις επηρεαζόμενες εκδόσεις Telnyx είχαν επίσης πρόσβαση σε διαπιστευτήρια για άλλα πακέτα ή πλατφόρμες, καθώς η τεκμηριωμένη συμπεριφορά του TeamPCP είναι να χρησιμοποιεί κάθε συμβιβασμό για να ενεργοποιήσει τον επόμενο.
Δεδομένης της εκτίμησης του FBI μετά τον συμβιβασμό του LiteLLM ότι «ένα κύμα αποκαλύψεων παραβίασης, επακόλουθες εισβολές και απόπειρες εκβιασμού» αναμένεται τις επόμενες εβδομάδες, οι οργανισμοί που ενσωματώνουν πακέτα τηλεπικοινωνιών ή τεχνητής νοημοσύνης που βασίζονται στην Python θα πρέπει επειγόντως να ελέγξουν τα δέντρα εξάρτησής τους και να επιβάλουν καρφίτσωμα εκδόσεων σε όλα τα περιβάλλοντα.
