Description
SpecifyJS is a declarative TypeScript user interface framework. Prior to version 0.2.136, CSS value sanitization stripped `expression(` and `url(javascript:` using simple regex, but could be bypassed with CSS unicode escapes (`\65xpression(`), null bytes, or CSS comments (`exp/**/ression(`). These CSS injection vectors only work in legacy browsers (IE6-IE10). SpecifyJS targets modern browsers. Starting in version 0.2.136, CSS sanitization now normalizes unicode escapes and strips CSS comments before pattern matching. Also checks for `behavior:`, `-moz-binding`, and `-o-link` patterns.
Published: 2026-08-21
Score: 5.3 Medium
EPSS: < 1% Very Low
KEV: No
Impact: CSS Injection
Action: Apply Patch
AI Analysis

Impact

SpecifyJS, a TypeScript UI framework, performed CSS sanitization that removed literal expression( and url(javascript:( patterns using a simple regex. Attackers could bypass this mitigation via Unicode escapes, null bytes, or CSS comments, allowing CSS injection in legacy browsers (IE6‑IE10). The vulnerability was rated moderate with CVSS 5.3. Bypassing sanitization exposes the application to style injection that could compromise UI integrity or, in worst‑case scenarios, data leakage if CSS executed user‑supplied scripts.

Affected Systems

Vulnerable releases are those of the asymmetric‑effort:specifyjs product preceding 0.2.136. Any application that integrates specifyjs version 0.2.135 or older is at risk. The fix is included starting with 0.2.136, which normalizes unicode escapes, removes comments before matching, and checks additional patterns such as behavior:, -moz-binding, and -o-link.

Risk and Exploitability

The attack surface is restricted to environments running legacy Internet Explorer variants, as modern browsers ignore the expression() and javascript: constructs. Because SpecifyJS is intended for modern browsers, the practical exploitability in current deployments is low. EPSS data is unavailable and the vulnerability is not listed in CISA KEV, further indicating limited active exploitation. However, any legacy browser support should be treated cautiously until the application is upgraded.

Generated by OpenCVE AI on August 21, 2026 at 21:39 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade specifyjs to 0.2.136 or later to apply the corrected CSS sanitization.
  • Verify that the application does not serve specifyjs to legacy browsers by configuring your CDN or reverse proxy to block IE6‑IE10 user agents.
  • Implement an additional CSS sanitization layer that normalizes Unicode escapes and strips comments before rendering.

Generated by OpenCVE AI on August 21, 2026 at 21:39 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-93q6-wwjh-jc6h @asymmetric-effort/specifyjs: CSS expression sanitization is bypassable in renderToString
History

Sun, 23 Aug 2026 16:45:00 +0000

Type Values Removed Values Added
First Time appeared Asymmetric-effort
Asymmetric-effort specifyjs
Vendors & Products Asymmetric-effort
Asymmetric-effort specifyjs

Fri, 21 Aug 2026 20:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Fri, 21 Aug 2026 20:00:00 +0000

Type Values Removed Values Added
Description SpecifyJS is a declarative TypeScript user interface framework. Prior to version 0.2.136, CSS value sanitization stripped `expression(` and `url(javascript:` using simple regex, but could be bypassed with CSS unicode escapes (`\65xpression(`), null bytes, or CSS comments (`exp/**/ression(`). These CSS injection vectors only work in legacy browsers (IE6-IE10). SpecifyJS targets modern browsers. Starting in version 0.2.136, CSS sanitization now normalizes unicode escapes and strips CSS comments before pattern matching. Also checks for `behavior:`, `-moz-binding`, and `-o-link` patterns.
Title @asymmetric-effort/specifyjs: CSS expression sanitization is bypassable in renderToString
Weaknesses CWE-79
References
Metrics cvssV4_0

{'score': 5.3, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N'}


Subscriptions

Asymmetric-effort Specifyjs
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-08-21T20:07:10.712Z

Reserved: 2026-06-04T16:26:05.986Z

Link: CVE-2026-50290

cve-icon Vulnrichment

Updated: 2026-08-21T20:07:06.308Z

cve-icon NVD

Status : Received

Published: 2026-08-21T20:16:36.220

Modified: 2026-08-21T21:16:59.697

Link: CVE-2026-50290

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-23T16:40:49Z

Weaknesses
  • CWE-79

    Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')