Is video downloader safe?

Medium risk

The extension fetches remote config from GitHub daily and runs scripts in every open browser tab on a remotely controlled schedule.

On each YouTube page visit, the extension transmits the page URL to vidow.me to retrieve video metadata. Every 24 hours it downloads a JSON config file from vdrt-chromium.github.io and stores its contents directly into local storage without integrity checks; this config controls how often the extension runs scripts across all open tabs. A periodic alarm — whose firing interval is set by that remote config — causes the extension to call chrome.scripting.executeScript on every tab the browser has open, regardless of the tab's origin.

Video Downloader Prov2.7.2Chrome Web Store
49Risk

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

Publishers can request a review.

Findings

Periodic Script Runs Across All Open Tabs

MediumunwantedCWE-506Dynamic sandbox

The service worker queries all open tabs on a periodic health-check alarm, then runs a script reading page navigation timing.

What actually happens

You did this

A repeating health-check alarm fires while the browser is open.

Dynamic analysis observed the tab query at 19:05:18 and again at 19:06:18.

The extension did this

The extension asks Chrome for every open tab and runs a timing script inside tabs with ids.

The observed follow-up call executed the script on tab 1585209811.

When this fires

Every 1 minute

The health-check alarm repeats once per minute by default, and the interval can be changed by configuration stored in the extension.

Fields accessed during the periodic tab check

  • Open tab id
    1585209811

    Lets the extension choose which open page receives the timing script.

  • Page start time
    1720811118123

    Shows when the page began loading in your browser.

  • Page finish time
    1720811119468

    Shows when the page load event finished in your browser.

  • Calculated load time
    1345 ms

    Turns the two timing values into a page-load duration for that tab.

Captured request

GEThttps://vdrt-chromium.github.io/cdn/vidurlpatterns.json

JSON configuration includes updateHealthCheckPeriod: 1

The code that does this

Alarm handler that queries every tab and executes the timing function

Readable version
function f(e) {  chrome.alarms.create("healthCheck", {    periodInMinutes: e  })}chrome.alarms.create("fetchUrlPatterns", {  periodInMinutes: 1440}), chrome.alarms.onAlarm.addListener((e => {  "healthCheck" === e.name && async function() {    const e = () => {      let e = window.performance.timing.navigationStart,        t = window.performance.timing.loadEventEnd;      return {        startTime: e,        endTime: t,        loadTime: t - e      }    };    (await chrome.tabs.query({})).forEach((async t => {      if (t.id) try {        await chrome.scripting.executeScript({          target: {            tabId: t.id          },          func: e        })      } catch (t) {}    }))  }(), "fetchUrlPatterns" === e.name && async function() {    try {      const e = await fetch(b),        t = await e.json();      chrome.storage.local.set(t)    } catch (e) {      console.error("Failed to fetch URL patterns:", e)    }  }()})), chrome.storage.onChanged.addListener((e => {  if (e.patterns) {    p(e.urlPatterns.newValue.values())  }  if (e.updateHealthCheckPeriod) {    f(e.updateHealthCheckPeriod.newValue)  }})), chrome.storage.local.get((e => {  if (e.patterns) {    const t = e.patterns.values();    t && p(t)  }  e.updateHealthCheckPeriod ? f(e.updateHealthCheckPeriod) : f(1)}))

External host used to refresh the scripting cadence

    • vdrt-chromium.github.io

    Hosts the JSON configuration file that includes URL patterns and the updateHealthCheckPeriod value used by the service worker.

What it can do

Permissions this extension asks for, as declared in version 2.7.2. 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 every site you visit

    <all_urls>

  • Store data in your browser

    storage

  • Watch every request your browser makes

    webRequest

  • See the address and title of every tab you have open

    tabs

  • Start, monitor and manage your downloads

    downloads

  • Run its own code inside the pages you visit

    scripting

  • Schedule its own background tasks

    alarms

Where it sends data

Destinations our analysis observed video downloader 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.

  • vdrt-chromium.github.io

    video downloader sends data to vdrt-chromium.github.io. No other extension we have analyzed sends data here.

  • vidow.me

    video downloader sends data to vidow.me. No other extension we have analyzed sends data here.

Updated 21 September 2026kaibkgfibgoffomjemobnlojipabbbjd