Is Choose All Languages safe?
Tabblar redirects visits to 14 brand sites to the developer's referral links, once per 24 hours per site.
A content script runs on every http(s) page and, when the hostname matches a built-in list (Amazon, PayPal, Rakuten, Honey, NordVPN and others), sets the page location to the developer's affiliate URL. It repeats this at most once every 24 hours per site and the code shows no user-facing setting for it, only a hidden query parameter that blocks it. The code does not send page URLs or user data to a vendor server.
Who publishes itAnaya Woods - no other listings under this identity, 2 shared hostnames
Anaya Woods - no other listings under this identity, 2 shared hostnames
What this publisher told the store about itself, and the other listings that told it the same thing.
Shared hosts - 2 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
Errors.net library reports each page URL and a persistent ID on every page load
Code analysis shows every page you load is reported to errors.net with a persistent ID, the page URL and window size.
The content script runs on all sites.
- Severity
- High unwanted
- Type
- Unexpected
- CWE
- CWE-359
- Source
- Static analysis
You load any web page.
The extension sends the page address, load timings and window size to errors.net, tagged with a persistent ID.
- Persistent ID3f9a1c7e5b2d4a80b6e1c9d47a3f2e15
A random ID stored in sync storage, so visits can be linked over time.
- Page addresshttps://example.com/account/orders?id=1042
The navigation timing name field holds the full URL of the page.
- Window geometryow 1440, oh 900, iw 1425, ih 812
Screen position and inner and outer window sizes.
- Load timingsduration 1243.7 ms
Timing of each stage of the page load.
Content script collection and service worker upload
Collection
performance.jsconst timing = performance.getEntriesByType('navigation')[0].toJSON(); // timing.name is the page URLchrome.runtime.sendMessage({ time, timing, dimensions });Upload
sw.jsconst { uuid } = await chrome.storage.sync.get('uuid');const reply = await perf({ uuid, performance: timing, dimensions });// perf() POSTs JSON to https://errors.net/performance/?license=<apikey>- errors.net
Receives the per-page report; the license query parameter is a hardcoded key.
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.
Errors.net replies can open tabs or windows and redirect failed page loads
Code analysis shows errors.net can reply with a tab or window to open, with no checks.
Pages that return 4xx or 5xx, or fail DNS, are also sent to errors.net with the URL.
- Severity
- High unwanted
- Type
- Unexpected
- CWE
- CWE-829
- Source
- Static analysis
errors.net answers the per-page report with a notice or alert object.
The extension opens a tab or window using the properties the server supplied, including the URL.
Server-driven tabs and error-page redirects
Reply handling
sw.jsif (reply?.notice) chrome.tabs.create(reply.notice);else if (reply?.alert) chrome.windows.create(reply.alert);Error handling
sw.js// main_frame response with status 4xx or 5xx, hostname not in last 5 handled:chrome.tabs.create({ url: 'https://errors.net/error/?errorurl=' + url + '&error=' + status + '&uuid=' + uuid });chrome.tabs.remove(tabId);// main_frame RESOLVE error: tabs.update to the same errors.net/error/ URL with error=nx- Failed page addresshttps://shop.example.org/cart/checkout?session=8841
The full URL of the page that failed is placed in the errors.net address.
- Persistent ID3f9a1c7e5b2d4a80b6e1c9d47a3f2e15
The same stored UUID is added to the address.
- Error type404
The HTTP status code, or nx for a DNS failure.
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 Choose All Languages 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.rakuten.com
Choose All Languages sends data to www.rakuten.com. 4 other extensions we have analysed send data here.
- giftly.app
Choose All Languages sends data to giftly.app. 3 other extensions we have analysed send data here.
- r.honeygain.me
Choose All Languages sends data to r.honeygain.me. 3 other extensions we have analysed send data here.
- ref.nordvpn.com
Choose All Languages sends data to ref.nordvpn.com. 3 other extensions we have analysed send data here.
- www.joinhoney.com
Choose All Languages sends data to www.joinhoney.com. 3 other extensions we have analysed send data here.
- py.pl
Choose All Languages sends data to py.pl. 2 other extensions we have analysed send data here.