modelcontextprotocol / modelcontextprotocol/php-sdk
[Schema] SEP-2106: Harden SchemaValidator against external $ref SSRF and composition DoS
Dieses Issue hat noch niemand übernommen.
- 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
$refand rich composition land ininputSchema/outputSchema, naive validators are exposed to: SSRF via external$refURIs, and DoS via pathological compositions / deep nesting / large subschema counts.
PHP SDK changes
SchemaValidatorMUST NOT auto-dereference external$refURIs (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
$refsupport that this hardens)
Beitragsleitfaden
Erste Schritte
- Lies das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreib ins Issue, dass du es übernimmst — das erspart doppelte Arbeit.
- Forke das Repository und arbeite in einem Branch.
- Ö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