Back to BlogAI Security

900K Users Had Their AI Chats Stolen

Two malicious Chrome extensions stole ChatGPT conversations from 900,000+ users in December 2025. Yet one even carried Google's 'Featured' safety badge.

February 21, 20266 minute read
Chrome extension securityAI chat theftChatGPT privacymalware

The December 2025 Chrome Extension Breach

Updated for 2026. In December 2025, OX Security researchers found two Chrome tools had stolen AI chat logs from over 900,000 users.

One tool carried Google's "Featured" badge. That badge is meant to signal safety. It did not help here.

How the Attack Worked

Three steps. Simple and effective.

Step 1: Look Legitimate

Both tools offered real features — productivity boosts and UI changes. They built large install counts and positive reviews. Theft started only after trust was established.

Step 2: Collect Chat Content in Secret

Once installed, each tool watched browser activity. When users opened ChatGPT, Claude, or other AI services, it:

  • Captured all chat messages as users typed
  • Stored copies on the victim's device
  • Queued the content for upload

Step 3: Send in Batches

Each tool sent stolen content every 30 minutes. That pace is slow enough to bypass anomaly alerts. It is also fast enough to capture every session.

The Urban VPN Case

A second incident emerged. "Free VPN" browser tools with over 8 million downloads had also harvested AI chat content since July 2025.

IncidentUsers AffectedFound
Malicious AI tools900,000+Dec 2025
Urban VPN tools8,000,000+Nov 2025
Total exposed8,900,000+

What Was Taken

AI chats hold sensitive content. Users share things there they share nowhere else:

  • Source code pasted for debugging
  • Customer records used in support queries
  • Legal papers reviewed with AI help
  • Medical details and personal files
  • Internal plans and business strategy

A stolen password can be reset. Leaked source code or a business plan cannot.

Google's "Featured" badge covers policy compliance and privacy disclosures.

The flaw is timing. Google checks code at submission, not on every update. Attackers submit clean code, earn the badge, then push a harmful update.

The Root Problem

The deeper issue is that raw sensitive text reaches AI services in the first place.

When you paste customer records into ChatGPT:

  1. The text passes through your browser
  2. Any browser tool with broad permissions can read it
  3. It lands on OpenAI's servers
  4. It may be used in model training

Even without a malicious tool, you trust every installed extension plus the AI provider. See our security overview for how the full risk chain works.

The Fix: Anonymize Before Sending

The only real fix is to remove sensitive identifiers before text leaves your control.

The anonym.legal Chrome Extension works in your browser. Nothing goes to anonym.legal servers during detection or processing.

Malicious Toolsanonym.legal
Access scopeIntercepts everythingOnly when activated
ProcessingRemote serversLocal — browser only
PurposeTheftProtection

How it works:

  1. You paste text with personal identifiers
  2. The browser detects sensitive content locally
  3. Each identifier is replaced with a token — "John Smith" becomes [PERSON_1]
  4. The anonymized text goes to the AI
  5. The AI response is restored for you

Protected types include names, emails, phone numbers, ID numbers, and 250+ more entity categories. See our compliance center for enterprise coverage.

Check Your Extensions Now

Open chrome://extensions and review each one.

Red flags:

  • "Read and change all your data on all websites"
  • Unknown developer with no other products listed
  • No updates in months
  • Generic five-star reviews with no real detail

The 900,000-user breach proves that even badged tools can be compromised. Treat every browser extension as a potential access point to your AI sessions.

When This Approach Has Limits

Local anonymization in the browser shrinks what a malicious extension or AI provider can capture, but it is not a guarantee, and a realistic security posture accounts for where it stops.

Local detection still misses some identifiers. Anonymization replaces what it recognizes, and recognition is probabilistic. An unusual name, an obfuscated account number, or context-dependent personal data can pass through unredacted — and once it reaches the AI service, a hostile extension can capture it. Review sensitive prompts before sending rather than assuming everything was caught.

A protective extension shares the browser with hostile ones. Running anonymization in the browser keeps data off our servers, but it does not police the other extensions you have installed. A tool with "read and change all your data" permission can still observe page content. The defense is reducing extension permissions overall, not adding one trusted tool on top of risky ones.

Tokens only protect what you route through the tool. If a user pastes raw text directly, switches to an unprotected device, or uses an AI surface the extension does not cover, the safeguard is bypassed. Coverage depends on consistent use across every place staff interact with AI.

Anonymized text can sometimes be re-identified. Stripping direct identifiers does not always defeat inference. A detailed scenario — rare facts, dates, and locations combined — can point back to a person even with names tokenized. For high-stakes content, minimize the underlying detail, not just the obvious identifiers.

Sources

Ready to protect your data?

Start anonymizing PII with 267+ entity types across 48 languages.

About this page

We update this page when our platform or the law changes.

Read our founder note for how we work.

Each change shows up in the timestamp at the top.

We follow these rules

  • GDPR (EU 2016/679).
  • ISO/IEC 27001:2022.
  • NIS2 (EU 2022/2555).
  • HIPAA safe harbor under 45 CFR § 164.514(b)(2).

Our promise

We do not sell your data.

We do not train models on your text.

We store your files in Germany.

You can delete your account at any time.

You own your work.

Where we run

Our company HQ is in Saarbrücken, Germany. Our servers run in Hetzner's Falkenstein datacenter.

Hetzner holds ISO 27001 certification.

All data stays in the EU.

Backups run every day.

Need help?

Email support@anonym.legal.

We reply within one business day.

How we test

We run a full check suite on every release.

Each surface gets its own sweep script and report.

Human reviewers spot-check the output each week.

We track recall and precision on a labelled set.

Bad runs block the deploy.

What we never do

  • We never sell your information to third parties.
  • We never train models on what you upload.
  • We never keep your work after you delete it.
  • We never share keys with any outside firm.
  • We never run ads inside the product.

Plans in plain words

We sell credits, not seats.

One credit covers one short job.

Long jobs use a few credits each.

You can top up at any time.

Unused credits roll over each month.

Read the plans page for current rates.

Who built this

A small team of engineers and lawyers built this.

We ship from Europe and work in the open.

Our founder note spells out why we started.

Where to start

How the parts fit

A browser add-on cleans text inside Chrome.

A Word plug-in handles drafts in Office.

A small desktop tool works on whole folders.

An agent protocol link feeds large models safely.

All four share one core engine and one rule set.

Words from our team

We started this work after a lunch about cookies.

One friend kept getting odd ads on her phone.

We asked why a court file leaked through a draft.

We sketched the first build on a napkin that week.

By month three we had a tiny demo for a friend.

She used it on her first case the next day.

Common questions we hear

Can the tool read scanned PDFs? Yes, with OCR.

Does it work on long files? Yes, in small chunks.

Can I roll my own rule set? Yes, save it as a preset.

Does it run offline? The desktop build runs offline.

Do you keep my files? No, the cloud build wipes after each run.

Will it learn from my work? No, we never train on inputs.

A short tour of the workflow

Upload a file or paste a snippet of prose.

Pick the entities you want gone from the draft.

Choose a method: replace, mask, hash, encrypt, or redact.

Press run and watch the side panel show each hit.

Skim the result and tweak any rule that misfired.

Save the cleaned file or send it to a teammate.