ExporTheft: 11 exporters where Export means Upload 2026-07-14 tracking data-exfiltration AI 14-07-2026 Analysis of the AI Chat Exporter extension family (Neo Cortex LLC) Extensions list : https://malext.io/?q=ExporTheft Platform Indicators Field Value Extension ID dhjbkabkopajddjinfdlooppcajoclag Extension Name AI Chat Exporter - ChatGPT, Claude, Gemini & DeepSeek to PDF Developer Neo Cortex LLC (neocortexai[.]in) Total Affected Users ~5512 Store Link hxxps://chromewebstore[.]google[.]com/detail/ai-chat-exporter-export-a/dhjbkabkopajddjinfdlooppcajoclag Version Analyzed 1.1.2 Backend hxxps://ai-chat-exporter-api-792277256340[.]northamerica-south1[.]run[.]app GCP Project 792277256340 Campaign: 11 extensions, one codebase. Each is a per-platform rebrand with its own backend of the form ai-chat-exporter-api-<suffix>792277256340[.]northamerica-south1[.]run[.]app . Extension ID Name Ver Backend suffix <all_urls> dhjbkabkopajddjinfdlooppcajoclag AI Chat Exporter (main / multi) 1.1.2 (base, no suffix) YES poboebmiaakclneagfgfmbakpgcgdfii ChatGPT to PDF 1.0.7 -chatgpt- no ndnjjjppaaiclfjlnopmnimhhiikkppk Claude to PDF 1.0.8 -claude- no mmgbhlbbnlpcndmhgnghhembmincbibd Gemini to PDF 1.0.6 -gemini- no lhgbhgflgoedbhlfbghcikonigcgiibo Google AI Studio to PDF 1.0.8 -google-ai-studio- no ecmcbpjdknbbcfbohfcjjilgkgclgdbc DeepSeek to PDF 1.0.8 -deepseek- no dpeabmlbmhjbokfijjcpcebgkgkjknkm Venice AI to PDF 1.0.8 -venice- no djjnbpcgmddpabfghdolkifccdplpfkc Grok to PDF 1.0.10 -grok- no ejhhhokbkmlibaeoepkohaflgaohpmeg GitHub Copilot to PDF 1.0.8 -github-copilot- no nghpoklfiggkdemkmgllkaaiemggmdao Microsoft Copilot to PDF 1.0.8 -microsoft-copilot- no imicnaojoabefckkfhailgkllodbnjjf Perplexity Chat Exporter 1.0.8 -perplexity- no Eleven Chrome extensions share one "AI Chat Exporter" codebase, each branded for a different AI platform and advertised as a private, on-device tool for saving AI chats as PDF, Markdown, Text, or JSON. In the versions tested, the default PDF export uploads the full conversation to the developer's server instead of building the file locally, the "local" text exports send the chat title and page URL to the same server, and every request carries a tracking ID that persists across the user's devices. None of this is shown to the user at export time. The findings below are the author's observations from the specific versions listed; this report does not claim to know the developer's intent or allege any law was broken (see Disclaimer). Bundle structure A plain (non-minified) MV3 bundle. The parts that matter: Content scripts that read the conversation from each AI site (content/shared.js and per-platform files). Local exporters for Markdown / Text / JSON and a fallback in-browser PDF renderer. The telemetry layer (services/subscriptionService.js) and the background worker (background.js) that send data to the backend. Advertised functionality The extension reads the on-screen conversation and can save it as Markdown, Text, or JSON in the browser. It offers optional cloud upload to Google Drive, Dropbox, Notion, and Yandex, each behind an OAuth prompt, and a paid tier with a daily export limit via Stripe. This is a normal fit for an "export my chats" tool. Undisclosed behavior: conversation content sent to the backend PDF export uploads the whole chat. In content/shared.js, genericExportToPDF copies the full conversation into one HTML document and hands it to the background worker ( action: 'generate_pdf' ). background.js handleGeneratePdf (line 367) POSTs it to /api/pdf-html via SubscriptionService.generatePdf (services/subscriptionService.js:285). The server render is tried first; the in-browser render is only a fallback. During export the UI shows only a "Generating High-Performance PDF..." toast, with no indication the chat leaves the device. A request captured in a local sandbox with a test Gemini account matched this exactly: the upload held the full test conversation plus the page URL and conversation ID ( hxxps://gemini[.]google[.]com/app/dfd5e810168342dc?hl=fr ). The capture is retained as an exhibit. A full local PDF renderer is bundled but used only as a fallback. The extension already ships everything needed to build the PDF on the device: lib/html2pdf.bundle.min.js (a ~906 KB bundled library) loaded by content/renderer.html , driven by content/renderer.js in an isolated iframe. In genericExportToPDF this local path runs only inside the catch block, after the server upload is attempted and only if it throws (content/shared.js:868-878). There is no setting to prefer local rendering and no opt-out; the server upload is attempted unconditionally on every PDF export. In other words, on-device generation is fully possible with code the extension already contains, so uploading the conversation is a design choice rather than a technical requirement. "Local" exports also send data. recordExport (services/subscriptionService.js:256) sends POST /api/usage with the title, filename, format, a...
A family of 11 Chrome extensions marketed as "AI Chat Exporter" tools exfiltrates user data by uploading the full content of AI chat conversations to the developer's remote server during PDF export, contrary to their store listing claims of "No uploads to external servers." The extensions also transmit chat titles, page URLs, and a persistent cross-device tracking identifier during all export operations without user disclosure. The primary attack vector is users installing these deceptive extensions, which affects all analyzed versions, including 1.1.2 for the main extension; immediate mitigation requires uninstalling the identified extensions and revoking any granted permissions.