A browser extension is granted the permissions declared in its manifest at install time, things like tabs, cookies, webRequest, and host access to all_urls, and it keeps those permissions on every browser launch afterward. Adversaries reach that install point three ways: social engineering a user into adding a look-alike extension from the Web Store, force-loading an unpacked extension directly with the --load-extension command-line flag, or pushing an extension ID through the ExtensionInstallForcelist registry policy so it installs silently across every managed endpoint. Because the extension runs inside the trusted browser process, it can read or rewrite every page the user visits and lift session cookies without ever appearing as a standalone malicious binary on disk.
The IDE variant, T1176.002, works the same way inside developer tooling. Visual Studio Code's Marketplace vetting is thinner than most app stores, and MITRE's own technique page documents incidents where malicious VSCode extensions exposed personally identifiable information and gave attackers backdoor access after developers installed them. A compromised IDE extension executes arbitrary code the moment the workspace loads, and because developers run their IDE with their own repo credentials and often live CI/CD tokens, the blast radius extends past the browser into source code and build pipelines.
ChromeLoader is the clearest real-world example of the browser variant. It distributes through ISO files disguised as cracked games or pirated media on pay-per-install sites, and once mounted, an installer performs cross-process injection into svchost.exe via the Task Scheduler COM API to run encoded PowerShell on a schedule. That PowerShell downloads a compressed extension package to disk and spawns chrome.exe with --load-extension pointing at it, sidestepping the Web Store review process entirely, and the resulting extension blocks the user from reaching Chrome's extension management page to remove it.