# graphql_prescan report

files scanned: 2 — findings: 10

## HIGH
- `GQL-INPUT-SQL` hostile-server.js:15 — resolver input (table) into a SQL sink — a field argument becomes a query fragment
- `GQL-INPUT-EXEC` hostile-server.js:18 — resolver input (a) reaches an exec/eval sink — a field argument becomes executable code
- `GQL-INPUT-SQL` hostile-server.js:21 — resolver input (a) into a SQL sink — a field argument becomes a query fragment
## MEDIUM
- `GQL-MUTATION-NO-AUTH` hostile-server.js:9 — Mutation resolvers defined in a file with zero authorisation vocabulary — every mutation runs for anonymous callers (verify guards upstream)
- `GQL-INPUT-FETCH` hostile-server.js:17 — resolver input (url) into an HTTP fetch — the query chooses the outbound target (SSRF channel)
- `GQL-INTROSPECTION-ON` hostile-server.js:29 — introspection explicitly enabled — full schema disclosure to any caller
- `GQL-BATCHING-ON` hostile-server.js:30 — request batching allowed — one HTTP request carries N operations; rate limits divide by N
- `GQL-DEBUG-CONSOLE` hostile-server.js:31 — dev console / debug flag on the serving path — interactive schema browser exposed
## LOW
- `GQL-NO-QUERY-LIMIT` hostile-server.js:26 — GraphQL endpoint wired with zero depth/complexity-limit vocabulary — nested and widened queries burn the resolver graph unchecked
- `GQL-ERROR-STACK` hostile-server.js:32 — stack/exception detail returned through the error channel — internals leak to callers
