/

CVE-2026-55872

Severity:

HIGH RISK

(8.7)

Stored XSS (CWE-79) in GYM One Admin User Interface

CVE-2026-55872

Deferred

Vulnerability type

Category:

Stored Cross-Site Scripting

CWE:

CWE-79

Impact:

Administrator Session and Action Compromise

Severity:

HIGH RISK

(8.7)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

GYM One contains a stored cross-site scripting vulnerability in the administrator user list because profile fields are rendered without HTML output encoding. An attacker who can save a crafted first name, last name, or email value may cause script to execute in an administrator's browser when the user-management page is viewed, potentially enabling actions with that administrator's privileges.

GYM One contains a stored cross-site scripting vulnerability in the administrator user list because profile fields are rendered without HTML output encoding. An attacker who can save a crafted first name, last name, or email value may cause script to execute in an administrator's browser when the user-management page is viewed, potentially enabling actions with that administrator's privileges.

Affected context

The issue occurs in GYM One deployments where an attacker can create or modify user profile fields and an administrator later visits the user-management interface. The affected values are rendered in /admin/users/ without context-appropriate HTML encoding, allowing stored content to be interpreted as browser script rather than displayed strictly as data.

The issue occurs in GYM One deployments where an attacker can create or modify user profile fields and an administrator later visits the user-management interface. The affected values are rendered in /admin/users/ without context-appropriate HTML encoding, allowing stored content to be interpreted as browser script rather than displayed strictly as data.

Exploit preconditions

  • Attack surface: The administrator user-list page in the web application
  • Required access: Permission to create or modify a record containing the affected profile fields, or another trusted workflow that stores attacker-controlled values
  • Trigger point: An administrator viewing /admin/users/
  • Why exploitation is possible: Stored input is inserted into an HTML response without output encoding, allowing browser-interpreted script content to persist until the record is removed or corrected
  • Attack surface: The administrator user-list page in the web application
  • Required access: Permission to create or modify a record containing the affected profile fields, or another trusted workflow that stores attacker-controlled values
  • Trigger point: An administrator viewing /admin/users/
  • Why exploitation is possible: Stored input is inserted into an HTML response without output encoding, allowing browser-interpreted script content to persist until the record is removed or corrected

Why this happens

The underlying bug is a failure to apply context-appropriate output encoding when rendering stored user-controlled values in an HTML page. Because first name, last name, and email fields are treated as trusted markup rather than encoded data, specially crafted content can be interpreted as script by an administrator's browser. This behavior maps to CWE-79: Improper Neutralization of Input During Web Page Generation, commonly called cross-site scripting.

The underlying bug is a failure to apply context-appropriate output encoding when rendering stored user-controlled values in an HTML page. Because first name, last name, and email fields are treated as trusted markup rather than encoded data, specially crafted content can be interpreted as script by an administrator's browser. This behavior maps to CWE-79: Improper Neutralization of Input During Web Page Generation, commonly called cross-site scripting.

Potential impact

  • An attacker may access data available to the administrator's browser session
  • Malicious script could perform actions available to the administrator
  • Administrative settings or user records could be changed
  • The application may experience unauthorized account or data manipulation
  • Persistent content could affect multiple administrators who view the affected record
  • An attacker may access data available to the administrator's browser session
  • Malicious script could perform actions available to the administrator
  • Administrative settings or user records could be changed
  • The application may experience unauthorized account or data manipulation
  • Persistent content could affect multiple administrators who view the affected record

General mitigation guidance

Mitigation generally focuses on treating all profile fields as untrusted at the point of output.

Common defensive patterns include:

  • Apply context-aware HTML output encoding to every user-controlled value rendered in the administrator interface
  • Prefer framework templating systems that escape output by default
  • Validate and constrain field formats where business requirements permit, while not relying on validation as a substitute for encoding
  • Avoid rendering user-controlled values as raw HTML or executable browser content
  • Use restrictive Content Security Policy controls as defense in depth
  • Limit administrative privileges and session scope so a successful browser-side injection has less reach
  • Provide workflows for identifying, correcting, and removing previously stored malicious values

Mitigation generally focuses on treating all profile fields as untrusted at the point of output.

Common defensive patterns include:

  • Apply context-aware HTML output encoding to every user-controlled value rendered in the administrator interface
  • Prefer framework templating systems that escape output by default
  • Validate and constrain field formats where business requirements permit, while not relying on validation as a substitute for encoding
  • Avoid rendering user-controlled values as raw HTML or executable browser content
  • Use restrictive Content Security Policy controls as defense in depth
  • Limit administrative privileges and session scope so a successful browser-side injection has less reach
  • Provide workflows for identifying, correcting, and removing previously stored malicious values

How teams detect issues like this

Organizations can look for this class of issue through:

  • Static analysis rules identifying unescaped database or request values in HTML templates and response construction
  • Code review checks for raw-output helpers, disabled template escaping, and direct concatenation into HTML
  • Dynamic testing that stores harmless markup markers in profile fields and verifies they are encoded when displayed
  • Regression tests covering every administrator-facing view that renders user-controlled data
  • Content Security Policy reporting and web-application monitoring for unexpected script activity
  • Automated security review tools that flag data flows from persistence layers to browser-rendered output without encoding

Organizations can look for this class of issue through:

  • Static analysis rules identifying unescaped database or request values in HTML templates and response construction
  • Code review checks for raw-output helpers, disabled template escaping, and direct concatenation into HTML
  • Dynamic testing that stores harmless markup markers in profile fields and verifies they are encoded when displayed
  • Regression tests covering every administrator-facing view that renders user-controlled data
  • Content Security Policy reporting and web-application monitoring for unexpected script activity
  • Automated security review tools that flag data flows from persistence layers to browser-rendered output without encoding

Sources

SourceLink
github.comgithub.com/mayerbalintdev/GYM-One/commit/d3a0cf134f0ab3ac12aee7dca283b93c4290dcc4
github.comgithub.com/mayerbalintdev/GYM-One/releases/tag/V1.4.1
github.comgithub.com/mayerbalintdev/GYM-One/security/advisories/GHSA-75g9-vp9w-5388

Frequently asked

questions

It can be exploitable through the web application when an attacker has a permitted way to store or modify affected profile fields and an administrator later views the user list.

Not necessarily. The key requirement is the ability to submit data that is stored in one of the vulnerable fields. The impact depends on the permissions available to the administrator who views the record.

Encode every stored value according to its output context, use auto-escaping templates, and ensure user-controlled data is never emitted as raw HTML or script.

Combine secure-by-default templating, input-flow review, regression tests for stored content, Content Security Policy defense in depth, and least-privilege administrative sessions.

It can be exploitable through the web application when an attacker has a permitted way to store or modify affected profile fields and an administrator later views the user list.

Not necessarily. The key requirement is the ability to submit data that is stored in one of the vulnerable fields. The impact depends on the permissions available to the administrator who views the record.

Encode every stored value according to its output context, use auto-escaping templates, and ensure user-controlled data is never emitted as raw HTML or script.

Combine secure-by-default templating, input-flow review, regression tests for stored content, Content Security Policy defense in depth, and least-privilege administrative sessions.

Find out what's already
exploitable in your codebase.