GraphQL Penetration Testing
One endpoint, hundreds of ways to ask for data. We map the schema, then test authorisation at every field and every relation, not just at the query root. CREST-certified testers, fixed price from £2,640, scoped in 24 hours.
- Unlimited retesting
- No rescheduling or cancellation fees
- Fixed quote within 24 hours
“I would highly recommend EJN Labs to any organisation seeking reliable, detailed, and well-managed penetration testing services, particularly for government or enterprise-level projects.”
“There wasn’t another company we could find that could deliver what we needed in the timeframe we needed. The client loved it, and we got instant ROI from the engagement.”
A REST API makes an attacker guess. GraphQL, with introspection on, tells them the type of every object, the name of every mutation and the shape of every relation. That is convenient for your developers and equally convenient for anyone else, so the first question is whether the schema should be public at all, and the second is what the error messages leak when it is not.
REST hides behind routes. GraphQL hands you the map.
The real work is authorisation. Checks tend to sit at the query root, where the resolver for a single object looks correct, and then a nested relation walks straight past them. We traverse the graph with a low privileged account and see which paths return data they should not.
Then the abuse cases that are unique to the language: aliasing the same mutation fifty times in one request to defeat rate limiting, recursive queries that cost the server far more than they cost the client, and batching that turns one request into a brute force run.
ISO 27001, SOC 2, PCI DSS and Cyber Essentials Plus audits accept manual penetration test evidence. Scan-only evidence is generally insufficient.
GRAPHQL SPECIFICS
What We Actually Test in a GraphQL API
Ten test areas that apply because the API is GraphQL, on top of the standard API checks. Every finding is verified, reproducible and mapped to the OWASP API Top 10, CWE and CVSS 3.1.
Introspection and schema exposure
Whether the schema is reachable in production, what it discloses, and what field suggestion errors leak when introspection is disabled.
Field level authorisation
Resolvers that authorise at the root but not per field, and fields that return more than the interface shows.
Object level authorisation
Identifiers accepted without an ownership check, including objects reached through nested relations.
Batching and aliasing
Many operations in one request used to bypass rate limits, enumerate identifiers or brute force credentials.
Depth and complexity limits
Recursive and expensive queries, cost analysis configuration, and denial of service through nesting.
Mutations
Mass assignment through input types, state changes missing authorisation, and administrative mutations reachable by ordinary users.
Persisted queries and caching
Allowlist bypass, cache keys that ignore the caller, and responses shared between accounts.
Error handling
Stack traces, resolver level detail and messages that enumerate the schema one guess at a time.
Subscriptions and websockets
Authentication at connection time against authorisation per message, and what a subscriber receives after their rights change.
Gateway and federation
Trust between subgraphs, headers forwarded across services, and authorisation assumed to have happened upstream.
METHODOLOGY
What a GraphQL finding looks like
Written the way a finding appears in our reports. The example below is reconstructed from publicly documented research, with hosts, paths and identifiers redacted. We do not republish client findings, named or anonymised.
Introspection and query batching turn a login mutation into unlimited brute force
- Affected
- The customer API endpoint at [redacted], fronted by a rate limiter counting HTTP requests.
- What we found
- Introspection was enabled in production, which gave us the full schema including mutations that were never meant to be public. Batching then let us send several hundred login attempts inside one HTTP request, which the rate limiter counted as one.
- Why it matters
- Credential stuffing at a rate the monitoring never saw, and disclosure of internal mutations including one that changed account entitlements.
- Fix
- Disable introspection in production, cap batch size, query depth and complexity, rate limit on resolver executions rather than HTTP requests, and move first party clients to persisted queries.
Reconstructed from public research: the OWASP GraphQL cheat sheet, covering introspection, batching attacks and query depth and complexity limits.
GraphQL Penetration Testing: From Scope to Attestation
CREST-aligned methodology built on OWASP Web Security Testing Guide, OWASP ASVS, NIST SP 800-115, and PTES. Each finding maps to all four standards plus your specific compliance regime.
Reconnaissance
Application mapping, technology fingerprinting, content discovery, parameter enumeration, authentication-flow analysis, role-matrix construction.
Vulnerability Assessment
Authenticated and unauthenticated automated scanning across every user role, plus targeted manual checks for known weakness patterns.
Manual Exploitation
Hands-on testing by a CREST-certified pentester. Business-logic exploitation, chained vulnerabilities, privilege escalation, impact validation.
Reporting + Retest
Executive summary, technical report with CVSS scores and reproduction steps, walkthrough call, free retest after remediation, attestation letter.
CREDENTIALS
Verified Accreditations Auditors Accept
Every credential below is independently verifiable. UK procurement teams, FCA supervisors, ISO 27001 / SOC 2 auditors, and cyber insurance underwriters all recognise these standards.
GET YOUR QUOTE
Get a CREST GraphQL assessment pen test quote in 24 hours
A fixed-price quote back in one business day, from a named CREST assessor. No sales pipeline, no chasing.
- CREST and IASME accredited. Testing your auditors and clients already recognise.
- Fast-track testing within 24 hours where required. Free retest of every fix included.
- Live findings via your client portal, not a four-week PDF.
- Fixed price from £2,640 for a small, single-scope engagement, agreed up front. Most engagements run £3,980 and up. No day-rate surprises.
Under NDA Further named references available on a scoping call.
- We reply within one business day with a fixed-price quote from a named CREST assessor.
- You approve the scope and we book a start date, usually within 24 hours.
- Live findings land in your client portal as we test, with a free retest of every fix.
Get your fixed pen test quote in 24 hours
Quote request received
We will reply within one business day with your fixed-price quote from a named CREST assessor.
Your data stays with us. No newsletter signup.
or book a 20-min scoping call first
We reply within one business day. Your data stays with us. No newsletter signup.
COMPLIANCE READY
Reports Mapped to Every Framework
Findings are explicitly tagged to the relevant control reference. Your audit team submits the report directly without translation work.
ISO 27001:2022
Annex A.8.8 management of technical vulnerabilities plus A.5.15-5.18 and A.8.2-8.5 access control validation.
SOC 2 Type I & II
CC6 logical access, CC7 system operations, CC8 change management evidence.
PCI DSS
Requirement 11.4 application penetration testing across cardholder data environments, including ecommerce penetration testing for online retail platforms.
FCA SYSC
SYSC 4.1.1R, 6.1.1R, 13 mapped to each finding for FCA-regulated firms.
UK GDPR
Article 32 effectiveness testing, customer-data security controls, ICO-acceptable evidence.
Cyber Essentials Plus
Direct certification through our IASME body status, single-vendor delivery.
PRICING
Transparent GraphQL Penetration Testing Pricing
Pricing depends on app complexity, user-role count, business-logic depth, and integration surface. The day count flexes; the included deliverables stay the same across all engagements.
2 to 3 days
Single user role, basic CRUD application, marketing website with auth. Typically 5-day engagement.
Get a fixed quote3 to 5 days
Multi-role SaaS, business application with payment integration. Typically 8-12 day engagement.
Get a fixed quote5 to 8 days
Multi-tenant platform, complex authorisation matrix, integration-heavy applications. 15-20 day engagement.
Get a fixed quotePart of Technologies We Pen Test. These are examples of the stacks we publish pages for, not a complete list. If yours is not here we still test it. Related pages:
BY SECTOR
GraphQL Penetration Testing for Your Sector
Sector-specialist scoping for UK businesses with sector-specific compliance regimes and threat models.
Fintech & FCA-Regulated
FCA SYSC, Open Banking FAPI 1.0, PSD2 SCA, payment-flow scrutiny, KYC/AML testing.
Fintech sector pageSaaS Companies
SOC 2 Type I & II evidence, multi-tenant boundaries, role escalation, customer-tenant isolation.
SaaS sector pageLaw Firms
SRA Cyber Standard, privileged data, conveyancing fraud defence, partner-tier procurement.
Law firm sector pageHealthcare
NHS DTAC, DSP Toolkit v6, UK GDPR Article 32, EHR systems, telehealth platforms.
Healthcare sector pageInsurance
FCA / PRA Operational Resilience, cyber underwriting, claims data, broker portals.
Insurance sector pagePublic Sector
CCS / G-Cloud framework, NCSC-aligned, citizen-facing services, PSN-compliance scrutiny.
Public sector pageWHY EJN LABS
What You Get From GraphQL Penetration Testing
Six concrete differentiators competitors don’t all match.
CREST-Certified Testers, Verifiable
Every test by a CREST-certified pen tester (CRT, CCT APP, CCT INF where applicable). Verify our company status at crest-approved.org.
24-Hour Startup, Where Required
From signed scope to active testing in a single business day for incident response, audit deadlines, or regulator-driven timelines.
Live Findings, Not 4-Week PDFs
Critical issues reported during testing through your client portal. Your team remediates while testing continues.
Audit-Ready Reports
Executive summary plus full technical report with CVSS scores and explicit framework mappings (ISO 27001, SOC 2, PCI DSS, FCA SYSC).
Free Retests, Standard
Verify remediation of every finding before close-out. Letter of attestation for audit submission included. Most competitors charge £1,500-£3,000 per retest.
UK-Based CREST Testers
Every engagement performed by vetted, UK-based CREST-certified testers, matched to your needs, security clearance, and compliance scope.
FAQ
Frequently Asked
Do you need the schema?
No. If introspection is on we take it from the endpoint. If it is off we reconstruct what we can, and the difficulty of doing that is itself a finding.
Is this separate from your API testing page?
It is the GraphQL-specific version. If you run REST and GraphQL together we scope both in one engagement.
We use Apollo Federation.
Then the gateway and the subgraphs are both in scope, because trust between them is where authorisation usually goes missing.
Will testing affect performance?
Complexity and batching tests are deliberately heavy, so we agree the window and the limits with you before running them.
Can you test subscriptions?
Yes. We check authentication at connect and authorisation per message, which are often not the same thing.
What about the database behind it?
Injection paths through resolvers are in scope. Database hardening sits with the internal infrastructure test.
What is included in the price?
Scoping, testing, the executive summary, the technical report, a walkthrough call and free retests until the finding is closed. One scope, one number, no follow-up invoices.
How fast can you start?
Scope to active testing in 24 hours once the scope is agreed, subject to tester availability in your window.
Are your testers CREST certified?
Yes. EJN Labs is a CREST member company and testing is delivered by CREST-qualified testers. The membership is verifiable on the CREST marketplace.
20+ CREST-accredited testing services in one place
Web, mobile, API, cloud, AI, infrastructure, red team. Pick the test that fits your environment.
Get your GraphQL API tested properly
Send us the endpoint and the roles. You will have a fixed scope and a number within 24 hours.



