Is Summary with ChatGPT for Google and YouTube safe?

Medium risk

Summary with ChatGPT is medium risk. When you search Google and ask for a summary, the extension scrapes the visible result titles, links, and snippets off the page and sends them, plus your query, to ChatGPT as an off-screen prompt.…

Dunkum Sherwinv1.0.15Chrome Web Store
52Risk
Who publishes it

Dunkum Sherwin - 4 other listings from the same operator, 1 of them carrying a finding

What this publisher told the store about itself, and the other listings that told it the same thing.

Publisher
Dunkum Sherwin

Same store account

4 other listings published from this account, 176k+ users between them. 1 of them carries a finding.

AI-generated. Findings may contain errors. Those marked Verified have been manually reviewed.

Publishers can request a review.

Findings

Google search results and your query are forwarded to ChatGPT

When you search Google and ask for a summary, the extension scrapes the visible result titles, links, and snippets off the page and sends them, plus your query, to ChatGPT as an off-screen prompt.

Severity
Medium unwanted
Type
Unexpected
CWE
CWE-200
Source
Dynamic sandbox
What actually happens
You did this

You run a Google search and click 'Ask ChatGPT to summarize', or type a question mark after your search terms.

No preview of what will be sent to ChatGPT is shown first.

The extension did this

The extension scrapes the visible result titles, links, and snippet text from the search page and sends them, with your query, to ChatGPT as prompt context.

The request authenticates with your own already-logged-in ChatGPT web session, not a separate API key.

What's included in the off-screen ChatGPT prompt
  • Your search query
    how does photosynthesis work

    The exact text you searched for on Google.

  • Result links
    https://www.khanacademy.org/science/biology/photosynthesis-in-plants

    The URLs of up to 6 search results shown on the page.

  • Result titles
    Photosynthesis - Khan Academy

    The headline text of each search result.

  • Result snippets
    Photosynthesis is the process by which plants convert light energy into chemical energy.

    The preview text Google shows under each result.

The code that does this

Scraping the search page and building the ChatGPT prompt

Readable version
// Scrapes up to 6 visible Google result cards off the live DOM.const resultCards = document.querySelectorAll("div.MjjYud");let scraped = "";resultCards.forEach((card, i) => {  const rank = i + 1;  const linkBlock = card.querySelector("div.yuRUbf");  const title = linkBlock?.querySelector("h3.LC20lb") ?? null;  const url = linkBlock?.querySelector("a")?.href ?? "";  const snippet = card.querySelector("div.VwiC3b")?.textContent ?? "";  if (snippet && url && rank <= 6) {    scraped += `\n[${rank}] ${snippet}\nURL: ${url}\n\n`;  }});// Builds the off-screen prompt sent to ChatGPT.const prompt = `Web search results:${scraped}Current date: ${year}/${month}/${day}Instructions: Using the provided web search results, write a comprehensive reply to the given query. Make sure to cite results using [[number](URL)] notation after the reference.Query: ${searchQuery}Reply in ${language}`;
Captured request
POSThttps://chat.openai.com/backend-api/conversation

Streaming server-sent-events response containing the ChatGPT-generated answer text.

Headers
Content-Type
application/json
Authorization
Bearer <redacted>
Body
{  "action": "next",  "model": "gpt-5-5",  "messages": [    {      "role": "user",      "content": {        "content_type": "text",        "parts": [          "Web search results:\n\n[1] Photosynthesis is the process by which plants convert light energy into chemical energy. (illustrative)\nURL: https://www.khanacademy.org/science/biology/photosynthesis-in-plants (illustrative)\n\nCurrent date: 2026/9/8\n\nInstructions: Using the provided web search results, write a comprehensive reply to the given query. Make sure to cite results using [[number](URL)] notation after the reference.\nQuery: how does photosynthesis work\nReply in English"        ]      }    }  ]}
Third-party destinations
    • chat.openai.com

    Receives your Google search query and up to 6 scraped result titles/links/snippets as prompt context, authenticated with your own OpenAI account session.

Persistent MD5 tracking ID ties every event back to your browser

The extension hashes its own name and version, your browser's user agent, and the current time into an MD5 ID, stores it forever in local storage, and stamps every telemetry event with it.

Severity
Medium unwanted
Type
Unexpected
CWE
CWE-359
Source
Dynamic sandbox
What actually happens
You did this

You install and start using the extension.

There is no separate consent step for the tracking ID itself.

The extension did this

It computes an MD5 hash of its own name and version, your browser's user agent, and the current timestamp, then stores the result permanently as your device ID.

That ID is attached to every event the extension later reports.

The code that does this

Generating and persisting the tracking ID

Readable version
// Runs once: hashes identity + fingerprint inputs into a persistent ID.async function generateUserId() {  const manifest = chrome.runtime.getManifest();  const id = MD5(`${manifest.name}_${manifest.version}_${navigator.userAgent}_${Date.now()}`).toString();  await chrome.storage.local.set({ userId: id });  return id;}// Every later call returns the SAME stored value; the hash is never recomputed.async function getUserId() {  const stored = await chrome.storage.local.get();  return stored.userId || (await generateUserId());}
Why you can't catch this in DevTools

The ID looks like a random token, but it's a deterministic hash of values the extension already has on hand: its own name and version, your user agent string, and the install timestamp.

Decoded value
MD5("ng_google_summary_1.0.15_<your navigator.userAgent>_<install-time Date.now()>")  = 849596c227164cb90ed1ac09c1a28a4fInputs: extension name "ng_google_summary", version "1.0.15", your full user agent string, and a millisecond install timestamp.
Captured request
POSThttps://nc-dn-us.us-west-1.log.aliyuncs.com/logstores/extensions/track

204 No Content; the ID is ingested into the log service and not echoed back.

Body
{  "__logs__": [    {      "anonymous_user_id": "849596c227164cb90ed1ac09c1a28a4f",      "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36",      "referer": "background.js"    }  ]}
Third-party destinations
    • nc-dn-us.us-west-1.log.aliyuncs.com

    Receives the persistent anonymous_user_id with every event, letting this Alibaba Cloud project correlate your activity across sessions.

Every install sends browser and page telemetry to Alibaba Cloud

On install, and again each time you use the summarize feature, the extension sends your browser's user agent, language, and the page URL you're on to Alibaba Cloud Log Service, tagged with a persistent device ID.

Severity
Medium unwanted
Type
Unexpected
CWE
CWE-200
Source
Dynamic sandbox
What actually happens
You did this

You install the extension from the Chrome Web Store.

No telemetry consent dialog appears at any point.

The extension did this

It immediately sends your browser's user agent, language, and a persistent anonymous ID to Alibaba Cloud Log Service.

The same channel later reports the exact page URL you're viewing when you use the summarize feature.

Captured request
POSThttps://nc-dn-us.us-west-1.log.aliyuncs.com/logstores/extensions/track

204 No Content. A fire-and-forget log-ingestion endpoint; the extension does not read or act on the response.

Body
{  "__logs__": [    {      "extension_name": "ng_google_summary",      "anonymous_user_id": "849596c227164cb90ed1ac09c1a28a4f",      "user_id": "0",      "ext_version": "1.0.15",      "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36",      "accept_language": "en-US",      "referer": "background.js",      "action_id": "ext_install",      "type": "action"    }  ]}
The code that does this

Building and sending the telemetry payload

Readable version

Collecting browser + page context

// Reads the fields that get attached to every telemetry event.function collectBrowserContext() {  return {    user_agent: navigator.userAgent,    accept_language: navigator.language,    referer: location.href, // the extension's own background page at install time;                             // the current tab's URL when fired from a content script  };}

Assembling the event

// Merges the persistent device identity with the event-specific fields.async function buildBaseEvent() {  const anonymousUserId = await getOrCreateUserId();  const signUpAt = await getOrSetSignUpAt();  const manifest = chrome.runtime.getManifest();  return {    extension_name: "ng_google_summary",    anonymous_user_id: anonymousUserId,    user_id: 0,    created_at: nowTimestamp(),    ext_version: manifest.version,    sign_up_at: signUpAt,  };}async function logEvent(eventFields) {  const base = await buildBaseEvent();  logService().send(Object.assign(base, eventFields));}

Building the log-service URL and sending

// Alibaba Cloud Log Service ('SLS') client.this.url = `https://${project}.${host}/logstores/${logstore}/track`;// project="nc-dn-us", host="us-west-1.log.aliyuncs.com", logstore="extensions"function sendViaBeacon(url, body) {  return navigator.sendBeacon && navigator.sendBeacon(`${url}?APIVersion=0.6.0`, body);}function sendViaFetch(url, body) {  fetch(url, {    method: "POST",    body: new Blob([body], { type: "application/x-protobuf" }),    headers: { "x-log-apiversion": "0.6.0", "x-log-bodyrawsize": String(body.length) },  });}
Full field set collected into every event
  • Extension name
    ng_google_summary

    A hardcoded internal product name for this extension family.

  • Persistent device ID
    849596c227164cb90ed1ac09c1a28a4f

    A tracking ID unique to your install, sent with every event.

  • Extension version
    1.0.15

    The installed version number, read from the manifest.

  • Sign-up timestamp
    1757347200

    The time you first installed the extension, stored locally.

  • Browser user agent
    Mozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/128.0.0.0

    Your full browser and OS version string.

  • Browser language
    en-US

    Your browser's configured display language.

  • Referring page
    background.js

    The extension's own page at install; the tab URL you're on for later events.

  • Event name
    ext_install

    Which action triggered this event, e.g. install or a summarize click.

The same pipe fires again on feature use
  1. on click

    You did

    You click 'Ask ChatGPT to summarize' on a Udemy course page.

    The extension did

    The current page URL is sent as the referer field to Alibaba Cloud, tagged with your persistent ID.

  2. on click

    You did

    You click summarize on a Coursera lecture page.

    The extension did

    The same event pipe reports that page's URL, action name, and your persistent ID.

  3. on click

    You did

    You click summarize on a Vimeo video page.

    The extension did

    The event pipe reports that page's URL, action name, and your persistent ID as well.

Third-party destinations
    • nc-dn-us.us-west-1.log.aliyuncs.com

    Alibaba Cloud Log Service project that ingests install and page-visit telemetry tagged with your persistent anonymous ID.

What it can do

Permissions this extension asks for, as declared in version 1.0.15. Asking for a permission is not a finding on its own - it is what the extension can do if it chooses to.

  • Read and change your data on openai.com

    https://*.openai.com/

  • Store data in your browser

    storage

Updated 30 September 2026gfecljmddkaiphnmhgaeekgkadnooafb