Is Amazon Keyword for Seller safe?
Amazon Keyword for Seller fetches server-chosen URLs from your browser and sends Seller Central brand reports to its servers.
On startup the extension opens a WebSocket to internal.sellerapp.com, sending your IP address and country, and then fetches whatever URLs the server requests using your browser, returning the parsed page data. Once a month it also uses your logged-in Amazon Seller Central session to download Brand Analytics Query Performance reports for your brands and posts them to api.sellerapp.com. Neither behavior is surfaced in the keyword tool's interface.
Who publishes itremix - 2 other listings from the same operator, none carrying a finding
remix - 2 other listings from the same operator, none carrying a finding
What this publisher told the store about itself, and the other listings that told it the same thing.
Same store account
2 other listings published from this account, 1k+ users between them, none of them carrying a finding.
Shared hosts - 4 hostnames
Hostnames hardcoded in this extension that few other listings call. That can mean one operator behind both, and it can equally mean a small shared vendor, so it is context rather than a conclusion. Hosts that many listings call are left out: they are services, not connections.
AI-generated. Findings may contain errors. Those marked Verified have been manually reviewed.
Publishers can request a review.
Findings
Keyword tool opens a sellerapp.com socket and fetches URLs the server names
Code analysis shows the service worker opens a WebSocket to sellerapp.com on startup and fetches server-chosen URLs from your browser, returning parsed pages.
- Severity
- High unwanted
- Type
- Unexpected
- CWE
- CWE-506
- Source
- Static analysis
The extension's background worker starts after install or browser launch.
It opens a WebSocket to internal.sellerapp.com and waits for URLs to fetch.
Socket connect URL and job handler
Fetch helper used for server-supplied URLs
src/pages/background/index.jsconst uE = async e => { try { return await (await fetch(e, {method: "GET", mode: "cors"})).text() } catch (t) { return await (t == null ? void 0 : t.text()) || "" }}- Socket IDid=3f9a1c52-7d0e-4b8a-9e21-5c6d8a0b1f47
A persistent random ID that identifies this install to the server.
- IP addressip_address=203.0.113.24 (illustrative)
The public IP address returned by lumtest.com.
- Countrygeo=US
The country code returned by the same lookup.
- internal.sellerapp.com
Receives the socket connection and sends URLs to fetch.
- lumtest.com
Returns the device public IP and country.
Static analysis finding. This behaviour was identified by reading the shipped extension code and has not yet been reproduced in a live run. The trigger conditions and the exact data sent are read from the code, not from an observed capture.
Keyword tool sends Seller Central Brand Analytics reports to sellerapp.com
Code analysis shows the service worker uses a logged-in Seller Central session to request brand reports and send them to api.sellerapp.com.
- Severity
- High unwanted
- Type
- Unexpected
- CWE
- CWE-359
- Source
- Static analysis
The background worker starts while the browser holds a Seller Central login.
It requests Brand Analytics reports for each brand and posts them to api.sellerapp.com.
Report fetch and upload
Report request body
src/pages/background/index.jsawait wr.post(u, { viewId: "query-performance-brands-view", filterSelections: [{id: "brand", value: e}, {id: "reporting-range", value: "monthly"}, {id: "monthly-year", value: "2024"}, {id: "2024-month", value: "2024-04-30"}], selectedCountries: [t], reportId: "query-performance-brand-report-table", reportOperations: [{reportType: "TABLE", pageNumber: o, pageSize: 100, sortByColumnId: "qp-query-rank", ascending: !0}]})- Brand nameAcme Outdoors (illustrative)
The display name of a brand in the seller's account.
- Brand codebrand_code: ENT-48213 (illustrative)
The Seller Central identifier for that brand.
- Report month2024-04-30
The month the report covers.
- MarketplaceATVPDKIKX0DER (illustrative)
The Amazon marketplace the report came from.
- Report datareportsV2[0] rows, 100 per page
Paged query performance rows returned by Seller Central.
- api.sellerapp.com
Receives the brand report via /sellmetricsv2/market_basket_report.
- sellercentral.amazon.com
Source of the Brand Analytics reports, read with the signed-in session.
Static analysis finding. This behaviour was identified by reading the shipped extension code and has not yet been reproduced in a live run. The trigger conditions and the exact data sent are read from the code, not from an observed capture.
Where it sends data
Destinations our analysis observed Amazon Keyword for Seller contacting. Sending data somewhere is not a finding on its own - an extension that syncs your settings has to talk to its own server - but it is where your data can go, and who else it goes to.
- api.sellerapp.com
Amazon Keyword for Seller sends data to api.sellerapp.com. 2 other extensions we have analysed send data here.
- internal.sellerapp.com
Amazon Keyword for Seller sends data to internal.sellerapp.com. No other extension we have analysed sends data here.