Summary
-
Researchers at the University of Wisconsin–Madison have demonstrated that Chrome browser extensions can steal passwords from text input fields, even if the extension is compliant with Chrome’s latest security and privacy standard, Manifest V3.
-
They created a proof-of-concept browser extension that could steal passwords and put it through the Chrome Web Store review process.
-
The attack works by exploiting the fact that extensions have full and unfettered access to the Document Object Model (DOM) of every web page you visit. The DOM is a representation of a web page in computer memory that can be accessed and changed, allowing the page to be modified on-the-fly.
-
The researchers found that most of the top 10,000 websites are vulnerable to this attack, including Google, Facebook, Gmail, Cloudflare, and Amazon.
-
They also analyzed the extensions already on the Chrome Web Store and found that 12.5% of them had the necessary permissions to exploit the password input field vulnerabilities.
-
The researchers offer two potential fixes: A “bolt on” remedy for vulnerable sites and a “built in” remedy for browsers.
-
The bolt on is a JavaScript library that can be added to websites to prevent unwanted access to password fields.
-
The built in remedy suggests changing Chrome to alert users whenever any JavaScript function accesses any password fields.
Possible Takeaways / Other Details
-
Google have improved security in the Manifest V3 standard, but it’s still possible to sneak in a password stealing extension into the webstore.
-
Some/all of the standard’s security improvements may have also been adopted by Microsoft Edge, and Mozilla Firefox.
-
It is important to be aware of the risks associated with using browsers’ extensions. Only install extensions from trusted sources and carefully review the permissions that they request.
Then they could recreate their own input field by recreating their own “totally-not-an-input-field” with a canvas element and a bit of JS. Or, if that also gets blocked, just straight up redirect the user to a phishing site by replacing the login button or some other means. Plenty of people probably wouldn’t notice in time.
That’s a whole lot of effort compared to how they are able to phish now, which is launder their code by paying some (perhaps unsuspecting) extension developer to include an external dependency in their well-established extension.
Such effort as you’re describing would be harder to pull off, easier to spot and limit the victim pool significantly all at the same time.