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.

USPS Trackingv1.0.0.0Chrome Web Store
75Risk

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

Publishers can request a review.

Findings

SeverityHIGH
ClassUNWANTED
TypeUnexpected
CWECWE-506
SourceAI SANDBOX

Default Search Engine Replaced With trackingnumbers.org

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

Once accepted, address-bar input routes to trackingnumbers.org/admin-fedex/public/link, so that host gets every search term.

Confirmed on activation.

01EvidenceCAUSE EFFECT
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.

02EvidenceCODE COMPARE
The code that does this

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

What it actually does
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.
03EvidenceNETWORK CAPTURE
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.
04EvidenceNETWORK CAPTURE
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.
05EvidenceTHIRD PARTY LIST
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.

06EvidencePLAIN NOTE
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.

SeverityMEDIUM
ClassUNWANTED
TypeUnexpected
CWECWE-359
SourceAI SANDBOX

Persistent 5-Year Tracking Cookie, Restored When Deleted

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.

A listener restores it if removed or on startup.

Confirmed: cookie, expiry, heavy write volume.

01EvidenceCAUSE EFFECT
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.

02EvidenceFIELD TABLE
The persistent identifier this extension maintains:
FieldValueWhy it matters
Your tracking ID (uid)
4e6e1f55-1c64-47a7-be1f-f43b840d0500A 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.
03EvidenceCODE COMPARE
The code that does this

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

What it actually does
Cookie factory
const DOMAIN = "trackingnumbers.org";
const FIVE_YEARS_SEC = 5 * 365 * 24 * 60 * 60; // five-year lifetime

function 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));
  }
})();
04EvidenceTEMPORAL PATTERN
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.

05EvidenceTHIRD PARTY LIST
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.

Data recipients

trackingnumbers.org
Updated 17 September 2026klkckidpelgokgleimknappemeclljlk