Sceawere

Vulnerability Detail

CVE-2026-49452UPDATED Verified Sceawere Triage Sources: NVD / CISA KEV

WeasyPrint CSS Injection Vulnerability

Vulnerability Metadata

Severity
Medium
Score / CVSS
6.5
Creation Date
4h ago
Vendor
Kozea
Product
WeasyPrint
Attack Type
CWE-74: Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection')
Vector String
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:N
Attack Complexity
LOW

Narrative and Response

Description

WeasyPrint helps web developers to create PDF documents. Prior to 69.0, WeasyPrint embeds unescaped HTML presentational-hint attribute values into CSS in weasyprint/css/__init__.py when presentational_hints=True. The background attribute is inserted into a background-image:url() declaration and parsed by tinycss2.parse_blocks_contents(), allowing untrusted HTML to inject additional CSS declarations. Applications that render untrusted HTML with presentational hints enabled can be affected by CSS injection and server-side requests through injected url() values. This issue is fixed in version 69.0.

Executive Summary

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Executive Summary Locked

Sign up to unlock professional threat analysis, mitigations, and indicator signatures.

Technical Details

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Detailed Technical Analysis Locked

Sign up to unlock professional threat analysis, mitigations, and indicator signatures.

Mitigations

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Remediation & Mitigations Locked

Sign up to unlock professional threat analysis, mitigations, and indicator signatures.

References

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.

Intelligence References Locked

Sign up to unlock professional threat analysis, mitigations, and indicator signatures.

Additional Metadata

{
  "score": "6.5",
  "pubDate": "2026-08-18T18:17:49.147Z",
  "pubdate": "2026-08-18T18:17:49.147Z",
  "executiveSummary": "An unescaped attribute injection vulnerability exists in WeasyPrint prior to version 69.0, specifically within the processing of HTML presentational-hint attribute values. The flaw is categorized as a CSS injection vulnerability that can lead to server-side request anomalies via arbitrary URL loading. The impact allows malicious entities to inject arbitrary CSS declarations and execute unintended server-side requests when parsing untrusted HTML inputs. Affected systems include applications utilizing WeasyPrint prior to version 69.0 with presentational_hints enabled. The risk implications involve potential layout disruption, data exfiltration through CSS side-channels, and server-side request forgery (SSRF) primitives. Attacker capabilities require the ability to supply untrusted HTML containing malicious presentational-hint attribute values, such as the background attribute. Exploitation requirements mandate that the rendering context has presentational_hints set to True while processing untrusted HTML content, triggering the insecure embedding mechanism into the generated style context.",
  "technicalDetails": "The root cause of the vulnerability resides in weasyprint/css/__init__.py, where unescaped HTML presentational-hint attribute values are improperly embedded directly into CSS generation routines when presentational_hints=True. Specifically, the background attribute is concatenated into a background-image:url() CSS declaration without adequate sanitization or escaping.\nThe vulnerable component is the CSS generation and parsing pipeline within WeasyPrint, specifically utilizing tinycss2.parse_blocks_contents() to evaluate the constructed style blocks. Affected versions include all releases of WeasyPrint prior to version 69.0.\nAuthentication and privilege requirements depend entirely on the host application architecture that integrates WeasyPrint; however, the vulnerability itself can be triggered remotely if the application exposes an endpoint that renders untrusted user-supplied HTML over the network.\nThe exploitation method follows a distinct attack flow. First, an attacker supplies malicious, untrusted HTML containing crafted presentational-hint attribute values, such as a specially formatted background attribute designed to break out of the intended property context. Because WeasyPrint inserts these values without escaping, the injected payload introduces arbitrary CSS declarations into the style stream.\nWhen tinycss2.parse_blocks_contents() processes the resulting stylesheet, the injected CSS declarations are successfully parsed and applied by the rendering engine. Furthermore, by injecting malicious url() values within the background-image declaration, the attacker can force the server running WeasyPrint to initiate outbound network requests to arbitrary destinations specified in the payload.\nThe post-exploitation impact includes unauthorized server-side requests originating from the hosting infrastructure, potentially leading to internal network scanning, interaction with sensitive metadata services, or denial of service, alongside localized stylesheet manipulation and potential data exfiltration vectors."
}
CVE-2026-49452: WeasyPrint CSS Injection Vulnerability (MEDIUM Severity, CVSS: 6.5) - Sceawere