Meilisearch Security Review
A Meilisearch API key can grant every permission through one wildcard action, invisible from the key itself. We test what each key, tenant token and master key actually reaches. CREST-certified testers, fixed price from £2,620 for a 2-day single-instance scope, quoted within 24 hours.
- Unlimited retesting
- Unlimited pre-retesting
- No hidden fees
“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.”
Meilisearch’s own API reference documents a bare * in a key’s actions array as the way to grant every permission it supports, from search through to keys.delete and network.update, in one string with nothing in the key format itself marking it as unrestricted.
Why a Meilisearch API key’s reach is decided by its actions and indexes arrays
Meilisearch’s own authorisation reference says providing a master key at launch is what protects a self-hosted instance from unauthorised requests, that the key must be at least 16 bytes, and that from then on every route except /health needs a valid API key in the Authorization header, with the /keys route reachable only by the master key itself. Meilisearch Cloud removes the setup step rather than the risk: its security guide confirms a master key is generated automatically for every project, which is then used to create four default keys: a Default Search API Key, a Default Admin API Key documented as granting full access to all operations except managing other keys, a Default Read-Only Admin API Key with read-only access to the whole database, and a Default Chat API Key scoped to search and chatCompletions.
Beyond the four defaults, Meilisearch’s key reference documents a custom key’s actions as a list of granular permissions, including documents.add, indexes.create, settings.update, network.update and keys.delete, and states plainly that a bare * grants every one of them in a single string; the indexes field works the same way, accepting * for every index including ones created later, or a prefix pattern such as movies_* that the documentation gives as a working example. Once a key exists, Meilisearch’s key-management guide says its actions, indexes and expiresAt fields cannot be changed, a key created without an expiry can never have one added later, and an expired key’s requests return a 403, which is why what a key was actually built to do at creation matters more than what it is called.
Multi-tenant search moves the same question into tenant tokens rather than the parent key itself. Meilisearch’s tenant token payload reference documents them as JSON web tokens carrying searchRules, an API key UID and an optional expiry, built with a header specifying HS256, HS384 or HS512 and then signed with an API key, and its own security guide is explicit that a tenant token restricts only the search endpoint, never indexing, settings updates or API key management, and likens the whole mechanism to Algolia’s secured API keys. We test that filter, that signing key and the plain API keys behind them, not Meilisearch’s own hosting. For the wider family of search, cache and streaming systems this scope splits from, see our NoSQL, cache and streaming security review.
SCOPE
What we review in a Meilisearch deployment
Master Key and Which Routes It Actually Protects
Meilisearch’s authorisation reference says providing a master key at launch is what protects a self-hosted instance from unauthorised requests, and that key must be at least 16 bytes; once set, every route except /health needs a valid API key, and the /keys route can only be reached with the master key itself. We test whether an instance was actually launched with a master key meeting that minimum, and whether the master key is ever used for day-to-day search or indexing rather than only for managing other keys.
Default Search, Admin, Read-Only and Chat API Keys
A protected Meilisearch project automatically generates four default keys: a Default Search API Key, a Default Admin API Key that Meilisearch documents as granting full access to all operations except API key management, a Default Read-Only Admin API Key with read-only access to the whole database, and a Default Chat API Key scoped to search and chatCompletions. We check which of these default keys are still in their original, broad form and where each one is actually loaded, since Meilisearch’s own guidance is not to expose an admin key on a public frontend.
Custom Key Actions and the Wildcard Permission
A custom API key’s actions array is built from a documented list of granular permissions, from search and documents.add through to keys.delete, network.update and webhooks.create, and Meilisearch’s reference is explicit that a bare * grants every one of them in a single string. We audit every custom key’s actual actions array against what the integration calling it needs, and flag any key using * or a broad *.get wildcard where a narrower, named action would do.
Index Scope and Index Pattern Restrictions
A key’s indexes array can be set to * for access to every index including ones created later, or to a prefix pattern such as movies_* that Meilisearch’s own documentation gives as a working example. We test whether a key’s index scope is actually as narrow as the application needs, and whether a wildcard pattern written for one environment quietly also matches indexes belonging to another.
Key Expiry, Immutability and Rotation
Meilisearch’s key-management guidance says the actions, indexes and expiresAt fields on an API key cannot be changed after creation, so a key issued without an expiry can never have one added later, and once expiresAt passes every request using that key returns a 403; the same guidance suggests a near-term expiry, such as 90 days, with rotation before it lapses. We test whether long-lived keys actually carry an expiry and whether rotation happens on a schedule rather than after something breaks.
Tenant Tokens as a Filtered View of a Shared Index
Meilisearch’s own documentation likens a tenant token to Algolia’s secured API keys or PostgreSQL row-level security: a JSON web token whose payload holds searchRules, an API key UID and an optional expiry, generated from a parent key to give one user a filtered view of a shared index. We test whether tenant tokens are actually used wherever multiple users or tenants share an index, using the same scoped-key questions we test on an Algolia integration.
searchRules Filters and What a Tenant Token Actually Restricts
searchRules must be a JSON object keyed by index, and Meilisearch documents it as the only thing a tenant token restricts: the search endpoint, not indexing, settings updates or API key management, which stay controlled entirely by the parent key. We test whether the filter written into searchRules actually isolates one tenant’s or user’s data, and whether an admin operation is ever reachable with a token meant only for search.
Tenant Token Signing Algorithm and Where the Signing Key Lives
Building a tenant token from scratch means setting a JWT header with HS256, HS384 or HS512, assembling the searchRules and apiKeyUid payload, then signing the result with an API key, so whichever key signs the token has to be present wherever that signing happens. We test where in your stack tokens are actually generated, since signing them anywhere a browser or mobile client can reach means shipping the parent API key to a place it was never meant to be.
Master Key Storage, Exposure and Reset
Meilisearch documents the master key as the only key with access by default to the endpoints that create and delete other API keys, and warns that exposing it can give a malicious user complete control over the instance; resetting it invalidates every API key that instance had issued. We test where the master key is stored and referenced across your deployment, and whether it is ever used for anything beyond managing other keys.
Meilisearch Cloud Project and Dashboard Key Management
Meilisearch Cloud automatically generates a master key for each project and documents this as making a Cloud project secure by default, with that master key and the four default API keys viewable from the project’s settings page under API Keys in the dashboard. We test who on your team actually holds dashboard access capable of viewing or regenerating those keys, and whether the default keys created at project setup are still the ones your application uses today.
OUR PROCESS
Meilisearch Security Review: From Scope to Attestation
Scope and Key Inventory
We agree which Meilisearch instances, Cloud projects and indexes are in scope, and collect every master key, default key, custom key and tenant-token signing key your integration actually uses.
Key and Token Mapping
We map each key’s actual actions and indexes against what the calling integration or user tier genuinely needs, and trace where every tenant token is generated and signed.
Manual Testing
A CREST-certified tester manually tests master key handling, custom key scope, tenant token generation and searchRules enforcement, chaining findings where they compound.
Attestation and Retest
You get a technical report with CVSS scores and reproduction steps, a walkthrough call, a free retest once fixes are deployed, and an attestation letter for auditors.
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 Meilisearch 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 £3,500 for a single-role, single-app scope, agreed up front. Most engagements run £5,000 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 written so your team can reference the report against each framework 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 Meilisearch Security Review Pricing
Pricing depends on the number of roles, integrations and environments in scope. See our pricing page for how we quote.
2 to 3 testing days
Single user role, basic CRUD application, marketing website with auth. Around 5 working days from kickoff to report.
Get a fixed quote3 to 4 testing days
Multi-role SaaS, business application with payment integration. Around 8 to 12 working days from kickoff to report.
Get a fixed quote4 to 6 testing days
Multi-tenant platform, complex authorisation matrix, integration-heavy applications. Around 15 to 20 working days from kickoff to report.
Get a fixed quoteSECTORS
Sectors We Test Meilisearch For
Sector-specific scoping for regulated UK organisations.
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 Meilisearch Security Review
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
What access do you need to test our Meilisearch deployment?
We need the master key or an equivalent Meilisearch Cloud project role, plus every default and custom API key in scope, and a test index or dataset we can use without affecting production search. Read access to the backend code that signs tenant tokens speeds up the review, though we can test with keys and authenticated access alone.
Will testing touch live data?
We test the indexes and application code you nominate, working against your actual keys, actions and tenant tokens rather than a copy, so we agree exclusions such as bulk document deletion or index-dropping operations before testing starts. We do not export real customer data or run destructive tests without that agreement in writing.
Do you test self-hosted Meilisearch and Meilisearch Cloud the same way?
The underlying questions are the same: what a master key protects, what each API key’s actions and indexes actually cover, and how tenant tokens filter a shared index. What differs is the boundary, since Cloud generates your master key and hosts the instance for you, so we confirm during scoping exactly what you control on your plan and test to that boundary.
What is out of scope for a single-instance Meilisearch review?
We never test Meilisearch’s own source code, its hosting infrastructure, or Meilisearch Cloud’s shared platform, and a separately hosted application that happens to query the same instance is scoped and quoted on its own. We test master key handling, API key actions and indexes, tenant token generation and searchRules enforcement for the instance or project you nominate.
Does Meilisearch have a policy on customer penetration testing?
Meilisearch publishes a security contact, security@meilisearch.com, for reporting vulnerabilities in its own software. We confirm Meilisearch’s current terms for testing your own instance or Cloud project during scoping and test within them.
Is a tenant-token, multi-tenant setup covered the same way as a single API key?
Yes: whether your application shares one Meilisearch index across multiple tenants using tenant tokens, or simply calls a search-only key from the frontend, the same questions about key actions, index scope and signing location apply. We agree during scoping which searchRules, filters and signing endpoints are in scope alongside any custom code.
How long does a Meilisearch review take?
A single Meilisearch instance or Cloud project with a limited number of indexes and key types sits in our 2-day single-instance scope, with a report typically landing around 5 working days after kickoff. More indexes, multiple projects, or a mix of self-hosted and Cloud deployments moves into a larger scope with more testing days.
Are your testers CREST certified?
Yes. Every Meilisearch engagement is carried out by UK-based, CREST-certified testers, and your report and attestation letter are recognised by auditors and insurers accordingly.
20+ CREST-accredited testing services in one place
Web, mobile, API, cloud, AI, infrastructure, red team. Pick the test that fits your environment.
Get a fixed price for your Meilisearch review
A Meilisearch API key can grant every permission through one wildcard action, invisible from the key itself. We test what each key, tenant token and master key actually reaches. CREST-certified testers, fixed price from £2,620 for a 2-day single-instance scope, quoted within 24 hours.



