/

CVE-2026-55562

Severity:

CRITICAL RISK

(9.0)

Stored XSS (CWE-79) in Cronicle Admin Activity Logs

CVE-2026-55562

Deferred

Vulnerability type

Category:

Stored Cross-Site Scripting

CWE:

CWE-79

Impact:

Administrator Session Hijacking and Command Execution

Severity:

CRITICAL RISK

(9.0)

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

Cronicle contains a stored cross-site scripting vulnerability in the administrator Activity Log because a user-controlled display name is inserted into HTML without context-appropriate output encoding. An authenticated non-administrator, or an anonymous user when self-registration is enabled, may plant a name that executes script when an administrator views the log, potentially enabling administrator session takeover and privileged command execution.

Cronicle contains a stored cross-site scripting vulnerability in the administrator Activity Log because a user-controlled display name is inserted into HTML without context-appropriate output encoding. An authenticated non-administrator, or an anonymous user when self-registration is enabled, may plant a name that executes script when an administrator views the log, potentially enabling administrator session takeover and privileged command execution.

Affected context

The issue occurs in Cronicle deployments where the administrator Activity Log renders the user full name through an HTML insertion mechanism without applying entity encoding. Exploitation depends on the attacker being able to set a user name and an administrator subsequently opening the affected log. The risk is greater when self-registration is enabled or when non-administrators can update their own profile information.

The issue occurs in Cronicle deployments where the administrator Activity Log renders the user full name through an HTML insertion mechanism without applying entity encoding. Exploitation depends on the attacker being able to set a user name and an administrator subsequently opening the affected log. The risk is greater when self-registration is enabled or when non-administrators can update their own profile information.

Exploit preconditions

  • Attack surface: Cronicle web application and administrator Activity Log
  • Required access: A valid non-administrator session with permission to update the attacker's own profile, or anonymous access to self-registration when enabled
  • Trigger point: An administrator opens the Activity Log containing the attacker-controlled user name
  • Why exploitation is possible: The stored name is concatenated into HTML without output encoding, allowing browser script execution in the administrator's session
  • Attack surface: Cronicle web application and administrator Activity Log
  • Required access: A valid non-administrator session with permission to update the attacker's own profile, or anonymous access to self-registration when enabled
  • Trigger point: An administrator opens the Activity Log containing the attacker-controlled user name
  • Why exploitation is possible: The stored name is concatenated into HTML without output encoding, allowing browser script execution in the administrator's session

Why this happens

The vulnerability results from placing attacker-controlled text directly into an HTML document through a raw HTML insertion API. Although an input filter attempts to restrict dangerous content, its pattern does not fully account for line breaks and can be bypassed. The missing context-aware output encoding maps to CWE-79: Improper Neutralization of Input During Web Page Generation, commonly known as cross-site scripting.

The vulnerability results from placing attacker-controlled text directly into an HTML document through a raw HTML insertion API. Although an input filter attempts to restrict dangerous content, its pattern does not fully account for line breaks and can be bypassed. The missing context-aware output encoding maps to CWE-79: Improper Neutralization of Input During Web Page Generation, commonly known as cross-site scripting.

Potential impact

  • An attacker may execute script in an administrator's browser session
  • The attacker could access or act on administrator-authorized application data
  • Administrative sessions may be hijacked or manipulated
  • The attacker could invoke privileged Cronicle features
  • Server-side commands or scheduled tasks could be created or modified
  • Additional users, jobs, or configuration data may be altered
  • An attacker may execute script in an administrator's browser session
  • The attacker could access or act on administrator-authorized application data
  • Administrative sessions may be hijacked or manipulated
  • The attacker could invoke privileged Cronicle features
  • Server-side commands or scheduled tasks could be created or modified
  • Additional users, jobs, or configuration data may be altered

General mitigation guidance

Mitigation generally focuses on treating profile fields and activity data as untrusted content throughout their lifecycle.

Common defensive patterns include:

  • Applying context-appropriate HTML entity encoding at the point where user names are rendered
  • Avoiding raw HTML insertion APIs for data-only values
  • Using safe DOM text-setting mechanisms when markup is not required
  • Applying strict server-side validation as a secondary control rather than relying on filtering alone
  • Restricting self-registration and profile-update capabilities according to least privilege
  • Using effective session protections and limiting administrator session authority
  • Applying a restrictive Content Security Policy where compatible with the application

Mitigation generally focuses on treating profile fields and activity data as untrusted content throughout their lifecycle.

Common defensive patterns include:

  • Applying context-appropriate HTML entity encoding at the point where user names are rendered
  • Avoiding raw HTML insertion APIs for data-only values
  • Using safe DOM text-setting mechanisms when markup is not required
  • Applying strict server-side validation as a secondary control rather than relying on filtering alone
  • Restricting self-registration and profile-update capabilities according to least privilege
  • Using effective session protections and limiting administrator session authority
  • Applying a restrictive Content Security Policy where compatible with the application

How teams detect issues like this

Organizations can look for this weakness through:

  • Static analysis rules identifying attacker-controlled values passed to raw HTML insertion functions
  • Code review checks for missing output encoding in activity feeds, audit logs, and administrative pages
  • Tests that exercise profile and registration fields with varied markup, whitespace, and line-break inputs
  • Runtime monitoring for unexpected script-like content in user profile fields
  • Policy enforcement requiring context-aware output encoding for all browser-rendered untrusted data

Automated security review tools may help identify unsafe DOM and template rendering patterns, but findings should be validated against the actual browser context.

Organizations can look for this weakness through:

  • Static analysis rules identifying attacker-controlled values passed to raw HTML insertion functions
  • Code review checks for missing output encoding in activity feeds, audit logs, and administrative pages
  • Tests that exercise profile and registration fields with varied markup, whitespace, and line-break inputs
  • Runtime monitoring for unexpected script-like content in user profile fields
  • Policy enforcement requiring context-aware output encoding for all browser-rendered untrusted data

Automated security review tools may help identify unsafe DOM and template rendering patterns, but findings should be validated against the actual browser context.

Sources

SourceLink
github.comgithub.com/jhuckaby/Cronicle/commit/8b60eb5b041614ab661df50e58e612f5e42a7d30
github.comgithub.com/jhuckaby/Cronicle/releases/tag/v0.9.119
github.comgithub.com/jhuckaby/Cronicle/security/advisories/GHSA-vh39-3pcm-2j63

Frequently asked

questions

A logged-in non-administrator may be able to exploit it by changing the attacker's own name. If self-registration is enabled, an anonymous attacker may be able to plant the value during account creation.

The malicious value generally must be rendered when an administrator opens the affected Activity Log. The administrator's browsing context is the execution environment.

Treat the name as text and apply context-aware HTML encoding before rendering it. Avoid raw HTML insertion for values that are not intended to contain markup.

Combine output encoding, safe rendering APIs, restrictive input handling, security-focused code review, and tests covering unusual whitespace and markup-like input.

A logged-in non-administrator may be able to exploit it by changing the attacker's own name. If self-registration is enabled, an anonymous attacker may be able to plant the value during account creation.

The malicious value generally must be rendered when an administrator opens the affected Activity Log. The administrator's browsing context is the execution environment.

Treat the name as text and apply context-aware HTML encoding before rendering it. Avoid raw HTML insertion for values that are not intended to contain markup.

Combine output encoding, safe rendering APIs, restrictive input handling, security-focused code review, and tests covering unusual whitespace and markup-like input.

Find out what's already
exploitable in your codebase.