Appsmith Penetration Testing
Every Appsmith query executes with its datasource’s stored credentials, not the credentials of the person running it. We test what each role, datasource, public link and self-hosted setting can actually reach. CREST-certified testers, fixed price from £2,270 for a 2-day single-app 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.”
A datasource is Appsmith’s stored connection to a database, API or service, and every query attached to it runs with that connection’s saved credentials, not the credentials of whoever is using the app.
The datasource’s saved credentials decide what a query can reach, not the role that triggered it
Appsmith workspaces run on Granular Access Control, a permission system Appsmith gates behind its Business plan below the instance-wide Organization Administrator role. Every user gets one of a small set of default roles, Workspace Administrator, Developer or App Viewer, or a custom role built on the same model, and each grants a different set of Create, Edit, Delete, View and Execute rights over apps, pages, queries, datasources and environments. Making an app public sits on its own permission, separate from the rest: Appsmith’s own reference confirms a Workspace Developer can create, edit and delete everything inside an app but cannot make it public or export it, so that ability has to be granted, or withheld, deliberately. We map every role and custom role in scope against what its Make Public, Export and per-environment permissions actually allow, rather than assuming the workspace hierarchy matches the org chart.
A datasource is Appsmith’s stored connection to a database, API or other service, and every query attached to it runs with that connection’s saved credentials rather than the credentials of the person using the app. Appsmith’s own security documentation is explicit that the server appends those credentials to the request immediately before it reaches the backend, so they are never sent to the browser, and that an existing secret cannot be viewed again once saved, only replaced. SQL queries take {{ }} values from widgets and other queries, and Appsmith enables prepared statements for every SQL query by default specifically to stop that widget input being used to inject SQL. The setting has to be turned off wherever a query needs a dynamic table name or a dynamic query structure built from a widget’s value, since a prepared statement cannot represent either. We test which queries carry that exception, whether the resulting input is validated some other way, and what the underlying datasource credential can actually do once a query built from user input reaches it.
Logic written into a JS Object runs in the browser, and Appsmith’s own security guidance is direct about what that means: users can open browser developer tools and read it, so a permission check or a hidden feature flag written only in client-side JavaScript is not a control, it is a suggestion. The same guidance warns against holding sensitive values in Appsmith’s storeValue() function, since that data sits in the browser’s local storage and can be inspected the same way. Self-hosted instances add their own configuration layer on top of this: the APPSMITH_ENCRYPTION_PASSWORD and APPSMITH_ENCRYPTION_SALT environment variables protect every stored datasource credential, and APPSMITH_SIGNUP_DISABLED or APPSMITH_SIGNUP_ALLOWED_DOMAINS decide whether an uninvited account can join the instance at all. On Appsmith Cloud those settings are managed for you; self-hosted, they are configuration your own team has to set correctly. We test the client’s JavaScript logic and storage use, and, where self-hosted, the environment configuration actually deployed, rather than treating either platform’s defaults as sufficient on their own.
SCOPE
What we pen test on an Appsmith application
Default Roles and the Workspace Permission Hierarchy
Every user in an Appsmith workspace holds a default role, Workspace Administrator, Developer or App Viewer, or an instance-wide Organization Administrator role, and each carries its own Create, Edit, Delete, View and Execute rights over apps, pages, queries, datasources and environments. We map every account in scope against its actual role rather than the title it was given, since the permission tables for these roles differ in ways that are easy to assume rather than check.
Custom Roles and Granular Access Control
On the Business plan, Granular Access Control lets an administrator build custom roles that grant or remove access at the level of a single page, query, datasource or environment rather than an entire workspace. We test whether a custom role built to restrict one page or datasource actually holds that line, or whether a permission inherited from a parent resource reopens the access the role was built to remove.
The Make Public Permission and Public App Links
Making an app public is its own permission in Appsmith, separate from Create, Edit, Delete, View and Execute, and Appsmith’s own documentation confirms a Developer role does not hold it by default, only Administrator. We test which roles in your workspace actually carry that permission, and, for any app that is public, what an unauthenticated visitor with the link can reach.
Datasource Credentials Behind Every Query
A datasource is Appsmith’s stored connection to a database, API or other service, and every query attached to it runs with that connection’s saved credentials rather than the credentials of the person using the app. We test what those credentials can actually do against the underlying system, since that ceiling, not the app’s interface, is what a compromised or chained query can reach.
Datasource Environments Shared Across a Workspace
Datasource environments work at the workspace level, so every application inside a workspace shares the same Production and Staging configuration for a given datasource, along with whatever permissions were granted per environment. We test whether an account granted access to Staging has, through that shared configuration, picked up Production too.
Prepared Statements and Widget-Driven Query Input
Appsmith enables prepared statements for every SQL query by default specifically to stop values pulled from widgets and other queries being used to inject SQL, but the setting has to be turned off wherever a query needs a dynamic table name or a dynamic query structure built from a widget’s selection. We test every query for that exception, whether the resulting input is validated some other way, and what it can do once it runs.
Datasource Secrets and Who Can See or Edit Them
Once a datasource secret is saved, Appsmith will not display its current value again, even to a user with Edit access; the value can only be replaced, not read back. We test who in your workspace holds Edit or Create access to which datasources, since that access lets someone repoint or reconfigure a connection without ever needing to see the credential it holds.
Role Checks and Query Restrictions Enforced Client-Side
Appsmith’s own guidance for restricting query access shows role checks such as appsmith.user.role used to conditionally hide a widget or gate a query from within the app itself. We test whether that same restriction is also enforced at the datasource or query permission level, since a condition written only into the app’s logic can be bypassed by anyone who can reach the underlying query directly.
JS Objects and Client-Side Logic
Functions and variables defined in a JS Object run in the browser, and Appsmith is explicit that this means anyone can open browser developer tools and read that code, including any check or feature flag written into it. We test what a JS Object’s logic actually controls, and whether it or the app’s storeValue() calls hold data that should not sit in the browser’s local storage, since that is visible the same way.
Self-Hosted Configuration vs Appsmith Cloud
Self-hosted, your team sets the APPSMITH_ENCRYPTION_PASSWORD and APPSMITH_ENCRYPTION_SALT values that protect every stored datasource credential, and the APPSMITH_SIGNUP_DISABLED or APPSMITH_SIGNUP_ALLOWED_DOMAINS settings that decide whether an uninvited account can join the instance at all. On Appsmith Cloud, Appsmith manages that configuration and hosting; self-hosted, we test the environment configuration actually deployed alongside the apps, roles and datasources built on top of it.
OUR PROCESS
Appsmith Application Penetration Testing: From Scope to Attestation
Scope and Datasource Mapping
We agree the apps, workspaces and datasources in scope, and catalogue every role, custom role, environment and public link connected to them before testing starts.
Role-by-Role Authenticated Testing
We test from an account in every role and custom role in scope, comparing what each one’s interface allows against what its underlying datasource and environment permissions actually permit.
Manual Exploitation
A CREST-certified tester manually tests datasource credential scope, query and prepared statement configuration, JS Object logic and public app exposure, chaining findings where they compound.
Reporting 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 Appsmith 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 Appsmith Application Penetration Testing 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 Appsmith 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 Appsmith Application 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
What access do you need to test our Appsmith apps?
A test account in each role or custom role you want covered, from App Viewer up to Workspace Administrator, plus visibility of the datasources those apps query so we can see what each one is configured to reach. We do not need your production datasource credentials directly; credentials scoped to a staging or test datasource are enough where one exists.
Will this touch our live data?
No. Where a staging datasource environment or a cloned dataset exists, we test against that. Where only a production datasource is available, any check that could alter data is agreed and scoped with you in advance, and read-only checks are logged as they run.
How long does an Appsmith application penetration test take?
A single-app engagement is scoped at 2 testing days as a starting point, rising with the number of roles, datasources and environments connected to the app. Reporting and a walkthrough call follow testing, with a free retest once fixes are deployed.
Is self-hosted Appsmith tested differently from Appsmith Cloud?
Yes. Self-hosted, the environment configuration sits in scope alongside the apps, including the encryption settings that protect stored datasource credentials and the settings that control who can create an account, since your team owns that configuration rather than Appsmith. On Appsmith Cloud, testing concentrates on the apps, roles, datasources and public links you control, since Appsmith operates the underlying infrastructure.
What is out of scope?
Appsmith’s own cloud infrastructure and platform code are out of scope; that sits with Appsmith’s own security programme, not this engagement. We test the apps, roles, custom roles, datasources, JS Objects and public links you have built and configured, on Appsmith Cloud or self-hosted.
Does Appsmith have a policy for customers testing their own instance?
We confirm Appsmith’s current terms with you during scoping, particularly for any testing that could touch shared Appsmith Cloud infrastructure rather than a self-hosted deployment you control outright.
Do you test JS Objects and other client-side logic as well as queries?
Yes. JS Object functions and any visibility or role condition written into the app’s widgets execute in the browser, so we test what that logic actually enforces against what the underlying datasource and query permissions enforce independently, plus what a user could reach by bypassing the JavaScript altogether.
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 Appsmith application
Every Appsmith query executes with its datasource’s stored credentials, not the credentials of the person running it. We test what each role, datasource, public link and self-hosted setting can actually reach. CREST-certified testers, fixed price from £2,270 for a 2-day single-app scope, quoted within 24 hours.



