The DOMino Effect: Automated Detection and Exploitation of DOM Clobbering Vulnerability at Scale
This talk presents HULK, an automated analysis framework designed to detect and exploit DOM Clobbering vulnerabilities at scale using dynamic taint analysis and concolic execution. The researchers demonstrate how DOM Clobbering can be chained with HTML injection to achieve cross-site scripting (XSS) and cross-site request forgery (CSRF) in popular client-side libraries and web applications. The study highlights the prevalence of these vulnerabilities in modern web bundlers and frameworks, providing a dataset of 497 zero-day exploitable gadgets. The presentation concludes with a demonstration of 12 end-to-end exploits against real-world applications like JupyterLab and Canvas LMS.
Automating DOM Clobbering: How HULK Finds Zero-Days at Scale
TLDR: Researchers have released HULK, an automated analysis framework that uses dynamic taint analysis and concolic execution to detect and exploit DOM Clobbering vulnerabilities. By chaining these gadgets with HTML injection, the team successfully demonstrated end-to-end exploits against major platforms like JupyterLab and Canvas LMS. This research proves that DOM Clobbering is far more prevalent in modern client-side libraries than previously assumed, and it provides a roadmap for researchers to find similar bugs in their own targets.
Modern web applications are increasingly built on complex, multi-layered client-side architectures. While developers focus on securing server-side endpoints, the client-side often becomes a graveyard of forgotten security assumptions. DOM Clobbering is one of those classic vulnerabilities that has been relegated to the "too hard" pile for years. It is notoriously difficult to track manually, especially when dealing with minified, bundled JavaScript. The research presented at DEF CON 2025 changes that by shifting the burden of discovery from the researcher to an automated framework.
The Mechanics of the Clobber
At its core, DOM Clobbering exploits the browser's legacy behavior of creating global variables on the window or document object based on the id or name attributes of HTML elements. If an application relies on a global variable that is not explicitly defined, an attacker can inject an HTML element with a matching id to "clobber" that variable.
The real danger arises when this clobbered variable is used in a sensitive context, such as a script source or a configuration object. The researchers behind HULK identified that this is not just a theoretical risk. By using dynamic taint analysis, they can track how these clobbered values flow through the application logic to reach dangerous sinks. This approach bypasses the limitations of static analysis, which often fails to resolve the dynamic, aliased nature of modern JavaScript objects.
From Clobbering to Execution
Exploiting DOM Clobbering is rarely a one-step process. It usually requires a chain of gadgets. The HULK framework models this chain by breaking the exploitation process into four distinct stages:
- Window/Document-to-DOM: The initial injection of the clobbering element.
- DOM-to-DOM: Advanced clobbering where the injected element influences other DOM properties.
- DOM-to-String: The transformation of the clobbered DOM element into a string, often via type coercion.
- String-to-String: Final manipulation of the string to reach a sink like
eval()orscript.src.
The framework uses concolic execution to solve the constraints required to move data through these stages. If you are testing an application, you are looking for places where user-controlled HTML is rendered without proper sanitization. If you can inject an element with an id that matches a variable used in a script tag or a configuration object, you have a potential entry point.
Real-World Impact
The researchers applied HULK to the top 5,000 websites and identified 497 zero-day exploitable gadgets. This is a massive number of potential vulnerabilities hiding in plain sight. They specifically highlighted CVE-2024-43805, which affected the MathJax library used by JupyterLab. In this case, the clobbering gadget allowed an attacker to control the configuration of the library, leading to arbitrary script execution.
Another notable finding was CVE-2024-43788 in Webpack. Because Webpack is used as a bundler for countless applications, a vulnerability in its runtime code has a massive blast radius. The researchers demonstrated that by injecting a specific HTML structure, they could force the application to load scripts from an attacker-controlled domain. This is a textbook example of how a seemingly minor client-side bug can lead to full account takeover or data exfiltration.
Defensive Considerations
For those working on the defensive side, the primary takeaway is that sanitization must be context-aware. Many existing sanitizers focus on stripping dangerous tags like <script> or event handlers like onload, but they often ignore id and name attributes because they are considered benign.
If your application uses client-side libraries that rely on global configuration objects, you must ensure those objects are initialized safely. Avoid relying on global variables for critical application logic. If you must use them, ensure they are properly namespaced and initialized before any user-controlled HTML is parsed. Furthermore, implementing a strict Content Security Policy (CSP) can help mitigate the impact of successful XSS, even if a DOM Clobbering gadget is present.
What to Do Next
If you are a bug bounty hunter, start looking at how your target applications handle user-supplied HTML. If they allow any form of rich text input, you have a potential vector. Use the HULK dataset to understand the patterns of these gadgets. Don't just look for the obvious XSS payloads. Look for the subtle ways that an injected id can influence the application's global state.
The era of manual DOM Clobbering hunting is ending. Tools like HULK and DOM Invader are making it significantly easier to find these bugs at scale. The next time you are on an engagement, don't ignore the id attributes in the DOM. They might be the key to your next high-severity finding.
Vulnerability Classes
Tools Used
Target Technologies
Attack Techniques
OWASP Categories
All Tags
Up Next From This Conference

DisguiseDelimit: Exploiting Synology NAS with Delimiters and Novel Tricks

Browser Extension Clickjacking: One Click and Your Credit Card Is Stolen

Can't Stop the ROP: Automating Universal ASLR Bypasses for Windows
Similar Talks

Kill List: Hacking an Assassination Site on the Dark Web

Breaking Secure Web Gateways for Fun and Profit

