Is AI Marketing Consultant safe?
We analyzed AI Marketing Consultant version 1.2's actual code and gave it a 65/100 trust score. The extension is broadly present on webpages and exposes…
Bottom line
The extension is broadly present on webpages and exposes user questions to OpenAI, but the package shows no clear abusive behavior.
What it can access
It can add a support button across HTTP and HTTPS homepages, although it does not read those pages; it also handles questions users type into its chat. [Q1][Q2][Q3]
Security weaknesses
A developer service key is exposed to every user, and unsanitized remote replies are inserted into the chat display, creating avoidable security risks. [Q14][Q17]
Signs of misuse
The package shows no evidence of tracking visited sites, hidden resource use, or suspicious conditional behavior; sending chat questions to OpenAI matches the advertised feature. [Q6][Q12][Q22][Q23]
Code findings
What access does this extension ask for, and does that access make sense for what it claims to do?
It requests storage and runs a page access on ExtensionPay and HTTP/HTTPS site homepages. Storage supports billing, but general page access is unnecessary for the advertised chat feature.
Declares storage and content scripts for ExtensionPay plus HTTP and HTTPS root pages. — manifest.json:8-35
Which websites can it run on, and can it read or change what appears on those pages?
It runs on HTTP and HTTPS site homepages and adds a payment button, but the packaged script does not inspect existing page content.
Creates a fixed support button, binds it to ExtensionPay and prepends it to document.body without reading the page. — content.js:6-15
Loads that script on HTTP and HTTPS root-page match patterns. — manifest.json:31-34
Can it see sensitive information you type, such as passwords, payment details, messages, or form entries?
It receives questions typed into its own chat field, which could contain sensitive information if a user chooses to enter it. It does not read passwords or forms from websites.
Provides the extension-owned chat input. — popup.html:24-31
Reads the submitted value and sends it to OpenAI. — popup.js:73-97
Can it access private browser data such as cookies, signed-in sessions, browsing history, bookmarks, or downloads?
It stores an ExtensionPay payment key, installation time and payment/trial status in extension storage. It has no cookie, history, bookmark or download permission.
Uses extension sync storage with local-storage fallback. — ExtPay.js:1257-1271
Stores installation time. — ExtPay.js:1292-1301
Stores the generated ExtensionPay API key. — ExtPay.js:1337-1339
The only named permission is storage. — manifest.json:8-8
Can it access anything else on your device, such as files, location, camera, microphone, clipboard, or installed applications?
No evidence of this behavior was found in the reviewed package.
Requests storage only and declares no device-facing permission. — manifest.json:8-35
Does it send information outside your browser? If so, what information is sent, where does it go, and why?
Submitted marketing questions go directly to OpenAI. ExtensionPay receives a generated payment key and returns subscription status.
Sends the user's submitted text to api.openai.com and reads the response. — popup.js:73-97
Creates an ExtensionPay key. — ExtPay.js:1326-1339
Uses that key to retrieve and store payment/trial status. — ExtPay.js:1352-1397
Does it download or run code, settings, or instructions supplied by a remote server?
No evidence of this behavior was found in the reviewed package.
Parses the OpenAI JSON response and displays its text. — popup.js:80-97
Parses fixed payment-status fields from ExtensionPay. — ExtPay.js:1352-1398
Can it take actions without a clear user request, such as opening pages, redirecting searches, downloading files, or sending requests?
It automatically opens the developer's support page after installation and every update. It also automatically contacts ExtensionPay when its background worker starts.
Starts ExtensionPay, fetches user status and opens a fixed support URL on install or update. — background.js:7-20
Can it change important browser settings, including your proxy, search engine, homepage, privacy settings, or other extensions?
No evidence of this behavior was found in the reviewed package.
Requests none of the permissions needed for those browser settings. — manifest.json:8-35
Is any important behavior difficult to inspect because the code is hidden, heavily obfuscated, dynamically generated, or supplied by third parties?
No evidence of this behavior was found in the reviewed package.
The chat and UI logic is unobfuscated source. — popup.js:1-313
The included ExtPay library retains readable network and messaging logic. — ExtPay.js:1234-1554
Does it use eval(), new Function(), or string-based timers to turn text into executable code?
No evidence of this behavior was found in the reviewed package.
Uses Manifest V3 with no relaxed extension content-security policy. — manifest.json:4-35
Targeted sink review found no text-to-code execution. — popup.js:1-313
Does it track the websites, pages, searches, or links you visit?
No evidence of this behavior was found in the reviewed package.
Contains no URL or page-observation logic. — content.js:6-15
Requests no tabs, webNavigation or history permission. — manifest.json:8-35
Does it create a persistent ID or browser fingerprint to recognize you?
ExtensionPay creates a persistent key for subscription status, but no advertising fingerprint or cross-site browsing profile was found.
Creates and stores an ExtensionPay API key when needed. — ExtPay.js:1306-1347
Uses the key only with the fixed ExtensionPay extension endpoint. — ExtPay.js:1352-1397
Does it send cookies, session details, authentication data, or page contents elsewhere?
The package exposes the developer's OpenAI services key and sends it to OpenAI with every chat request. This is not a user's credential, and current key validity was not tested.
Hard-codes an OpenAI secret key in code distributed to every user. — popup.js:48-48
Places that key in the Authorization header for the fixed OpenAI endpoint. — popup.js:81-92
Does it record typing, form entries, clipboard contents, or screenshots?
No evidence of this behavior was found in the reviewed package.
Reads the chat input in a submit handler. — popup.js:73-78
Declares no clipboard or capture permission and no form-monitoring script. — manifest.json:8-35
Can a website or remote server send commands that make the extension take actions?
Only ExtensionPay pages can send two fixed messages that refresh payment or trial status. The bridge checks both the exact origin and the same window, and cannot issue arbitrary commands.
Accepts only fetch-user or trial-start from https://extensionpay.com and the current window. — ExtPay.js:1237-1246
Handles those fixed messages as payment-status refreshes. — ExtPay.js:1537-1551
Does it alter links, referral codes, advertisements, shopping carts, or search results?
No evidence of this behavior was found in the reviewed package.
Prepends the ExtensionPay support button to matching webpages. — content.js:8-15
Uses innerHTML for ordinary messages without sanitization. — popup.js:55-68
Passes the remote OpenAI response into that HTML sink. — popup.js:94-97
Does it redirect or modify web traffic, request headers, downloads, or proxy settings?
No evidence of this behavior was found in the reviewed package.
Declares no webRequest, declarativeNetRequest, downloads or proxy permission. — manifest.json:8-35
Can it communicate with software on the computer or services running on localhost?
No evidence of this behavior was found in the reviewed package.
Declares no nativeMessaging permission or localhost host access. — manifest.json:8-35
Does it decode, decrypt, or unpack hidden data and then execute or inject it?
No evidence of this behavior was found in the reviewed package.
Reads a JSON string and passes it to innerHTML; it does not evaluate the string as code. — popup.js:94-97
Uses Manifest V3 without a relaxed extension content-security policy. — manifest.json:4-35
Can ordinary websites access privileged extension features through messaging or exposed files?
ExtensionPay pages have a narrowly limited bridge to refresh payment state. Exact-origin, same-window and fixed-message checks prevent ordinary sites from using it for other extension actions.
Checks exact ExtensionPay origin and accepts only two literal messages. — ExtPay.js:1237-1246
Loads the payment bridge only on ExtensionPay pages. — manifest.json:25-30
Does suspicious behavior activate only for certain users, websites, dates, or remote settings?
No evidence of this behavior was found in the reviewed package.
Uses ExtensionPay's paid and trial fields solely to show or hide the advertised chat feature. — popup.js:11-46
Does it perform hidden resource-intensive work, such as cryptocurrency mining?
No evidence of this behavior was found in the reviewed package.
Background work is limited to ExtensionPay initialization and the install/update support tab. — background.js:1-20
Does it change form fields or where a form sends its information?
No evidence of this behavior was found in the reviewed package.
Creates a standalone button and does not inspect forms or inputs. — content.js:8-15
Handles only the extension-owned chat form and sends it to the fixed OpenAI endpoint. — popup.js:73-93