Cyber Security

How 119 malicious extensions turned the edge add-ons store into a staging ground

Microsoft removes 119 Edge extensions in the StegoAd campaign. Learn how attackers used steganography in images to hide malware and steal credentials.
How 119 malicious extensions turned the edge add-ons store into a staging ground

A standard browser extension is a small package of trust. Users install ad blockers and VPNs with the expectation that these tools work for them, not against them. Microsoft recently dismantled a massive operation that inverted this relationship. The campaign, dubbed StegoAd, involved 119 malicious extensions on the Microsoft Edge Add-ons store. These extensions stayed active for years, reaching a combined install base of 2.6 million users. The operation is a masterclass in evasion, using steganography to hide malicious payloads inside the very files that make the web look and feel correct.

From a risk perspective, the scale of the exposure is significant. While Microsoft notes that 2.6 million is an upper limit and not a confirmed victim count, the architectural sophistication of StegoAd suggests a professional level of planning. The extensions did exactly what they promised. They blocked ads, translated text, and downloaded videos. They earned positive reviews. Behind the scenes, however, they waited for a specific set of conditions to trigger a secondary, malicious life cycle. This was a patient attack, designed to bypass the automated scanners that gatekeep modern browser ecosystems.

The architecture of a slow burn infection

Tracing the attack chain backward reveals a methodical approach to dormancy. The StegoAd actor understood that immediate malicious activity is a death sentence for a browser extension. Most of the 119 extensions remained benign for several days after installation. This delay is a common tactic, but the actor went further. They implemented a stack of evasion checks to ensure the extension only woke up on a real user's machine.

One check looked for the presence of browser DevTools. If an analyst opened the inspector to see what the extension was doing, the code noticed the change and extended its dormant period. This effectively hid the behavior from anyone looking for it. Proactively speaking, the actor also used a 10% execution gate on certain variants. This means only one in ten installations actually triggered the payload. For a security researcher trying to reproduce a reported bug, the malware simply would not appear.

This selective execution turned the user base into a massive, decentralized test bed. The actor could refine their scripts and exfiltration methods on a small subset of users while the other 90% provided a shield of legitimate activity and high ratings. The extensions even migrated from Manifest V2 to Manifest V3 as the Chromium platform evolved. This shows a long-term commitment to maintaining access to the Edge user base.

How steganography turned icons into weapons

The core of the campaign is steganography, the practice of hiding data inside other data. The actor used images and font files as carriers for their JavaScript payloads. In the earliest versions of StegoAd, the malware was appended after the IEND marker of a PNG icon. This marker tells an image viewer that the file is over. Anything after that marker is ignored by the renderer but remains accessible to a script. To a static scanner, the file looks like a valid, harmless icon.

As detection tools improved, the threat actor adapted. They moved their payloads into WebP images and WOFF2 font files. WOFF2 files are compressed web fonts that contain glyph ranges and metadata. The actor hid code within these ranges, making the payload look like Asian text or font metrics. Microsoft describes steganography at this scale as rare in the browser extension space. It is a high-effort technique that requires the attacker to manually craft or modify media files to ensure they still function while carrying an encrypted stowaway.

In some high-impact variants, the payload was not even present in the local extension files. The extension fetched a normal-looking image from a command-and-control server. Once downloaded, the extension decoded the image through multiple layers of case swaps, digit swaps, Base64 encoding, and XOR operations. It then verified the resulting script against a digital signature before execution. This process ensures that the malicious logic is never stored on the disk in a readable format.

Protecting the command and control infrastructure

The back-end infrastructure for StegoAd was just as resilient as the front-end extensions. The actor used more than ten command-and-control domains with automatic failover capabilities. If one domain was blocked or taken down, the extensions automatically reached out to a backup. To further hide their traffic, the operators proxied their requests through Cloudflare Workers. This made the malicious traffic look like legitimate API calls to a reputable cloud provider.

Server-side validation acted as a VIP club bouncer at every door. When an extension requested a payload, the server checked the browser's fingerprint and User-Agent string. If the request came from a known research environment or an automated sandbox, the server returned an empty decoy response. I have seen this level of paranoia in advanced persistent threat actors, but it is less common in adware campaigns. This suggests the operator was highly motivated to protect their toolkit from discovery.

GitHub Pages was another tool in the actor's kit. They used the platform to host beacons, providing a reliable and trusted domain for the extensions to check for updates. By abusing legitimate infrastructure, the StegoAd operators ensured their traffic blended into the background noise of a typical corporate or home network. Detecting this traffic requires more than just a list of bad IPs; it requires behavioral analysis of how an extension interacts with the web.

Ad fraud as a smoke screen for data exfiltration

The most visible part of the StegoAd infection was ad fraud. The extensions injected ads into web pages, hijacked affiliate commissions on sites like Amazon and eBay, and redirected search queries. This is the loud part of the malware, designed to generate immediate revenue. However, the technical post-mortem conducted by Microsoft revealed a much darker set of capabilities hidden beneath the surface.

Retrieving the payloads showed that the actor had remote code execution capabilities. They could push arbitrary JavaScript from the server to any infected browser. This allowed them to harvest Google credentials and second-factor codes during the login process. They also targeted WordPress admin logins and exfiltrated cookies in bulk. From an architectural perspective, session cookies are a toxic asset if they fall into the wrong hands. An attacker with a fresh session cookie can bypass MFA entirely and walk right into a user's account.

Telemetry for the campaign was managed through seven Google Analytics tracking IDs. This gave the operator a real-time dashboard of their progress using Google's own analytics infrastructure. They could see which extensions were performing well, which countries had the most active installs, and where their payloads were successfully firing. The level of operational intelligence here is professional and indicates a streamlined business model.

The Chinese connection and DarkSpectre

Microsoft has not officially named the actor behind StegoAd, but the technical indicators point toward a known cluster of activity. The credential theft payload exfiltrates data to a domain called mitarchive.info. Security researchers have previously linked this domain to a Chinese operation known as DarkSpectre. This group is also associated with the ShadyPanda and GhostPoster campaigns, which used similar tactics to distribute malicious extensions.

The overlap is more than just a single domain. StegoAd used the exact same method of hiding code inside an extension's own icon that GhostPoster used months earlier. They even shared the same naming conventions for their extensions, such as Ads Block Ultimate. This suggests that StegoAd is the latest evolution of a long-running Chinese operation that treats the browser extension ecosystem as a primary theater of operations. The operators are agile, moving from one platform to another as defenders catch up.

Assessing the attack surface and taking action

Microsoft has removed all 119 extensions and suspended the developer accounts, but the danger persists for users who still have these tools installed. Because some of these extensions were highly functional, users might not even realize they are compromised. If you use Edge, your first step is to visit edge://extensions and audit your list. Compare your installed IDs against the list provided in Microsoft’s technical report.

In the event of a match, the browser environment is compromised. Removing the extension is only the first step. You must assume that your session cookies and credentials are in the hands of the DarkSpectre group. Change your passwords for high-value accounts, including Google, your bank, and any work-related portals like WordPress. Review your recent sign-in activity for any unrecognized locations or devices.

Looking at the threat landscape, this incident highlights the failure of traditional extension vetting. Static analysis is no longer enough to catch actors who use steganography and server-side validation. Proactively speaking, the best defense is a lean browser. Only install extensions that are absolutely necessary and come from verified, reputable developers. Use hardware security keys for MFA wherever possible. Unlike SMS codes or push notifications, a hardware key requires a physical interaction that an extension-based script cannot easily replicate.

Key takeaways for browser security

  • Audit your extensions: Regularly check edge://extensions or chrome://extensions and remove anything you do not use.
  • Look for the delay: Be suspicious of extensions that suddenly change behavior or request new permissions days after installation.
  • Verify the developer: Malicious actors often use generic names or mimic popular tools. Check the developer’s history and website.
  • Use hardware MFA: Physical security keys are the most resilient defense against the kind of credential and session theft seen in StegoAd.
  • Monitor sign-ins: Check the security dashboards of your major accounts for sessions that should not exist.

Sources: Microsoft Security Blog, NIST SP 800-53 (Control Assessment), MITRE ATT&CK (T1027.003 - Steganography), Koi Security Research Reports.

Disclaimer: This article is for informational and educational purposes only and does not replace a professional cybersecurity audit or incident response service.

bg
bg
bg

See you on the other side.

Our end-to-end encrypted email and cloud storage solution provides the most powerful means of secure data exchange, ensuring the safety and privacy of your data.

/ Create a free account