CVEReports
CVEReports

Automated vulnerability intelligence platform. Comprehensive reports for high-severity CVEs generated by AI.

Product

  • Home
  • Sitemap
  • RSS Feed

Company

  • About
  • Contact
  • Privacy Policy
  • Terms of Service

© 2026 CVEReports. All rights reserved.

Made with love by Amit Schendel & Alon Barad



CVE-2026-102279

CVE-2026-102279: DOM-based Cross-Site Scripting in Laravel Exception Debug Page via Tippy.js

Amit Schendel
Amit Schendel
Senior Security Researcher

Sep 29, 2026·5 min read·37 visits

Executive Summary (TL;DR)

A DOM-based Cross-Site Scripting (XSS) flaw inside the Laravel framework exception renderer allows remote code execution in administrative sessions. The flaw triggers when debugging mode is active and a user hovers over interactive tooltips managed by Tippy.js with allowHTML enabled.

A DOM-based Cross-Site Scripting (XSS) vulnerability exists in the Laravel exception debug page rendering pipeline when APP_DEBUG=true is active. This flaw allows an attacker to execute arbitrary client-side JavaScript in the security context of an authenticated user's session when they hover over interactive code-trace tooltips handled by Tippy.js.

Vulnerability Overview

The Laravel framework exception handler contains an interactive debug interface triggered when the application runtime encounters an unhandled exception. This error-reporting pipeline is active when the configuration variable APP_DEBUG is set to true inside the environment file. It presents detailed diagnostics, including environmental parameters, exception metadata, and active stack traces with local code context.

The vulnerability is classified as a DOM-based Cross-Site Scripting (XSS) vulnerability mapping to CWE-80. It manifests inside the exception debug interface where client-side interactions occur. The component parses code snippets into tooltips to enhance usability during debugging sessions.

An external actor can exploit this mechanism by injecting client-side script payloads into fields that are subsequently rendered within an error trace. When a developer or administrator hovers over the affected tooltip element in their browser, the raw payload executes in the context of the active administrative origin.

Root Cause Analysis

The security boundary failure stems from a mismatch between server-side HTML entity encoding and the client-side retrieval of attribute values. The Laravel Blade template engine safely displays variables using double curly braces, which convert potentially harmful HTML characters into safe entities. This server-side encoding ensures that the markup structure remains intact when the browser initially loads the document.

However, the frontend utilizes Tippy.js to handle interactive tooltips dynamically. To determine what text to render inside the tooltip, Tippy.js retrieves values using the standard DOM method element.getAttribute('data-tippy-content'). Under the HTML Living Standard, calling getAttribute on an HTML node returns the value after the browser has automatically decoded the entities back into raw characters.

Because the global configuration of Tippy.js on this page explicitly set the allowHTML property to true, the library inserted the retrieved, unescaped string directly into the tooltip popup DOM tree using unsafe assignments. This sequence bypasses the original template security controls and allows a parsed HTML script block to run within the document structure.

Code Analysis

The remediation modified the Blade template file located at src/Illuminate/Foundation/resources/exceptions/renderer/components/formatted-source.blade.php. In the vulnerable state, the template used the standard data-tippy-content attribute to pass the source code string.

<!-- Vulnerable Code -->
<x-code-renderer 
    language="php"
    truncate
    class="text-xs min-w-0"
    data-tippy-content="{{ $source }}"
/>

The fix changes this attribute to data-tippy-html-content to distinguish content that needs HTML interpretation from content that requires simple text insertion. The default data-tippy-content target is then modified on the client-side.

<!-- Patched Code -->
<x-code-renderer 
    language="php"
    truncate
    class="text-xs min-w-0"
    data-tippy-html-content="{{ $source }}"
/>

Inside scripts.js, the initialization was decoupled. The global selector [data-tippy-content] is now explicitly configured with allowHTML: false, preventing any HTML parsing for standard tooltips. Only nodes marked explicitly with [data-tippy-html-content] will invoke HTML rendering, limiting the impact to trusted or isolated context fields.

Exploitation Methodology

To execute this attack, specific preconditions must be satisfied. First, the targeted Laravel installation must run in debug mode (APP_DEBUG=true). Second, the attacker must find a mechanism to inject input containing malicious scripts into an element that the application includes inside an exception trace.

This input can be passed via application parameters, HTTP request headers, or database records that trigger downstream exceptions during execution. For instance, sending structural JSON payloads that cause parsing failures can force the exception renderer to output the malformed code within the source trace container.

Once the page renders, the browser converts safe entities back into executable formats inside the DOM node. The actual exploit execution remains dormant until an authorized administrator or developer triggers the event. The payload executes when the user hovers their pointer over the interactive tooltip node containing the formatted source.

Impact Assessment

The successful exploitation of this DOM-based XSS vulnerability allows an attacker to execute arbitrary client-side JavaScript. This execution occurs within the session context of the developer or administrative user who is viewing the debug screen.

Depending on the application architecture, this access can lead to session hijacking, administrative credential theft via session storage access, or the execution of unauthorized transactions on behalf of the user. Because debug mode is frequently enabled on staging environments that share secrets with production systems, this compromise can lead to broader infrastructure access.

CVSS assigns a score of 3.1, classifying the severity as Low. This rating reflects the high attack complexity and mandatory user interaction required to trigger execution, which reduces the likelihood of automated, scalable exploitation.

Remediation & Mitigation

The primary remediation strategy is upgrading the Laravel framework. Organizations should deploy version 12.69.0 or 13.30.0 or higher depending on their major version branch. These releases include the updated Tippy.js selector division that disables HTML parsing by default.

In environments where upgrading is not immediately feasible, organizations must ensure that APP_DEBUG is set to false in all publicly accessible configurations. This disables the detailed exception rendering pipeline entirely, eliminating the attack surface.

Deploying a robust Content Security Policy (CSP) can further contain the risk. Enforcing a policy that restricts inline scripts (script-src 'self') and bans the use of unsafe-eval prevents the execution of arbitrary payloads injected through dynamic library manipulation.

Official Patches

LaravelFix commit implementing safe CSS selectors for context parsing
LaravelPull request merging the fix into the exception template pipeline

Fix Analysis (1)

Technical Appendix

CVSS Score
3.1/ 10
CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:N/I:L/A:N
EPSS Probability
0.20%
Top 91% most exploited

Affected Systems

Laravel applications running versions < 12.69.0 with active debug configurationsLaravel applications running versions >= 13.0.0 and < 13.30.0 with active debug configurations

Affected Versions Detail

Product
Affected Versions
Fixed Version
laravel/framework
Laravel
< 12.69.012.69.0
laravel/framework
Laravel
>= 13.0.0, < 13.30.013.30.0
AttributeDetail
CWE IDCWE-80
Attack VectorNetwork
CVSS Severity Score3.1 (Low)
EPSS Score0.00202 (Percentile: 9.02%)
Exploit StatusProof of Concept
CISA KEV StatusNot Listed

MITRE ATT&CK Mapping

T1204.002User Execution: Malicious Link / Interaction
Execution
T1189Drive-by Compromise
Initial Access
T1059.007Command and Scripting Interpreter: JavaScript
Execution
CWE-80
Improper Neutralization of Script-Related HTML Tags in a Web Page

Improper Neutralization of Script-Related HTML Tags in a Web Page (Basic XSS)

Vulnerability Timeline

Vulnerability patch developed and merged inside Laravel Framework source layout files.
2026-08-31
GitHub Security Advisory GHSA-jh5r-qr3c-85q8 published alongside fixed framework releases.
2026-09-28
CVE-2026-102279 published by CVE program authorizers.
2026-09-28

References & Sources

  • [1]GitHub Security Advisory GHSA-jh5r-qr3c-85q8
  • [2]NVD CVE-2026-102279 Analysis
  • [3]CVE-2026-102279 Record

Attack Flow Diagram

Press enter or space to select a node. You can then use the arrow keys to move the node around. Press delete to remove it and escape to cancel.
Press enter or space to select an edge. You can then press delete to remove it or escape to cancel.

More Reports

•30 minutes ago•GHSA-GPWC-27CW-RH9R
5.3

CVE-2026-126301: Quadratic CPU Exhaustion in NLTK LegalitySyllableTokenizer

The Natural Language Toolkit (NLTK) versions 3.6 through 3.10.3 contain an algorithmic complexity vulnerability in the LegalitySyllableTokenizer.tokenize method. When processing tokens composed of continuous runs of vowels, an unguarded string reversal and set membership lookup loop executes in quadratic time relative to the input token length. Remote attackers capable of submitting arbitrary text to applications utilizing this tokenizer can trigger sustained single-core CPU exhaustion and application-level denial of service.

Amit Schendel
Amit Schendel
1 views•10 min read
•about 2 hours ago•CVE-2026-126304
8.7

CVE-2026-126304: Symlink Path Traversal in NLTK YCOECorpusReader

CVE-2026-126304 is a symlink path traversal vulnerability (CWE-59) in the Natural Language Toolkit (NLTK) versions 3.10.0 prior to 3.10.4. The YCOECorpusReader class constructs internal sub-readers for the 'psd' and 'pos' subdirectories using FileSystemPathPointer.join(), which relies exclusively on lexical string-prefix validation rather than canonical path resolution. An attacker who supplies a crafted YCOE corpus containing symbolic links in place of the 'psd' or 'pos' subdirectories can bypass directory confinement and read arbitrary files from sibling corpora or sensitive directories within the NLTK data sandbox.

Amit Schendel
Amit Schendel
3 views•9 min read
•about 2 hours ago•CVE-2026-128077
6.5

CVE-2026-128077: Authorization Bypass via Request Path Desynchronization in Nuxt and @nuxt/nitro-server

CVE-2026-128077 (GHSA-r99w-jh2x-3mg9) is an authorization bypass and interpretation conflict vulnerability affecting Nuxt and its underlying @nuxt/nitro-server package in versions 4.6.0 through 4.6.3. When an incoming HTTP request path begins with a double forward slash (e.g., //x/admin), the WHATWG URL parser within the Nuxt server-side page renderer interprets the initial segment as a network host/authority and resolves the remaining path (/admin) against the application's page router. Because Nitro server middleware, route-scoped serverHandlers, and Nitro routeRules evaluate the unparsed request path (//x/admin), path-based access controls, redirects, and security header policies configured for /admin fail to match and are bypassed.

Amit Schendel
Amit Schendel
5 views•10 min read
•about 3 hours ago•CVE-2026-128084
4.8

CVE-2026-128084: Integer Truncation and SQL Query Truncation in sqlite3-ruby

Prior to version 2.10.2, the sqlite3-ruby gem explicitly cast 64-bit Ruby string lengths (long) to 32-bit signed integers (int) when invoking the underlying SQLite C API. On 64-bit platforms, providing a string of 4 GiB (2^32 bytes) or larger causes integer truncation, instructing SQLite to process only a prefix of the string. This flaw affects SQL query preparation, bound parameter values, and return values from custom Ruby-defined SQL functions and aggregates, allowing trailing SQL clauses such as WHERE restrictions to be silently dropped under specific conditions.

Alon Barad
Alon Barad
5 views•11 min read
•about 4 hours ago•CVE-2026-128068
5.3

CVE-2026-128068: Regular Expression Denial of Service in rails-html-sanitizer

CVE-2026-128068 (GHSA-cpgf-5mjf-73p7) is a Regular Expression Denial of Service (ReDoS) vulnerability in the rails-html-sanitizer Ruby gem affecting versions 1.0.3 through 1.7.1. The flaw resides in the Rails::HTML::PermitScrubber#scrub_attribute method, which uses the multiline regular expression /^\s*[^#\s].*/m to enforce local-only URI fragment references on SVG elements. On Ruby runtimes prior to version 3.2 (CRuby <= 3.1 and JRuby), evaluating an attribute value composed of repeated newline and whitespace characters without a hash character triggers quadratic backtracking O(n^2). Applications are only vulnerable if their sanitization allowlist is explicitly configured to permit SVG reference elements such as <use> alongside href or xlink:href attributes.

Alon Barad
Alon Barad
6 views•9 min read
•about 5 hours ago•CVE-2026-126360
5.3

CVE-2026-126360: Regular Expression Denial of Service in OpenTelemetry Python opentelemetry-api

CVE-2026-126360 (GHSA-mf5v-w3w3-f6cg) is an algorithmic complexity vulnerability (Regular Expression Denial of Service) in the trace context propagation logic of the opentelemetry-api package within the OpenTelemetry Python ecosystem. In versions prior to 1.45.2, the TraceContextTextMapPropagator.extract() method utilizes a regular expression susceptible to quadratic-time backtracking when parsing malformed W3C traceparent headers containing long sequences of whitespace followed by an embedded newline character. In Python applications—particularly those using single-threaded asynchronous event loops—an unauthenticated remote attacker transmitting payloads over newline-preserving carriers can monopolize CPU execution and induce application-level Denial of Service.

Alon Barad
Alon Barad
5 views•10 min read