Is FedEx Tracking safe?

High risk

FedEx Tracking redirects all omnibox searches to trackingnumbers.org and sets a persistent UUID tracking cookie that is restored if deleted.

On installation, the extension overrides Chrome's default search engine so all omnibox queries are sent to trackingnumbers.org/admin-fedex/public/link. It also generates a UUID on first install, stores it in synced storage, and sets a 5-year cookie on trackingnumbers.org. A cookie listener actively re-creates that cookie if the user deletes it.

Strong link to a flagged operator: 2 of the 2 other listings from the same operator are rated high or critical for malicious behavior. Flagged: USPS Tracking (high), UPS Tracking (high).

USPS Trackingv1.0.0.0Chrome Web Store
75Risk
Who publishes it

USPS Tracking - 2 other listings from the same operator, 2 of them carrying a finding

What this publisher told the store about itself, and the other listings that told it the same thing.

Publisher
USPS Tracking

Same store account

2 other listings published from this account, 90k+ users between them. 2 of them carry a finding.

AI-generated. Findings may contain errors. Those marked Verified have been manually reviewed.

Publishers can request a review.

Findings

Default Search Engine Replaced With trackingnumbers.org

HighunwantedCWE-506Dynamic sandbox

Branded 'FedEx Tracking,' this extension sets itself as the default search engine.

What actually happens

You did this

You type a search into the Chrome address bar.

Any term you type and submit from the omnibox, on any site.

The extension did this

The search is routed to trackingnumbers.org instead of the search engine you previously used.

The query, including what you typed, is delivered to a host bundled with this extension rather than your chosen provider.

The code that does this

The default-search declaration shipped in the extension's manifest.

Readable version

What the declaration does

// On install, Chrome sets this host as the default search engine.// Every address-bar query then resolves to://   https://trackingnumbers.org/admin-fedex/public/link?q=<your query>// Autosuggest dropdown entries are fetched from://   https://trackingnumbers.org/admin-fedex/public/autosuggest?searchTerm=<partial>// The extension is branded "FedEx Tracking"; the search host is unrelated// to the FedEx brand and is named only "Online" in the declaration.

Captured request

GEThttps://trackingnumbers.org/admin-fedex/public/link?q=fedex+tracking+number

Illustrative omnibox request: each address-bar search resolves to this endpoint with the typed term in the q parameter. The autosuggest endpoint (.../public/autosuggest?searchTerm=...) is queried as the user types.

Captured request

GEThttps://trackingnumbers.org/admin-fedex/public/install

Observed during dynamic analysis on activation: the service worker contacts the admin-fedex backend, corroborating that the search-override host is the live destination configured by the extension.

Where address-bar searches are routed

    • trackingnumbers.org

    Receives every omnibox search term via /admin-fedex/public/link and as-you-type input via /admin-fedex/public/autosuggest. Also contacted on install; holds the uid cookie.

Caveat on the install prompt

Chrome shows a one-time prompt before applying a default-search-engine override. The routing described here takes effect once that prompt is accepted. The override is declared unconditionally in the shipped manifest; whether it activates depends on the user accepting the prompt.

Persistent 5-Year Tracking Cookie, Restored When Deleted

MediumunwantedCWE-359Dynamic sandbox

On install, the extension makes a random UUID, stores it in chrome.storage.sync, and sets a 'uid' cookie on trackingnumbers.org, 5-year expiry.

What actually happens

You did this

You install the extension (or delete its tracking cookie).

No further action is required; the identifier is created on install and re-created if removed.

The extension did this

A persistent UUID is written as a cookie on trackingnumbers.org with a five-year lifetime, and is re-created if you delete it.

The same UUID is also kept in chrome.storage.sync, which is the source used to restore the cookie.

The persistent identifier this extension maintains

  • Your tracking ID (uid)
    4e6e1f55-1c64-47a7-be1f-f43b840d0500

    A random identifier unique to your install. It lets trackingnumbers.org recognise you across visits for as long as it persists.

  • Where it is stored
    uid cookie on trackingnumbers.org (secure, sameSite=strict)

    The identifier is written as a cookie on trackingnumbers.org, so it is sent with direct requests to that host.

  • How long it lasts
    expires 2031-06-14 (5 years)

    The cookie is set to expire five years after it is written, far longer than typical session cookies.

  • Backup copy
    chrome.storage.sync { uid: "4e6e1f55-..." }

    A second copy is held in extension storage and used to put the cookie back if you delete it.

The code that does this

The cookie creation and restore-on-removal logic, from the extension's background service worker.

Readable version

Cookie factory

const DOMAIN = "trackingnumbers.org";const FIVE_YEARS_SEC = 5 * 365 * 24 * 60 * 60; // five-year lifetimefunction makeUidCookie(uid) {  return {    url: `https://${DOMAIN}`,    name: "uid",    value: uid,    sameSite: "strict",    secure: true,    expirationDate: Math.floor(Date.now() / 1000) + FIVE_YEARS_SEC,  };}

Mint, restore-on-removal, and startup re-creation

// On fresh install: mint and store the identifier, then set the cookie.chrome.runtime.onInstalled.addListener(async ({ reason }) => {  if (reason === "install") {    const uid = crypto.randomUUID();    await chrome.storage.sync.set({ uid, randomNumber });    await chrome.cookies.set(makeUidCookie(uid));    // ...  }});// If the cookie is deleted, put it back from storage.chrome.cookies.onChanged.addListener(async ({ cookie, removed }) => {  if (removed && cookie.domain.endsWith(DOMAIN) && cookie.name === "uid") {    const { uid } = await chrome.storage.sync.get("uid");    if (uid) await chrome.cookies.set(makeUidCookie(uid));  }});// On browser startup, re-create the cookie if it is missing but the UID exists.(async () => {  const cookie = await chrome.cookies.get({ url: `https://${DOMAIN}`, name: "uid" });  if (!cookie) {    const { uid } = await chrome.storage.sync.get("uid");    if (uid) await chrome.cookies.set(makeUidCookie(uid));  }})();

When this fires

On every browser startup

On every browser startup the extension checks for the uid cookie and re-creates it from stored state if it is missing, in addition to restoring it immediately whenever it is deleted.

Where the persistent identifier is sent

    • trackingnumbers.org

    Holds the uid cookie and gets it on direct requests, including searches routed to /admin-fedex/public/link. Same host contacted on install and set as the default search engine.

What it can do

Permissions this extension asks for, as declared in version 1.0.0.0. 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 trackingnumbers.org

    https://trackingnumbers.org/*

  • Store data in your browser

    storage

  • Read and change cookies, including the ones that keep you signed in

    cookies

Where it sends data

Destinations our analysis observed FedEx Tracking 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.

  • trackingnumbers.org

    FedEx Tracking sends data to trackingnumbers.org. One other extension we have analyzed sends data here.

Updated 15 October 2026klkckidpelgokgleimknappemeclljlk