modelcontextprotocol / modelcontextprotocol/php-sdk

[Schema] SEP-2106: Harden SchemaValidator against external $ref SSRF and composition DoS

Offen
#358 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

2026-07-28 enhancement improves spec compliance Schema
Vorherrschende Sprache
PHP
Sterne
1.6k
Forks
173
Ø Merge
2 T. 49 Min.
Gemergte PRs (30 T.)
23

Beschreibung

Implements the security hardening portion of SEP-2106 for the MCP Spec 2026-07-28 release.

Tracked by umbrella #337.

Spec rationale

Once $ref and rich composition land in inputSchema/outputSchema, naive validators are exposed to: SSRF via external $ref URIs, and DoS via pathological compositions / deep nesting / large subschema counts.

PHP SDK changes

  • SchemaValidator MUST NOT auto-dereference external $ref URIs (block any non-same-document reference by default).
  • Bound: schema depth, subschema count, validation time.
  • Configurable limits with sensible defaults (mirror existing session-store DoS limit ergonomics).
  • Add regression tests with adversarial schemas.

Related

  • Umbrella #337
  • Vocabulary sub-issue (introduces $ref support that this hardens)

Beitragsleitfaden

Beitragsleitfaden öffnen

Erste Schritte

  1. Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
  3. Forke das Repository und arbeite in einem Branch.
  4. Öffne einen Pull Request, der die Issue-Nummer nennt.

Rechercherichtung

Beginne bei SchemaValidator und untersuche die bestehende session-store-DoS-Limitkonfiguration im Hinblick auf die vorgesehene Handhabung der Limits und die Standardwerte. Überprüfe die aktuelle $ref-Behandlung und füge anschließend adversariale Regressionstests für externe Referenzen, tiefe Verschachtelung, eine große Anzahl von Subschemas und die Validierungszeit hinzu; als abgeschlossen gilt die Aufgabe, wenn externe, nicht auf dasselbe Dokument verweisende Referenzen standardmäßig blockiert werden und die Limits konfigurierbar sind.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
php
Bereich
backend-api-design, security
Issue-Typ
Feature
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Ruhig
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
48/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.