Η αρχιτεκτονική της επίθεσης

Η επίθεση στο LiteLLM 1.107.0 αποτελεί ένα κλασικό παράδειγμα παραβίασης της εφοδιαστικής αλυσίδας (supply chain attack). Ο εισβολέας εισήγαγε κακόβουλο κώδικα μέσω της παραμέτρου data = "cook" στο pyproject.toml, η οποία προκάλεσε την ενσωμάτωση ενός φακέλου με κακόβουλα scripts στα wheels του πακέτου. Το κρίσιμο σημείο είναι ότι τα αρχεία αυτά τοποθετούνται στον κατάλογο site-packages και εκτελούνται από το Python runtime κατά την εκκίνηση, ανεξάρτητα από το αν ο χρήστης εισάγει (import) το LiteLLM στον κώδικά του.

Μηχανισμοί υποκλοπής και backdoor

Το κακόβουλο φορτίο (payload) χωρίζεται σε δύο σκέλη:

  1. Credential Stealer: Το αρχείο cook.py αναλαμβάνει τη συλλογή ευαίσθητων δεδομένων, συμπεριλαμβανομένων SSH κλειδιών, αρχείων ρυθμίσεων cloud (AWS, Azure, GCP) και tokens από δημοφιλή εργαλεία ανάπτυξης (Cursor, VS Code, κ.α.). Τα δεδομένα κρυπτογραφούνται και αποστέλλονται σε εξωτερικό διακομιστή.
  2. Backdoor Daemon: Το sitecustomize.py δημιουργεί μια διεργασία παρασκηνίου (background daemon) που επικοινωνεί με ένα GitHub repository για να λάβει οδηγίες, επιτρέποντας στον εισβολέα να εκτελέσει αυθαίρετο κώδικα (Remote Code Execution) στα μολυσμένα συστήματα.

Συμπεράσματα για την ασφάλεια των pipelines

Η έρευνα της SafeDep καταδεικνύει ότι η παραβίαση δεν συνέβη στο δημόσιο GitHub repository, αλλά κατά τη διαδικασία build. Αυτό υπογραμμίζει την ανάγκη για:

  • Build Provenance: Χρήση εργαλείων όπως το Sigstore για την υπογραφή των artifacts.
  • Pipeline Hardening: Αυστηρότερο έλεγχο πρόσβασης στα credentials που χρησιμοποιούνται από τα CI/CD συστήματα.
  • Dependency Auditing: Τακτικό έλεγχο των εξαρτήσεων και χρήση εργαλείων που εντοπίζουν μη αναμενόμενες αλλαγές στα αρχεία που εγκαθίστανται στο περιβάλλον εκτέλεσης.