Sicherheit · für Entwicklung

WebMCP-Sicherheit: Tools bauen, die man Agenten geben darf

Die Hauptbedrohung für WebMCP-Tools sind indirekte Prompt Injections: Ein Sprachmodell verarbeitet alle Eingaben als Token-Folge und kann versteckte Anweisungen in Fremdinhalten für echte Instruktionen halten; dokumentierte, reproduzierbare Angriffe auf agentische Systeme existieren. WebMCP begegnet dem mit den vorhandenen Sicherheitsbausteinen des Webs (Origin-Isolation, Permissions Policy) plus tool-spezifischen Mitteln: Annotations-Hints, selektiver Exposition über exposedTo und Nutzerbestätigung für sensible Aktionen. Wer die Regeln auf dieser Seite einhält, baut Tools, die ein Agent nutzen kann, ohne dass Fremdinhalte das Ruder übernehmen.

Das Bedrohungsmodell in drei Sätzen

Erstens: Alles, was ein Tool an den Agenten zurückgibt, landet im Kontext des Modells; enthält die Ausgabe Fremdinhalte (Reviews, Kommentare, gescrapte Seiten), können darin Anweisungen stecken. Zweitens: Tools mit Schreibwirkung handeln im Namen des Nutzers, in dessen Session; ein fehlgeleiteter Agent kann damit echten Schaden anrichten. Drittens: In eingebetteten Kontexten (iframes) stellt sich zusätzlich die Frage, wer wem Tools anbieten darf.

Die Einzelheiten stehen in der Chrome-Dokumentation zu sicheren WebMCP-Tools und im Explainer.

Die Plattform-Ebene: wer überhaupt Tools anbieten darf

JavaScript
await document.modelContext.registerTool({
  name: "get-favorite-products",
  // ...
}, {
  exposedTo: ["https://trusted-partner.example"],
});

Die Faustregel dazu aus der Chrome-Doku: Lese-Tools nur für Origins freigeben, mit denen Sie Nutzerdaten teilen würden; Schreib-Tools nur für Origins, die im Namen des Nutzers handeln dürfen.

Die Tool-Ebene: Annotations ehrlich setzen

Die Inhalts-Ebene: Character Budgets

Die Chrome-Doku empfiehlt harte Längen-Budgets, damit Tool-Texte nicht selbst zum Einfallstor oder zur Verwirrungsquelle werden:

Empfohlene Längen-Budgets
FeldBudget
Tool-Name und Parameter-Namen maximal 30 Zeichen
Tool-Beschreibung maximal 500 Zeichen
Parameter-Beschreibung maximal 150 Zeichen
Tool-Ausgabe maximal 1.500 Zeichen

Kurz, präzise, ohne Anweisungen an den Agenten in der Ausgabe. Was nicht in 1.500 Zeichen passt, gehört auf die Seite, nicht in den Tool-Output.

Die Nutzer-Ebene: Bestätigung für sensible Aktionen

Der Entwurf sieht vor, dass sensible Operationen (Käufe, Löschungen, Versand) eine explizite Nutzerbestätigung durchlaufen; die genaue Mechanik ist Teil der laufenden Spezifikationsarbeit. Bis dahin gilt für Betreiber: solche Aktionen serverseitig absichern wie bisher auch. Ein Agent ist ein weiterer Client, kein vertrauenswürdiger.

Checkliste für jedes Tool vor dem Livegang

  1. Verändert das Tool etwas?

    Wenn nein: readOnlyHint: true.

  2. Enthält die Ausgabe Fremdinhalte?

    Wenn ja: untrustedContentHint: true.

  3. Braucht ein fremder Origin Zugriff?

    Wenn nein: kein exposedTo, Standard behalten; wenn ja: exakte Origin-Liste, keine Wildcards.

  4. Budgets eingehalten (30/500/150/1.500)?

    Die Grenzen aus dem Abschnitt darüber.

  5. Serverseitige Validierung unverändert scharf

    Das Schema ist Dokumentation, keine Sicherheitsgrenze.

  6. Ausgabe ohne Anweisungen

    Keine Formulierungen, die wie Anweisungen an einen Agenten lesbar sind.

Quellen

Alle Belege sind öffentlich zugänglich und am auf Erreichbarkeit geprüft.

Sichere Tools sind eine Entwurfsfrage, keine Konfigurationsfrage.

Welche Ihrer Funktionen ein Agent ohne Rückfrage auslösen darf und welche nicht: Diese Liste entsteht vor der ersten Zeile Code. Genau das machen wir im Seminar.

Zu den Seminaren oder direkt: post@alinr.com