SimpleHelp OIDC Authentication Bypass (CVE-2026-48558)
by J4ck3LSyN (J4ck3LSyN-Gen2) · 2026-07-05
- Severity
- Critical
- CVE
- CVE-2026-48558
- Category
- web
- Affected product
- SimpleHelp remote support / remote monitoring & management (RMM) server, OIDC authentication flow
- Affected versions
- 5.5.15 and prior, and 6.0 pre-release versions (with OIDC authentication configured); fixed in 5.5.16 / 6.0 RC2
- Disclosed
- 2026-07-05
- Patch status
- patched
Archive entry
intelseclab/poc-archiveMetadata
| Field | Value |
|---|---|
| Date Added | 2026-07-05 |
| Last Updated | 2026-07 |
| Author / Researcher | J4ck3LSyN (J4ck3LSyN-Gen2) |
| CVE / Advisory | CVE-2026-48558 |
| Category | web |
| Severity | Critical |
| CVSS Score | ~9.8–10.0 (per source, exact vendor score not confirmed) |
| Status | PoC |
| Tags | simplehelp, oidc, jwt, alg-none, auth-bypass, rmm, remote-support, cisa-kev |
| Related | N/A |
Affected Target
| Field | Value |
|---|---|
| Software / System | SimpleHelp remote support / remote monitoring & management (RMM) server, OIDC authentication flow |
| Versions Affected | 5.5.15 and prior, and 6.0 pre-release versions (with OIDC authentication configured); fixed in 5.5.16 / 6.0 RC2 |
| Language / Platform | SimpleHelp server (target); PoC written in Python 3 (requests, PyJWT) |
| Authentication Required | No (unauthenticated attacker forges credentials) |
| Network Access Required | Yes |
Summary
When OIDC authentication is enabled, SimpleHelp accepts identity tokens (ID Tokens/JWTs) at its OIDC callback endpoint without verifying their cryptographic signature — including tokens using alg: none. A remote, unauthenticated attacker can forge a JWT with arbitrary claims, including group memberships, and submit it to the callback endpoint to create an authenticated session as a privileged Technician user, potentially bypassing MFA. The PoC (poc.py) automates discovery of the OIDC callback endpoint, token forging, and submission of the forged token to obtain a privileged session.
Vulnerability Details
Root Cause
SimpleHelp’s OIDC token validation logic fails to enforce JWT signature verification: tokens with alg: none (no signature) or otherwise invalid signatures are accepted. Additionally, claims such as iss, aud, and exp are insufficiently validated in certain flows. When a Technician group is configured with “Allow group authenticated logins,” a forged token asserting membership in that group results in a fully authenticated, privileged session.
Attack Vector
- Attacker identifies a SimpleHelp server with OIDC authentication enabled and locates (or brute-force-discovers) its OIDC callback endpoint (e.g.
/auth/oidc/callback). - Attacker crafts a JWT with
alg: none, populating claims such asiss,aud,sub,email,name, andgroups(e.g. including a Technician group name) — no valid signature is required. - Attacker POSTs the forged token as
id_tokento the OIDC callback endpoint. - The server accepts the token without verifying its signature or fully validating its claims, and establishes an authenticated session with Technician-level privileges for the attacker.
- Attacker uses the resulting session to access managed endpoints, execute scripts, harvest credentials, or establish persistence.
Impact
Full unauthenticated compromise of the SimpleHelp Technician role, granting remote control over all endpoints managed by the SimpleHelp instance, script execution capability, credential access, and persistence. This vulnerability has been added to CISA’s Known Exploited Vulnerabilities (KEV) catalog and has reportedly been used in the wild to deploy additional malware (e.g. loaders/stealers per the source README).
Environment / Lab Setup
Target: SimpleHelp server <= 5.5.15 or 6.0 pre-release, with OIDC authentication configured
Attacker: Python 3.6+ with `requests` and `PyJWT` installed
Proof of Concept
PoC Script
See
poc.pyin this folder.
| |
The script attempts to auto-discover the OIDC callback endpoint (or accepts a manual --callback override), forges an unsigned (alg: none) or HS256-signed JWT with attacker-chosen issuer/audience/subject/email/name/group claims, and POSTs it as id_token to the callback. On success it reports the HTTP response, any authentication cookies returned, and saves them to session.json.
Detection & Indicators of Compromise
Signs of compromise:
- Newly created Technician accounts with unfamiliar email addresses or names
- OIDC callback requests bearing unsigned (
alg: none) or otherwise invalid JWTs - Configuration changes or login events from unrecognized sources in server logs
Remediation
| Action | Detail |
|---|---|
| Primary fix | Upgrade to SimpleHelp 5.5.16 (5.5 branch) or 6.0 RC2 or later (6.0 branch), which enforce proper OIDC token signature verification |
| Interim mitigation | Disable OIDC authentication entirely until patched; restrict server access via firewall/VPN/IP allowlisting; audit Technician accounts and authentication logs for anomalies |
References
- Source repository
- https://simple-help.com/security/simplehelp-security-update-2026-05
- https://nvd.nist.gov/vuln/detail/CVE-2026-48558
Notes
Mirrored from https://github.com/J4ck3LSyN-Gen2/CVE-2026-48558 on 2026-07-05. The upstream repo’s warning banner references an unrelated Chrome-sandbox RCE (CVE-2026-6307) — this appears to be a copy/paste artifact from a template and does not describe this vulnerability; this README is based on the actual poc.py code and the SimpleHelp OIDC-bypass description found in the repo.
| |