Is Cityscapes safe?
Cityscapes sends each Chrome top-sites URL to Google's favicon service when it renders the new-tab page.
Cityscapes replaces Chrome's new-tab page and reads the browser's topSites list to show frequently visited sites. For each listed site, it builds a favicon request to Google's service with the site's URL in the domain_url query parameter.
Who publishes itMNS Digital Media - 2 other listings from the same operator, none carrying a finding
MNS Digital Media - 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, 11k+ users between them, none of them carrying a finding.
AI-generated. Findings may contain errors. Those marked Verified have been manually reviewed.
Publishers can request a review.
Findings
New tab page sends your most-visited site URLs to Google's favicon service
Opening a new tab renders a widget of your most-visited sites.
For each one, the extension requests an icon from Google's favicon service, sending that site's full URL as a query parameter.
Confirmed via live traffic capture.
- Severity
- Medium unwanted
- Type
- Unexpected
- CWE
- CWE-359
- Source
- Dynamic sandbox
You open a new browser tab.
Cityscapes overrides Chrome's new tab page and renders a widget built from the chrome.topSites API.
The extension requests a site icon from Google for every top site shown.
Each tile's full URL is sent in the domain_url query parameter of a request to www.google.com/s2/favicons.
New-tab widget: fetching top sites and building the favicon request
Favicon URL builder
const buildFaviconUrl = (site) => `https://www.google.com/s2/favicons?sz=48&domain_url=${encodeURIComponent(site.url)}`;Top-sites fetch and render
const getTopSites = (callback) => { if (self.chrome && chrome.topSites) { return void chrome.topSites.get(callback); } // Fallback list used only when chrome.topSites is unavailable callback([{ title: "Gmail", url: "https://mail.google.com/" }]);};TopSitesWidget.init = () => new Promise((resolve) => { getTopSites((sites) => { render( createElement(TopSitesTiles, { topSites: sites }), document.getElementById("top-sites-widget-root"), resolve ); }); });Observed during dynamic analysis: 6 near-identical requests fired within 5 seconds of opening a new tab, one per tile, with domain_url matching each site shown. Google returns a small icon image.
- www.google.com
Receives the full URL of each top site you visit via the s2/favicons endpoint, operated by Google, which also builds Chrome and runs its ads business.
What it can do
Permissions this extension asks for, as declared in version 1.3.0. Asking for a permission is not a finding on its own - it is what the extension can do if it chooses to.
Store data in your browser
storage
Read the sites you visit most
topSites
Where it sends data
Destinations our analysis observed Cityscapes 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.
- www.google.comwidely used
Cityscapes sends data to www.google.com. A widely used service: 153 other extensions we have analysed send data here.