Browser Extension Clickjacking: One Click and Your Credit Card Is Stolen
This talk demonstrates how browser extensions can be exploited via clickjacking to steal sensitive user data, including credit card information and credentials. The researcher details two primary attack vectors: iframe-based and DOM-based clickjacking, which manipulate extension UI elements to trick users into performing unauthorized actions. The presentation highlights that many popular password managers are vulnerable to these techniques, allowing attackers to exfiltrate data with minimal user interaction. The researcher provides proof-of-concept code and discusses potential mitigations for extension developers.
Browser Extensions Are A Massive, Overlooked Attack Surface
TLDR: Browser extensions are frequently granted broad permissions that allow them to interact with any website, creating a dangerous vector for UI redressing and data exfiltration. By manipulating the DOM or abusing
web_accessible_resources, attackers can trick users into performing actions or leaking sensitive information like credit card details and credentials. Security researchers and bug bounty hunters should prioritize auditing extension manifests and DOM interactions to identify these high-impact, low-effort vulnerabilities.
Browser extensions are the ultimate "set it and forget it" tool for developers and power users. We install them to block ads, manage passwords, or debug APIs, rarely stopping to consider that each one is essentially a persistent, privileged script running inside our browser context. While we obsess over server-side vulnerabilities and complex exploit chains, we often ignore the fact that a single malicious or compromised extension can bypass almost every security control a web application puts in place.
The Mechanics of Extension Clickjacking
Clickjacking, or UI redressing, is not a new concept, but its application within the context of browser extensions is particularly lethal. In a standard web-based clickjacking attack, an attacker frames a target site and overlays a transparent layer to trick a user into clicking a button. When applied to extensions, the attacker does not need to rely on the target site being frameable. Instead, they leverage the extension's own UI components—like pop-ups, autofill menus, or configuration dialogs—to perform the dirty work.
The research presented at DEF CON 2025 highlights two primary vectors: iframe-based and DOM-based exploitation. The iframe-based approach is a classic technique involving the misconfiguration of web_accessible_resources. If a developer exposes sensitive HTML files in the manifest.json without proper restrictions, an attacker can load these files into a transparent iframe on a malicious site. By setting the opacity to zero, the attacker makes the extension's UI invisible while still allowing the user to interact with it.
The DOM-based approach is even more insidious because it does not require an iframe. Here, the extension injects UI elements directly into the page's DOM. An attacker can use JavaScript to manipulate the visibility and position of these elements. By using pointer-events: none or adjusting the z-index, the attacker ensures that the user's clicks are captured by the extension's UI rather than the underlying website.
Exploiting the Autofill Trust
Password managers are the most attractive targets for this research because they are designed to be helpful, which often means they are designed to be intrusive. The "manual autofill" feature is a prime example. When a user focuses on a login field, the extension often injects a dropdown menu to suggest credentials.
An attacker can force this behavior by programmatically triggering a focus() event on a form input. Once the dropdown appears, the attacker can overlay it with their own malicious UI or simply manipulate the existing elements to ensure that a click anywhere on the page results in the user inadvertently selecting the attacker's preferred action. In the case of the research, this allowed for the exfiltration of credit card numbers, personal data, and even passkeys.
The following snippet demonstrates how an attacker might manipulate the DOM to make an extension's UI clickable:
// Example of manipulating an injected extension element
const targetElement = document.querySelector('extension-autofill-menu');
targetElement.style.opacity = '0';
targetElement.style.pointerEvents = 'auto';
targetElement.style.zIndex = '2147483647';
Why This Matters for Pentesters
If you are performing a web application penetration test, you should be looking at the browser extensions installed by your target users. If a company mandates the use of a specific password manager or security tool, that extension is now part of your attack surface.
During an engagement, check if the extension is vulnerable to DOM manipulation. Can you inject your own scripts into the page? If so, can you interact with the extension's injected elements? If you can force the extension to display its UI, you can potentially trick a user into "sharing" their credentials or authorizing a malicious transaction. This is a classic Identification and Authentication Failure that is often overlooked because it happens on the client side.
Defensive Strategies
For developers building extensions, the path to mitigation is clear but requires discipline. First, strictly limit the files exposed in web_accessible_resources. Never expose sensitive UI components to the entire web. Second, use the Popover API where possible to manage UI state securely. Finally, always implement a strict Content Security Policy (CSP) that prevents unauthorized scripts from interacting with your extension's DOM elements.
For users, the most effective defense is to restrict the site access permissions of your extensions. Instead of allowing an extension to "read and change all your data on websites you visit," set it to "on click" or "on specific sites." This simple change prevents an extension from injecting its UI or reading form data until you explicitly authorize it for that specific domain.
Clickjacking is far from dead. It has simply migrated from the server-side to the browser-side, where the trust we place in our extensions makes it more dangerous than ever. Stop treating your browser extensions as passive tools and start treating them as the high-privilege applications they actually are.
Vulnerability Classes
Tools Used
Target Technologies
Attack Techniques
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

Exploiting Shadow Data in AI Models and Embeddings

