Is eimmigration CBP Importer safe?
eimmigration CBP Importer fetches a script from eimmigration.com and runs it in the active tab's page.
When the user selects a travel-history row and clicks Import, the side panel downloads cbpImport.js from the vendor's server and injects it into the active tab's page context, along with jQuery from code.jquery.com. The script is not pinned or integrity-checked, and no check is made on the tab's URL before injection. The injected code receives the row data (name, date of birth, passport number, country) to fill in forms, and the intended target is the CBP I-94 site.
Strong link to a flagged operator: 1 of the 1 other listing from the same operator is rated high or critical for malicious behaviour. Flagged: eimmigration e-Filer (high).
Who publishes itCerenade - 1 other listing from the same operator, 1 of them carrying a finding
Cerenade - 1 other listing from the same operator, 1 of them carrying a finding
What this publisher told the store about itself, and the other listings that told it the same thing.
Same store account
1 other listing published from this account, 1k+ users between them. 1 of them carries a finding.
Shared hosts - 1 hostname
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
Side panel runs vendor-hosted script in any active tab with no URL check
Code analysis shows Import fetches a script from eimmigration.com and runs it in the active tab's page context, whatever site that is.
The script is unpinned, so the vendor server decides what executes.
- Severity
- High unwanted
- Type
- Unexpected
- CWE
- CWE-829
- Source
- Static analysis
You select a travel-history row in the side panel and click Import.
The extension downloads a script from the vendor's server and runs it inside whichever tab is active.
The tab's address is never checked.
Active tab chosen without a URL gate, then remote script injected
Fetch, concatenate, inject into MAIN world
popup.jsconst res = await fetch(scriptUrl);if (!res.ok) throw new Error("Failed to fetch script: " + res.statusText);const jsCode = await res.text();// fullCode = fetch/XHR hooks + eoapi mock + ${jsCode} + populateFields(${JSON.stringify(formData)})await chrome.scripting.executeScript({ target: { tabId }, world: "MAIN", func: (code) => { const script = document.createElement("script"); script.textContent = code; (document.head || document.documentElement).appendChild(script); setTimeout(() => script.remove(), 2000); }, args: [fullCode],});- First and last nameMaria Example
Taken from the side panel detail fields.
- Date of birth04/17/1988
Split into month, day and year.
- Travel document numberX1234567 (illustrative)
From the selected travel-history row.
- Issuing countryBrazil (illustrative)
From the selected travel-history row.
- www.eimmigration.com
Serves cbpImport.js, run in the page's JS context with the row data.
- code.jquery.com
Serves jquery-3.6.0.min.js, added to the page when jQuery is absent.
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.
What it can do
Permissions this extension asks for, as declared in version 1.0.28.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 eimmigration.com
https://eimmigration.com/*
Read and change your data on www.myecms.com
https://www.myecms.com/*
Read and change your data on i94.cbp.dhs.gov
https://i94.cbp.dhs.gov/*
Store data in your browser
storage
Run its own code inside the pages you visit
scripting
See the address and title of every tab you have open
tabs
Act on the current tab, but only after you click the extension
activeTab
Show a panel beside the page
sidePanel
See every page you navigate to, as you navigate to it
webNavigation
Where it sends data
Destinations our analysis observed eimmigration CBP Importer 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.eimmigration.com
eimmigration CBP Importer sends data to www.eimmigration.com. One other extension we have analysed sends data here.