The GET /search endpoint deep-merges query parameters into the search configuration object.
The query parser is configured with allowPrototypes: true, so qs parses
?__proto__[role]=admin into a nested object with a __proto__ key.
The custom merge function does not sanitize __proto__, allowing prototype pollution.
After pollution, GET /admin succeeds because {}.role === 'admin'.