GHSA-j9gf-vw2f-9hrwHigh· 8.1▾ TwilightAppsmith: Configuration-dependent origin validation bypass in password reset and email verification link generation
▾ Twilight zone — High severity, or a signal on a lesser flaw
impact 44.6 · likelihood 0 · exploitation 0
Need a working PoC? Pro members can cast a request and our team develops one — it lands right here.
A configuration-dependent origin validation bypass was identified in Appsmith’s password reset and email verification flows on current release.
Both flows derive the email-link base URL from the request Origin header. The current validation only enforces a trusted base URL when APPSMITH_BASE_URL is configured. If that setting is unset, the application accepts the caller-supplied origin and uses it to generate token-bearing reset and verification links.
On deployments with email delivery enabled and APPSMITH_BASE_URL unset, this can cause Appsmith to send security-sensitive links whose clickable host is attacker-controlled, which can plausibly lead to account takeover after victim interaction.
The current release head at commit e77639eca4974469c1e676904851ffdaedd38111 was reviewed.
The relevant routes are publicly reachable in SecurityConfig.java:
POST /forgotPassword is permitted without authentication at line 209POST /resendEmailVerification is permitted without authentication at line 228In UserControllerCE.java, both flows copy the request Origin header into the DTO field used as the email-link base URL:
forgotPasswordRequest(...) at lines 91-94resendEmailVerification(...) at lines 189-193In UserServiceCEImpl.java, base URL validation is conditional:
@Value("${APPSMITH_BASE_URL:}") at line 113resolveSecureBaseUrl(...) at lines 132-145That method explicitly documents and implements this behavior:
APPSMITH_BASE_URL is configured, the provided URL must match itAPPSMITH_BASE_URL is unset, the provided URL is accepted for backward compatibilityThe resulting base URL is then used to construct token-bearing links:
FORGOT_PASSWORD_CLIENT_URL_FORMAT at line 149282-289EMAIL_VERIFICATION_CLIENT_URL_FORMAT at line 152931-940This means the base URL is not only used for branding or display purposes. It directly controls the clickable host of security-sensitive reset and verification links.
Note that the admin UI describes APPSMITH_BASE_URL as required for password reset and email verification links in:
app/client/src/ce/pages/AdminSettings/config/configuration.tsx at lines 41-49The reviewed self-host material indicates this protection is not fail-closed by default, which makes the vulnerable condition realistic on existing deployments where operators have not set APPSMITH_BASE_URL.
These steps were designed for validation on an Appsmith deployment that I own or am explicitly authorized to test.
release, or any build containing the affected code.APPSMITH_BASE_URL unset or blank.[email protected].Origin header:curl -i -X POST 'https://YOUR-INSTANCE/api/v1/users/forgotPassword' \
-H 'Content-Type: application/json' \
-H 'Origin: https://attacker.example' \
--data '{"email":"[email protected]"}'
https://attacker.example/... instead of the legitimate Appsmith host.curl -i -X POST 'https://YOUR-INSTANCE/api/v1/users/resendEmailVerification' \
-H 'Content-Type: application/json' \
-H 'Origin: https://attacker.example' \
--data '{"email":"[email protected]"}'
https://attacker.example/....APPSMITH_BASE_URL=https://YOUR-INSTANCE, restart the server, and repeat the same requests.Origin is rejected, or the generated links no longer follow the forged request header.Live tokens, third-party data, or unsafe exploitation material was not included in this report. The attached archive contains source excerpts, data-flow proof, safe validation notes, and supporting evidence collected from the reviewed current branch.
This is a trust-boundary failure in token-bearing email authentication flows.
Affected deployments are those where:
APPSMITH_BASE_URL is unset or blankAttacker requirements are low:
Security impact:
resolveSecureBaseUrl(...) that accepts caller-supplied origin data when APPSMITH_BASE_URL is unset.appsmith-email-link-origin-validation-bypass-20260321.zip
com.appsmith:server < 2.0Upgrade to a patched release:
com.appsmith:server 2.0Connected by shared product, vendor, weakness, or advisory.
GHSA-9wcp-79g5-5c3cHigh· 8.1Appsmith Super User Creation Race Condition Allows Multiple Instance Administrators
CVE-2026-44649Critical· 9.8SillyTavern is a locally installed user interface that allows users to interact with text generation large language models, image generation engines, and text-to-speech voice models
GHSA-x845-2f78-7v36High· 8.6Blocky DNSSEC validation bypass and validation-cache scope pollution
CVE-2026-54665Medium· 5.3Apache NiFi fails to validate proxy host headers when constructing qualified URLs
CVE-2026-56746High· 7.5io.netty/netty-codec-http: Netty: Security control bypass allows unauthorized requests via null origin header (CVE-2026-56746)
CVE-2026-47691High· 8.7Netty is a network application framework for development of protocol servers and clients