Is Summary with ChatGPT for Google and YouTube safe?
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.…
Who publishes itDunkum Sherwin - 4 other listings from the same operator, 1 of them carrying a finding
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.
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
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 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.
- Your search queryhow does photosynthesis work
The exact text you searched for on Google.
- Result linkshttps://www.khanacademy.org/science/biology/photosynthesis-in-plants
The URLs of up to 6 search results shown on the page.
- Result titlesPhotosynthesis - Khan Academy
The headline text of each search result.
- Result snippetsPhotosynthesis is the process by which plants convert light energy into chemical energy.
The preview text Google shows under each result.
Scraping the search page and building the ChatGPT prompt
// 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}`;Streaming server-sent-events response containing the ChatGPT-generated answer text.
- Content-Type
- application/json
- Authorization
- Bearer <redacted>
{ "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" ] } } ]}- 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
You install and start using the extension.
There is no separate consent step for the tracking ID itself.
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.
Generating and persisting the tracking ID
// 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());}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.
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.204 No Content; the ID is ingested into the log service and not echoed back.
{ "__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" } ]}- 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
You install the extension from the Chrome Web Store.
No telemetry consent dialog appears at any point.
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.
204 No Content. A fire-and-forget log-ingestion endpoint; the extension does not read or act on the response.
{ "__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" } ]}Building and sending the telemetry payload
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) }, });}- Extension nameng_google_summary
A hardcoded internal product name for this extension family.
- Persistent device ID849596c227164cb90ed1ac09c1a28a4f
A tracking ID unique to your install, sent with every event.
- Extension version1.0.15
The installed version number, read from the manifest.
- Sign-up timestamp1757347200
The time you first installed the extension, stored locally.
- Browser user agentMozilla/5.0 (Windows NT 10.0; Win64; x64) Chrome/128.0.0.0
Your full browser and OS version string.
- Browser languageen-US
Your browser's configured display language.
- Referring pagebackground.js
The extension's own page at install; the tab URL you're on for later events.
- Event nameext_install
Which action triggered this event, e.g. install or a summarize click.
on click
You didYou click 'Ask ChatGPT to summarize' on a Udemy course page.
The extension didThe current page URL is sent as the referer field to Alibaba Cloud, tagged with your persistent ID.
on click
You didYou click summarize on a Coursera lecture page.
The extension didThe same event pipe reports that page's URL, action name, and your persistent ID.
on click
You didYou click summarize on a Vimeo video page.
The extension didThe event pipe reports that page's URL, action name, and your persistent ID as well.
- 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