Hidden Spy for 1.6 Million Users: Popular Browser Extension ModHeader Secretly Collected Browsing History
Google and Microsoft have removed the widely used ModHeader browser extension from their official stores after researchers uncovered a hidden mechanism capable of secretly collecting users' browsing history. The extension, which boasted roughly 1.6 million installations, had maintained a reputation as a legitimate developer tool for years before the malicious functionality was exposed.
ModHeader enables users to modify HTTP headers exchanged between the browser and websites. It is commonly employed by developers and QA specialists to test web applications, inject authorization tokens, and simulate different request parameters without altering source code.
Discovery and Removal Timeline
Researchers at the British company Stripe OLT analyzed the extension's code using signatures from the Chrome Web Store and confirmed that the suspicious module was present in the authentic build, not a counterfeit. Microsoft removed the extension from the Edge store on July 3, while Google removed the Chrome version on July 10.
How the Hidden Collector Worked
Although ModHeader continued to perform its advertised functions, its background code contained a separate data-collection mechanism. Upon launch, the extension generated a device fingerprint, extracted domains from open pages, encrypted the data, and could store up to 1,000 addresses locally. Once per day, the list was scheduled to be sent to api.stanfordstudies[.]com together with the device fingerprint, after which the local copy would be deleted.
The collector remained inactive because it was configured to activate only for browsers listed in an internal array that was supplied empty. No evidence of actual data collection or transmission was found. However, the developer could have enabled the feature at any time through a routine update without requesting additional permissions or user interaction.
Active Telemetry and Data Exposure
Partial telemetry was already operational. On installation, update, and removal, ModHeader sent product, version, and browser information to extensions-hub[.]com. Additionally, a script running on every page saved request metadata in plaintext. Automated security scanners rated the extension as low-risk because the history-collection feature was disabled, data was encrypted, and the code was hidden inside a legitimate project.
Recommendations for Users and Administrators
- Immediately remove ModHeader from Chrome and Edge and verify that it has not been restored via profile synchronization or corporate policy.
- Replace any API keys, access tokens, or session cookies that were entered through the extension.
- Administrators should block the domains stanfordstudies[.]com and extensions-hub[.]com and review logs for connections to these domains or the extension identifier.
Related articles
OAuth Authorization Server Built Without Storing User Profiles
The article details the evolution of an OAuth Authorization Server that deliberately avoids storing user profiles, relying instead on external identity providers for authentication. It addresses three core constraints: hundreds of dynamically created isolated APIs, a public SPA client without a BFF, and the inability of resources to query the AS on every request. The design separates concerns so the AS handles only clients, tenants, grants, audiences, scopes, keys, sessions, and token issuance while the Main API owns profiles and roles. Tokens are managed securely inside a Service Worker using a custom FedCM grant, eliminating races across tabs and reducing XSS exposure. The approach minimizes blast radius, simplifies compliance, and keeps the AS replaceable without affecting product domain logic.
Why a 202-Character License Key Uses ECDSA P-256 Instead of Ed25519 or RSA
A developer building offline license verification for a .NET desktop application evaluated Ed25519, RSA, and ECDSA P-256 before selecting the last option. The decision was driven by the requirement for zero external dependencies, keys short enough for manual entry from email, and support for key rotation without breaking existing licenses. Although Ed25519 offers faster verification and a smaller public key, it is absent from System.Security.Cryptography in both .NET 8 and .NET 10, with API approval only targeted for version 11. RSA-2048 produces signatures too long for practical use, resulting in a 571-character Base32 string that users would find cumbersome. ECDSA P-256 with SHA-256 delivers a fixed 64-byte signature that becomes a manageable 202-character key when encoded in Base32, while remaining fully available in the runtime. The article also covers performance measurements, the risks of ECDSA nonce generation, and the deliberate choice of the IEEE P1363 signature format to guarantee fixed-length output.
Pilcrow Publishes Free Comprehensive Guide on Web Authentication
Author Pilcrow has released a detailed, ad-free handbook covering authentication and authorization practices for web applications. The resource draws on personal experience and includes practical examples in JavaScript and Go. It examines password-based methods, email verification, multi-factor authentication, passwordless flows, and passkeys while highlighting associated risks and usability trade-offs. The book also provides in-depth guidance on session management, token security, expiration policies, and email address handling as account identifiers. Recommendations emphasize choosing methods that match application security requirements and user expectations. Additional context is given on OWASP resources and community support channels.
redb 3.4.0 Adds Replay Checkpoints, Shared Runtime Layer and Declarative Secrets Handling for .NET Ecosystem
redb 3.4.0 delivers operational improvements for the .NET integration platform that includes typed storage over Postgres, MSSQL and SQLite, the redb.Route engine modeled after Apache Camel, the Tsak runtime with dashboard and clustering, and redb.Identity for OIDC and OAuth 2.1. The release focuses on post-deployment resilience with replay checkpoints that capture message state at named points inside routes, allowing safe re-execution of downstream steps without duplicating side effects. A shared runtime layer moves framework assemblies into a separate Libs/shared directory so that individual DLLs can be replaced without rebuilding or redeploying the entire Tsak or Identity packages. Secrets are now declared with a [Sensitive] attribute on endpoint options, ensuring URIs containing passwords or keys are sanitized before they reach logs, metrics or health checks. Additional controls include role-based access to management APIs, persistent audit trails and cryptographic signing of dynamically loaded modules. All Pro features remain free on the entire 3.x line with no licensing server required.