Στα δύο τελευταία μέρη αυτής της σειράς κάλυψα το πώς το Πρωτόκολλο Πλαισίου Μοντέλου αντιστοιχεί σε ένα API μεταφορών και μετά το κατέστρεψε τους διακομιστές εμπορευμάτων MCP που παραδόθηκαν το 2026. Και τα δύο κατέληξαν στην ίδια ανοιχτή ερώτηση, οπότε αυτό το μέρος την απαντά άμεσα: μόλις ένας πράκτορας μπορεί να κάνει κρατήσεις πραγματικών φορτίων, πώς τον σταματάτε να κάνει κράτηση του λάθους πράγματος για το λάθος άτομο; Η ασφάλεια είναι το σημείο όπου ένας διακομιστής MCP φορτίων παύει να μοιάζει με παιχνίδι προγραμματιστή και αρχίζει να μοιάζει με σύστημα που διακινεί χρήματα και φορτηγά.
Λειτουργώ από την έδρα μιας αγοράς που εκθέτει ένα API, οπότε η προκατάληψή μου είναι πρακτική παρά ακαδημαϊκή. Οι απειλές που αναφέρονται παρακάτω είναι αυτές που μοντελοποιούμε πραγματικά όταν αποφασίζουμε ποιο εργαλείο μπορεί να κληθεί από έναν πράκτορα χωρίς την ανθρώπινη παρέμβαση.
Γιατί ένας διακομιστής μεταφοράς εμπορευμάτων αυξάνει τα διακυβεύματα
Ένας γενικός διακομιστής MCP που διαβάζει το ημερολόγιό σας διαρρέει πληροφορίες όταν αποτυγχάνει. Ένας διακομιστής εμπορευμάτων που κάνει κράτηση φορτίου κάνει κάτι που κοστίζει περισσότερο. Μια κακή κλήση μπορεί να στείλει ένα φορτηγό στη λάθος αυλή, να αλλάξει έναν παραλήπτη σε μια ζωντανή αποστολή, να ακυρώσει μια κράτηση στην οποία βασίζεται ένας πελάτης ή να ανακτήσει ένα φορτωτικό που δεν έπρεπε ποτέ να φύγει από τον λογαριασμό. Αυτά δεν είναι σφάλματα έκθεσης δεδομένων. Είναι χρήματα και φυσικά αγαθά που κινούνται κατόπιν οδηγίας που κανείς δεν πληκτρολόγησε.
Αυτή η διαφορά αναδιατυπώνει ολόκληρο το πρόβλημα. Με έναν βοηθό συνομιλίας, η χειρότερη περίπτωση είναι μια ντροπιαστική απάντηση. Με τα εμπορεύματα, η χειρότερη περίπτωση έχει ένα τιμολόγιο φορτίου συνημμένο και μια αποστολή κάπου που δεν θα έπρεπε να βρίσκεται. Έτσι, το ερώτημα δεν είναι ποτέ "είναι αυτός ο διακομιστής ασφαλής" αφηρημένα. Είναι "ποιες συγκεκριμένες ενέργειες μπορεί να κάνει ένας πράκτορας, και πόσο κοστίζει καθεμία αν πάει στραβά".
Οι δύο τρόποι αποτυχίας που αξίζει να μας απασχολούν
Ο μεγαλύτερος κίνδυνος MCP το 2026 ανάγεται σε δύο μοτίβα, και οι μεταφορές επιδεινώνουν και τα δύο.
Εισαγωγή προτροπής είναι το παλιό πρόβλημα του ιστού με τη μορφή νέων ρούχων. Ένας πράκτορας διαβάζει κείμενο από κάπου που δεν ελέγχει πλήρως, ένα σημείωμα αποστολής, ένα PDF, το σώμα ενός email, και αυτό το κείμενο περιέχει μια οδηγία στην οποία το μοντέλο υπακούει. Στις εμπορευματικές μεταφορές, το δηλητηριασμένο κείμενο φτάνει μέσω νόμιμων καναλιών όλη την ημέρα: ένα σχόλιο κράτησης, μια περιγραφή εκτελωνισμού, μια ενημέρωση κατάστασης από έναν μεταφορέα. Εάν το εργαλείο κράτησής σας εμπιστεύεται οτιδήποτε του περνάει το μοντέλο, μια πρόταση θαμμένη σε ένα σημείωμα παράδοσης μπορεί να γίνει μια πραγματική ακύρωση.
Ο **"δηλητηριασμός εργαλείων"** είναι πιο ύπουλος και συγκεκριμένος για το MCP. Το πρωτόκολλο επιτρέπει σε έναν διακομιστή να περιγράφει τα δικά του εργαλεία, και ο πράκτορας διαβάζει αυτές τις περιγραφές για να αποφασίσει ποιο να καλέσει. Ένας κακόβουλος ή παραβιασμένος διακομιστής μπορεί να γράψει μια περιγραφή που λέει σιωπηλά στο μοντέλο να εξάγει ένα κλειδί API ή να αναδρομολογήσει μια αποστολή, και ο χρήστης δεν βλέπει ποτέ αυτό το κείμενο. Η Anthropic και ανεξάρτητοι ερευνητές αφιέρωσαν τις αρχές του 2026 τεκμηριώνοντας παραλλαγές αυτού, και το μάθημα για τις μεταφορές είναι ωμό: το επίπεδο περιγραφής είναι εκτελέσιμο, οπότε αντιμετωπίστε μια περιγραφή εργαλείου τρίτου μέρους με την ίδια καχυποψία που θα αντιμετωπίζατε κώδικα τρίτου μέρους.
Ανάγνωση έναντι εγγραφής: η γραμμή που πρέπει να καθορίσει την εξουσιοδότησή σας
Η μοναδική πιο χρήσιμη απόφαση ασφαλείας που πήρα ήταν να σταματήσω να σκέφτομαι τον «διακομιστή MCP» ως ένα όριο εμπιστοσύνης και να τον χωρίσω ανάλογα με το τι κάνει κάθε εργαλείο στον κόσμο.
Τι μπορεί να παραμείνει ανοιχτό
Αναφορά μιας διαδρομής, καταγραφή χωρητικότητας, υπολογισμός εκτίμησης χρόνου διέλευσης, αναζήτηση κωδικού λιμανιού. Κανένα από αυτά δεν αλλάζει κάτι. Το να επιτρέψεις σε έναν πράκτορα να τους προσεγγίσει με ελάχιστη ή μηδενική τριβή είναι το όλο νόημα, και εκεί βρίσκεται η καθημερινή αξία. Ένας αναγνώστης που θέλει να συγκρίνει τρεις διαδρομές δεν θα έπρεπε να χρειάζεται να δημιουργήσει ένα token για να το κάνει. Στους διακομιστές της αποσυναρμολόγησης, οι σοβαροί κρατούσαν τα εργαλεία αναφοράς και παραπομπής χαμηλής τριβής ακριβώς για αυτόν τον λόγο.
Τι πρέπει να φράσσεται
Κράτηση, ακύρωση, αλλαγή παραλήπτη, επεξεργασία διεύθυνσης, λήψη εγγράφου, οτιδήποτε σχετίζεται με ένα τιμολόγιο. Κάθε ένα από αυτά γράφει στον πραγματικό κόσμο, και κάθε ένα χρειάζεται μια πιστοποιημένη, εξουσιοδοτημένη, ελέγξιμη κλήση πίσω του. Ο κανόνας που ακολουθούμε είναι απλός στη δήλωση και δυσκολότερος στην εφαρμογή: ένα εργαλείο ανάγνωσης μπορεί να είναι ανοιχτό, ένα εργαλείο εγγραφής ποτέ.
OAuth 2.1 και PKCE, όχι ένα μακράς διάρκειας κλειδί σε αρχείο ρυθμίσεων
Η προδιαγραφή εξουσιοδότησης του MCP κατέληξε στο OAuth 2.1 για απομακρυσμένους διακομιστές, και αυτή η επιλογή έχει πραγματικό βάρος για τις εμπορευματικές μεταφορές. Ένα στατικό κλειδί API επικολλημένο σε ένα αρχείο ρύθμισης παραμέτρων είναι αποδεκτό για έναν μεμονωμένο προγραμματιστή που εκτελεί έναν διακομιστή μέσω stdio στη δική του μηχανή. Είναι το λανθασμένο μοντέλο τη στιγμή που ο διακομιστής είναι προσβάσιμος μέσω HTTP και ένας πράκτορας ενεργεί για λογαριασμό ενός ονομασμένου χρήστη εντός ενός κοινόχρηστου λογαριασμού.
Τρεις ιδιότητες κάνουν την κύρια δουλειά. Τα Scoped tokens σημαίνουν ότι ένα token που δημιουργήθηκε για αναφορά δεν μπορεί να γίνει κράτηση. Τα Short-lived tokens σημαίνουν ότι ένα διαπιστευτήριο που διέρρευσε λήγει από μόνο του αντί να ζει για πάντα σε ένα αρχείο καταγραφής. Τα Revocable tokens σημαίνουν ότι όταν κάτι φαίνεται να πηγαίνει στραβά, κόβετε την πρόσβαση σε δευτερόλεπτα αντί να κάνετε περιστροφή ενός κοινόχρηστου κλειδιού από το οποίο εξαρτώνται όλοι. Το OAuth 2.1 απαιτεί επίσης PKCE στη ροή εξουσιοδότησης-κωδικού, η οποία κλείνει το κενό υποκλοπής που άφησαν ανοιχτές παλαιότερες αναπτύξεις OAuth. Τίποτα από αυτά δεν είναι εξωτικό. Είναι η ίδια σκλήρυνση που πέρασε οποιοδήποτε API πληρωμών, εφαρμοσμένη στη στιγμή που ένας πράκτορας λέει "κάνε κράτηση".
Αυτή είναι η μορφή του ορίου που επιβάλλουμε, γραμμένη ως ο πίνακας που θα ήθελα κάθε διακομιστής εμπορευμάτων να δημοσιεύει.
| Ενέργεια πράκτορα | Διαβάζει ή γράφει | **Απαιτείται ταυτοποίηση** | Αν πάει στραβά |
| Λάβετε προσφορά | Διάβασε | Ανοιχτό ή βασικό κλειδί | Άσκοπη κλήση, καμία ζημιά |
| Έλεγχος χωρητικότητας, διέλευσης, παρακολούθησης | Διάβασε | Ανοιχτό ή βασικό κλειδί | Απαρχαιωμένη απάντηση στη χειρότερη περίπτωση |
| Κάντε κράτηση αποστολής | Γράψε | Διαπιστευτήριο OAuth με εμβέλεια, βήμα επιβεβαίωσης | Πραγματικό κόστος, πραγματικό φορτηγό |
| Ακύρωση ή επαναπρογραμματισμός | Γράψε | Κωδικός εμβέλειας, κλειδί ιδιοσυγκράτησης | Χαμένη θέση, ποινή |
| Αλλαγή παραλήπτη ή διεύθυνσης | Γράψε | Επιβεβαίωση από άνθρωπο, διακριτικό εμβέλειας | Εσφαλμένη παράδοση, απάτη |
| Φέρτε φορτωτική ή τιμολόγιο | Διάβασε ευαίσθητα | Διακριτικό εμβέλειας, έλεγχος ανά έγγραφο | Διαρροή δεδομένων και εγγράφων |
Το μοτίβο σε αυτόν τον πίνακα είναι η πραγματική απόφαση προϊόντος. Οι αναγνώσεις κάθονται στα αριστερά και παραμένουν φθηνές. Οι εγγραφές κάθονται στα δεξιά και κερδίζουν την τριβή τους.
Το πρόβλημα της εκτεθειμένης παρουσίας
Ένα εκπληκτικό ποσοστό του κινδύνου MCP δεν είναι καθόλου ευφυές. Πρόκειται για έναν διακομιστή που προοριζόταν να εκτελείται τοπικά, εκτεθειμένος στο ανοιχτό διαδίκτυο χωρίς έλεγχο ταυτότητας, επειδή η παράδοσή του έτσι ήταν ευκολότερη. Το πρωτόκολλο υποστηρίζει δύο μεταφορές. Ένας διακομιστής stdio εκτελείται ως τοπική διεργασία που ξεκινά ο πελάτης, ο οποίος τον κρατάει στη μηχανή σας και μακριά από το δίκτυο. Ένας φιλοξενούμενος διακομιστής HTTP είναι προσβάσιμος από οτιδήποτε μπορεί να βρει τη διεύθυνση URL του.
Για έναν διακομιστή βοηθητικών προγραμμάτων μόνο για ανάγνωση, η έκθεση HTTP είναι σε μεγάλο βαθμό αβλαβής. Για έναν με εργαλεία κρατήσεων, αυτό είναι όλο το ζήτημα. Αν τα εργαλεία εγγραφής σας είναι προσβάσιμα μέσω δημόσιου HTTP, η πιστοποίηση δεν είναι μια δυνατότητα που προσθέτετε αργότερα, είναι αυτό που στέκεται ανάμεσα σε έναν ξένο και την ουρά αποστολής σας. Ο κανόνας μας είναι ότι τα εργαλεία κρατήσεων και εγγράφων δεν εξυπηρετούνται ποτέ μέσω ενός μη πιστοποιημένου άκρου HTTP, τελεία. Σε περίπτωση αμφιβολίας, ένας διακομιστής με δυνατότητα εγγραφής θα πρέπει από προεπιλογή να χρησιμοποιεί stdio και τοπική εκκίνηση, και να μεταβαίνει σε φιλοξενούμενο HTTP μόνο αφού έχει τεθεί σε εφαρμογή η παραπάνω ροή OAuth.
Υπερασπιζόμενοι το στρώμα περιγραφής έναντι της δηλητηρίασης εργαλείων
Επειδή οι περιγραφές εργαλείων καθοδηγούν το μοντέλο, αξίζουν τους ίδιους ελέγχους με τον κώδικα που αναπτύσσετε. Τρεις συνήθειες καλύπτουν το μεγαλύτερο μέρος της έκθεσης.
- Καρφιτσώστε και αξιολογήστε τους διακομιστές στους οποίους συνδέεστε. Ένας πράκτορας συνδεδεμένος σε ένα επιλεγμένο σύνολο γνωστών διακομιστών αποτελεί μικρότερο στόχο από έναν που εγκαθιστά ό,τι προσφέρει ένα μητρώο. Αντιμετωπίστε έναν νέο διακομιστή σαν μια νέα εξάρτηση, γιατί αυτό ακριβώς είναι.
- Διατηρήστε έναν άνθρωπο σε κάθε εγγραφή. Ένα βήμα επιβεβαίωσης πριν από την κράτηση, ακύρωση ή αλλαγή ενός παραλήπτη μετατρέπει μια σιωπηρή εντολή σε ορατό αίτημα που ο χρήστης μπορεί να αρνηθεί. Είναι ο φθηνότερος έλεγχος με τη μεγαλύτερη απόδοση.
- **Επικυρώστε στο API, όχι στο prompt.** Ο διακομιστής θα πρέπει να ελέγχει ξανά κάθε παράμετρο που λαμβάνει σε σχέση με τις πραγματικές άδειες του λογαριασμού και την πραγματική κατάσταση της κράτησης, αντί να εμπιστεύεται ότι το μοντέλο συνέταξε μια λογική κλήση. Το μοντέλο προτείνει, το API αποφασίζει.
Τι πράγμα πρέπει να επιβάλει ένας διακομιστής αγοράς για να μπορεί μια μεμονωμένη εταιρεία μεταφορών να παρακάμψει
Ένας διακομιστής μίας εταιρείας κινητής τηλεφωνίας δραστηριοποιείται αποκλειστικά στο δικό του δίκτυο, οπότε η ακτίνα πρόσκρουσης είναι ένας πάροχος. Ένας διακομιστής αγοράς παραθέτει και κάνει κρατήσεις σε πολλούς παρόχους για λογαριασμό πολλών χρηστών, κάτι που αλλάζει την ασφάλεια με δύο τρόπους.
Πρώτον, ο πεδίο εφαρμογής πρέπει να είναι ανά χρήστη και ανά πάροχο, όχι ανά διακομιστή. Ένα διακριτικό που επιτρέπει σε έναν πράκτορα να κάνει κράτηση με έναν πάροχο δεν πρέπει να φτάνει σιωπηλά σε άλλον, και ο πράκτορας ενός πελάτη δεν πρέπει ποτέ να βλέπει έγγραφα άλλου πελάτη. Δεύτερον, το αρχείο ελέγχου έχει μεγαλύτερη σημασία, διότι όταν ένας πράκτορας κάνει κράτηση μέσω μιας αγοράς, πρέπει να απαντήσετε "ποιος χρήστης, ποιο διακριτικό, ποιος πάροχος, σε τι ώρα" για κάθε εγγραφή. Θεωρούμε αυτό το αρχείο καταγραφής μέρος του προϊόντος, όχι μια σκέψη εκ των υστέρων, καθώς είναι αυτό που μας επιτρέπει να ανακαλέσουμε περιορισμένα αντί να απενεργοποιήσουμε τα πάντα.
Μια πρακτική λίστα ελέγχου πριν κάνετε κράτηση
- Διαχωρισμός εργαλείων σε ανάγνωση και εγγραφή, και καταχώρηση του διαχωρισμού σε σημείο όπου τόσο ο πράκτορας όσο και η ομάδα σας μπορούν να τον δουν.
- Διατηρήστε τα εργαλεία παράθεσης και αναφοράς με χαμηλή τριβή, ώστε να επιβιώνει η καθημερινή αξία.
- Βάλτε κάθε εγγραφή πίσω από ένα εστιασμένο, βραχύβιο, ανακλητό διακριτικό OAuth 2.1 με PKCE.
- Απαιτείται βήμα επιβεβαίωσης για αλλαγές κράτησης, ακύρωσης, παραλήπτη και διεύθυνσης.
- Επανα-επικυρώστε κάθε παράμετρο στο API έναντι των πραγματικών δικαιωμάτων και της πραγματικής κατάστασης αποστολής.
- Ποτέ μην παρέχετε εργαλεία εγγραφής μέσω μη πιστοποιημένου HTTP, και κάντε τους διακομιστές με δυνατότητα εγγραφής να προεπιλέγονται στο τοπικό stdio.
- Καρφιτσώστε τους διακομιστές στους οποίους συνδέεται ο πράκτοράς σας και αναθεωρήστε νέους όπως και νέο κώδικα.
- Καταγράψτε κάθε εγγραφή με χρήστη, διακριτικό, φορέα και χρόνο, και εξασκηθείτε στην ανάκληση προτού τη χρειαστείτε.
Κανένα από αυτά δεν είναι αποκλειστικό της τεχνητής νοημοσύνης. Είναι τα συστήματα ελέγχου που χρησιμοποιούν ήδη οι μεταφορές και οι πληρωμές, στραμμένα στο νέο μέρος από όπου μπορεί να προέρχεται μια οδηγία. Ο πράκτορας είναι ένας νέος "καλούντας", όχι ένα νέο σύνολο κανόνων.
Συχνές ερωτήσεις
Είναι ασφαλές να αφήνεις έναν AI agent να κάνει κρατήσεις φορτίων;
Ναι, όταν η κράτηση ακολουθεί μια πιστοποιημένη και εξουσιοδοτημένη κλήση με ένα βήμα επιβεβαίωσης, και όταν ο διακομιστής ελέγχει εκ νέου κάθε παράμετρο αντί να εμπιστεύεται το μοντέλο. Η μη ασφαλής έκδοση είναι ένα ανοιχτό εργαλείο εγγραφής χωρίς ανθρώπινη παρέμβαση. Αντιμετωπίστε την κράτηση όπως οποιαδήποτε άλλη ενέργεια που μετακινεί χρήματα και ο πράκτορας γίνεται ένας ακόμη πιστοποιημένος καλών.
Γιατί να χρησιμοποιήσετε το OAuth 2.1 αντί για ένα απλό κλειδί API;
Ένα στατικό κλειδί τείνει να έχει μεγάλη διάρκεια ζωής, ευρύ πεδίο εφαρμογής και είναι δύσκολο να ανακληθεί χωρίς να διαταραχθούν όλοι όσοι το μοιράζονται. Το OAuth 2.1 σάς παρέχει διακριτά, βραχύβια, ανακλητά διακριτικά και απαιτεί PKCE στη ροή εξουσιοδότησης. Για έναν τοπικό διακομιστή stdio, ένα κλειδί είναι αποδεκτό, αλλά οτιδήποτε είναι προσβάσιμο μέσω HTTP που μπορεί να γράψει πρέπει να χρησιμοποιεί το μοντέλο OAuth.
Τι είναι η δηλητηρίαση εργαλείων στο MCP;
Η δηλητηρίαση εργαλείων (tool poisoning) συμβαίνει όταν η περιγραφή ενός εργαλείου σε έναν διακομιστή, την οποία διαβάζει ο πράκτορας για να αποφασίσει τι θα κληθεί, περιέχει κρυφές οδηγίες που κατευθύνουν το μοντέλο προς επιβλαβείς ενέργειες, όπως η αποκάλυψη ενός κλειδιού ή η επαναδρομολόγηση μιας αποστολής. Επειδή η περιγραφή επηρεάζει τη συμπεριφορά, την υπερασπίζεστε όπως υπερασπίζεστε τον κώδικα: καρφιτσώνετε έμπιστους διακομιστές, έχετε έναν άνθρωπο στις εγγραφές και επικυρώνετε στο API.
Πρέπει ένας διακομιστής MCP εμπορευμάτων να λειτουργεί ως stdio ή ως hosted HTTP;
Ένας διακομιστής βοηθητικού προγράμματος μόνο για ανάγνωση είναι εντάξει μέσω φιλοξενούμενου HTTP. Ένας διακομιστής με εργαλεία κράτησης ή εγγράφων θα πρέπει από προεπιλογή να χρησιμοποιεί τοπικό stdio και να μεταβαίνει σε φιλοξενούμενο HTTP μόνο όταν υπάρχει οριοθετημένο OAuth, επειδή ένα εκτεθειμένο σημείο εγγραφής χωρίς έλεγχο ταυτότητας είναι προσβάσιμο από οποιονδήποτε βρει τη διεύθυνση URL.
Αυτό κλείνει τον κύκλο που άνοιξε αυτή η σειρά. Αν δεν έχετε διαβάσει τα προηγούμενα μέρη, η πρωτόκολλο primer εξηγεί πώς ένα API αποστολής γίνεται ένα σύνολο εργαλείων, και η αποσυναρμολόγηση δείχνει πού οι αποσταλμένοι διακομιστές σχεδίασαν αυτές τις γραμμές στην πράξη.


