[Schema] SEP-2106: Harden SchemaValidator against external $ref SSRF and composition DoS
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 48/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Quiet
- Tech stack
- php
- Domain
- backend-api-design, security
Research direction
Start at SchemaValidator and inspect the existing session-store DoS limit configuration for the intended limit ergonomics and defaults. Review current $ref handling, then add adversarial regression coverage for external references, deep nesting, large subschema counts, and validation time; done means external non-same-document references are blocked by default and the limits are configurable.
Written by the indexing model from the issue text.
Description
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)
- Dominant language
- PHP
- Stars
- 1.6k
- Forks
- 173
- Avg merge
- 2d 49m
- Merged PRs (30d)
- 23
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from modelcontextprotocol/php-sdk
-
[Server] Handler type uses bare Closure, hard to decorate RegistryInterface under strict PHPStan OpenServer
Difficulty 1/5 Under an hour Newbie friendliness 78/100
modelcontextprotocol/php-sdk#468 · 2 comments ·
-
needs confirmation needs maintainer action Server
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
modelcontextprotocol/php-sdk#398 · 1 reaction ·
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
modelcontextprotocol/php-sdk#370 ·
-
enhancement
Difficulty 4/5 3-5 days Newbie friendliness 55/100
modelcontextprotocol/php-sdk#510 · 1 comment ·
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 45/100
modelcontextprotocol/php-sdk#504 ·
All issues in modelcontextprotocol/php-sdk
Similar issues
-
priority: p3
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
googleapis/librarian#7636 ·
-
0. Needs triage bug
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
nextcloud/fulltextsearch#1011 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
phpstan/phpstan-doctrine#794 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
Automattic/static-site-importer#1767 ·