HDify

ID: bbdengonknjdlnahehkamhbdlgmoicnp

Could be malicious

Supported Languages

๐Ÿ‡ง๐Ÿ‡ฉBengali
๐Ÿ‡ง๐Ÿ‡ทBrazilian Portuguese
๐Ÿ‡ฌ๐Ÿ‡งBritish English
๐Ÿ‡ง๐Ÿ‡ฌBulgarian
๐Ÿ‡ช๐Ÿ‡ธCatalan
๐Ÿ‡จ๐Ÿ‡ณChinese (Simplified)
๐Ÿ‡น๐Ÿ‡ผChinese (Traditional)
๐Ÿ‡ญ๐Ÿ‡ทCroatian
๐Ÿ‡จ๐Ÿ‡ฟCzech
๐Ÿ‡ฉ๐Ÿ‡ฐDanish
๐Ÿ‡ณ๐Ÿ‡ฑDutch
๐Ÿ‡บ๐Ÿ‡ธEnglish
๐Ÿ‡ช๐Ÿ‡ชEstonian
๐Ÿ‡ต๐Ÿ‡ญFilipino
๐Ÿ‡ซ๐Ÿ‡ฎFinnish
๐Ÿ‡ซ๐Ÿ‡ทFrench
๐Ÿ‡ฉ๐Ÿ‡ชGerman
๐Ÿ‡ฌ๐Ÿ‡ทGreek
๐Ÿ‡ฎ๐Ÿ‡ณGujarati
๐Ÿ‡ฎ๐Ÿ‡ณHindi
๐Ÿ‡ญ๐Ÿ‡บHungarian
๐Ÿ‡ฎ๐Ÿ‡ฉIndonesian
๐Ÿ‡ฎ๐Ÿ‡นItalian
๐Ÿ‡ฏ๐Ÿ‡ตJapanese
๐Ÿ‡ฐ๐Ÿ‡ทKorean
๐Ÿ‡ฒ๐Ÿ‡ฝLatin American Spanish
๐Ÿ‡ฑ๐Ÿ‡ปLatvian
๐Ÿ‡ฑ๐Ÿ‡นLithuanian
๐Ÿ‡ฒ๐Ÿ‡พMalay
๐Ÿ‡ฎ๐Ÿ‡ณMalayalam
๐Ÿ‡ฎ๐Ÿ‡ณMarathi
๐Ÿ‡ณ๐Ÿ‡ดNorwegian
๐Ÿ‡ต๐Ÿ‡ฑPolish
๐Ÿ‡ต๐Ÿ‡นPortuguese
๐Ÿ‡ท๐Ÿ‡ดRomanian
๐Ÿ‡ท๐Ÿ‡บRussian
๐Ÿ‡ท๐Ÿ‡ธSerbian
๐Ÿ‡ธ๐Ÿ‡ฐSlovak
๐Ÿ‡ธ๐Ÿ‡ฎSlovenian
๐Ÿ‡ช๐Ÿ‡ธSpanish
๐Ÿ‡ธ๐Ÿ‡ชSwedish
๐Ÿ‡ฎ๐Ÿ‡ณTamil
๐Ÿ‡ฎ๐Ÿ‡ณTelugu
๐Ÿ‡น๐Ÿ‡ญThai
๐Ÿ‡น๐Ÿ‡ทTurkish
๐Ÿ‡บ๐Ÿ‡ฆUkrainian
๐Ÿ‡บ๐Ÿ‡ธUS English
๐Ÿ‡ป๐Ÿ‡ณVietnamese

Extension Info & Metadata

Status
Removed
Version
0.3.1
Size
0.13 MB
Rating
2.3/5
Reviews
3
Users
200,000
Type
Extension
Updated
Sep 12, 2021
Category
7_productivity
Price
Free
Featured
No
Visibility
Listed
Mature
No
By Google
No
Trusted
No

Publisher Contextual Analysis

Author
Nine SalmotasView Profile
MX records exist
Yes
Domain exists
Yes
Is disposable
No
Is role-based
No
Mailbox exists
Yes
Total Extensions
1
Active
0
Obsolete
1
Listed
1
Unlisted
0
Total Users
200,000

Auto HD quality for Youtube videos. Optimal video quality is selected based on your screen size.

HDify is an Auto HD extension that manages your Youtube video quality settings. HDify works automatically. The app selects the optimal video quality based on your screen resolution. How to use it: Just install. No settings, no popups, it just works.

Item
Type
Severity
Description
cookies
Permission
High
This permission provides full access to read and modify browser cookies. Rated High because it can steal session tokens, modify authentication cookies, and compromise accounts across websites.
Contextual Risk Factors
Risk Factor
High
The following context increases the overall risk:โ€ข 10% increase: Early script execution enables pre-emptive content manipulationโ€ข 15% increase: Older manifest version lacks modern security controlsโ€ข 10% increase: About:blank access enables potential sandbox escape vectors
storage
Permission
Medium
This permission allows storing data locally in the browser. Rated Medium because it can persist sensitive user data, track user activities over time, and potentially store malicious payloads.
Early Content Script Execution
Risk Factor
Medium
This extension runs content scripts at document_start.
About:blank Access
Risk Factor
Medium
This extension can run content scripts in about:blank pages.
Older Manifest Version
Risk Factor
Medium
This extension uses Manifest Version 2
http://*/*
Permission
Unknown
No classification available for this permission.
https://*/*
Permission
Unknown
No classification available for this permission.

The extension generates and persists a UUID-like client identifier (`cid`) in local storage, then transmits it to Google Analytics along with the extension runtime ID. This is a tracking pattern because it creates a stable per-install identifier and phones home to an external analytics endpoint without any visible user interaction.

js/background.js (Line 3306)
async function o() {  const e = await new Promise((e => {    chrome.storage.local.get(["cid"], (t => {      e(t)    }))  }));  let {    cid: t  } = e;  return t || (t = (0, n.v4)(), chrome.storage.local.set({    cid: t  })), t}async function i(e) {  const t = undefined,    r = {      v: "1",      tid: e,      cid: await o(),      t: "pageview",      dp: "/background",      dt: "background",      dh: `chrome-extension://${chrome.runtime.id}`    },    n = `https://www.google-analytics.com/collect?${new URLSearchParams(r).toString()}`;  await fetch(n, {    method: "POST",    body: ""  })}

This code enables runtime loading of extension locale data from a remote server when `t.remote` is set, constructing the URL from the page host and current locale. The same file initializes this with `remote: true` and `endpoint: "https://onlinesly.com"` at lines 3383-3387, meaning extension-visible text can be remotely changed after publication, which is a suspicious remote dependency even though it is JSON rather than executable script.

js/background.js (Line 3555)
function O(e) {  const t = e || {};  this.phrases = {}, this.gl = t.gl || top, this.extend(t.phrases || {}), this.currentLocale = t.locale ||    "en";  const r = t.allowMissing ? S : null;  this.onMissingKey = "function" == typeof t.onMissingKey ? t.onMissingKey : r, this.warn = t.warn || l, this    .tokenRegex = j(t.interpolation), this.pluralRules = t.pluralRules || h, t.remote && (this.req = n.default      .get.bind(this, `${t.endpoint}/_locales/${document.location.host}/${this.currentLocale}.json`, {        responseType: "json"      }), A(this))}

On installation, the background script queries all open tabs and injects the content script into every tab and every frame without checking the tab URL first. Given that the manifest already matches all HTTP and HTTPS pages at `document_start`, this is an overbroad injection pattern that unnecessarily expands the extension's reach across unrelated sites.

js/background.js (Line 3369)
o.browser.runtime.onInstalled.addListener((async e => {  if ("install" === e.reason) {    const e = "js/content.js",      t = await o.browser.tabs.query({});    for (const r of t)      if (r.id) try {        await o.browser.tabs.executeScript(r.id, {          allFrames: !0,          file: e        })      } catch (e) {}  }  c()}));

By severity

Critical0
High2
Medium3
Low2

Versions scanned

Showing 2 of 2 scanned versions with more than one unique finding. Counts are unique findings that include each version.

Extension VersionCode Review Findings
0.3.13
0.3.04

Files with findings

2 distinct paths โ€” top paths by unique finding count:

  • js/background.js5
  • manifest.json2
S.No.
Category
Severity
File
Summary
Found in Version
1Code Injection
high
js/background.js (line 1)On install, the extension immediately queries all open browser tabs (with no URL filter) and injects js/content.js into every one of them with allFrames:true. The content script is YouTube-specific (it references ytp-โ€ฆ
2Tracking
high
js/background.js (line 1)The extension secretly generates a persistent UUID (stored as 'cid' in chrome.storage.local) that permanently identifies each user across sessions. On every background page activation, it silently transmits a pageviewโ€ฆ
3Tracking
medium
js/background.js (line 3306)The extension generates and persists a UUID-like client identifier (`cid`) in local storage, then transmits it to Google Analytics along with the extension runtime ID. This is a tracking pattern because it creates a sโ€ฆ
4Unauthorized Data Collection
medium
manifest.json (line 1)The content script is declared to run on all HTTP and HTTPS URLs (http://*/* and https://*/*) at document_start across all frames including about:blank frames. For an extension whose sole stated purpose is setting Youโ€ฆ
5Unauthorized Data Collection
medium
manifest.json (line 1)The extension uses a persistent (non-event-driven) background script combined with broad host permissions (http://*/* and https://*/*) and cookie access. The incognito:split setting means the extension โ€” and its coverโ€ฆ
6Other
low
js/background.js (line 3555)This code enables runtime loading of extension locale data from a remote server when `t.remote` is set, constructing the URL from the page host and current locale. The same file initializes this with `remote: true` anโ€ฆ
7Other
low
js/background.js (line 3369)On installation, the background script queries all open tabs and injects the content script into every tab and every frame without checking the tab URL first. Given that the manifest already matches all HTTP and HTTPSโ€ฆ
URLs
13
IPv4
0
IPv6
0

URLs

View the external URLs this extension communicates with to understand its network activity and data interactions.

Gain full insight into all external connections.

Upgrade for full visibility.

registry.npmjs.org/axios/-/axios-0.21.4.tgzhttps://registry.npmjs.org/axios/-/axios-0.21.4.tgz
github.com/axios/axios/issueshttps://github.com/axios/axios/issues
axios-http.com-https://axios-http.com
github.com/axios/axios.githttps://github.com/axios/axios.git
github.com/uuidjs/uuidhttps://github.com/uuidjs/uuid#getrandomvalues-not-supported
developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessagehttps://developer.mozilla.org/docs/Mozilla/Add-ons/WebExtensions/API/runtime/onMessage
www.google-analytics.com/collecthttps://www.google-analytics.com/collect?${new
www.youtube.com-https://www.youtube.com/
youtube.com-https://youtube.com
onlinesly.com-https://onlinesly.com
Showing 1 to 10 of 20 rows
Rows per page:

Gain full insight into all external connections.

Upgrade for full visibility.

No IP addresses found
Version
Size
Is Malicious
Findings
Permhash
0.3.0
Latest
0.11 MB
Malicious
4
0.3.1
0.13 MB
Malicious
3
Showing 1 to 2 of 10 rows
Rows per page:

Code Diff

Compare extension code between any two versions.

0 changed files (scanned top 25 shared text files)

No comparable text files found between these versions.

Browse and explore files within this extension package

Gain full insight into all external connections.

Upgrade for full visibility.