Nightfall - dark theme

ID: cpbgemddmhgkdgdcppfmafdkbjdkjmge

Could be malicious

Extension Info & Metadata

Status
Removed
Version
3.15
Size
0.49 MB
Rating
2.8/5
Reviews
6
Users
583,876
Type
Extension
Updated
Oct 1, 2020
Category
7_productivity
Price
Free
Featured
No
Visibility
Listed
Mature
No
By Google
No
Trusted
No

Publisher Contextual Analysis

Author
Kimberly CardoneView 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
583,876

Enable dark theme on web sites

Nightfall brings night mode to the most popular websites. 🌆 Night mode - make websites dark ❌ Use blocklist if some site feels weird 🌘 Protect your eyes with yellow tint

Item
Type
Severity
Description
<all_urls>
Permission
Critical
This permission grants access to all websites without restriction. Rated High because it can access any web content, monitor all web activity, and potentially steal sensitive data across all sites.
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
tabs
Permission
Medium
This permission enables tab management and monitoring. Rated Medium because it can track open tabs, access tab metadata, and monitor user browsing patterns.
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
contextMenus
Permission
Low
This permission adds items to browser context menus. Rated Medium because it only modifies right-click menus without access to page content.

The popup HTML loads external resources from third-party CDNs (stackpath.bootstrapcdn.com and fonts.googleapis.com) every time the user opens the extension popup. This causes the user's IP address, browser fingerprint, and popup-open timing to be leaked to StackPath and Google servers. For an extension with access to all URLs and tabs, this constitutes unauthorized telemetry sent to third-party tracking infrastructure on each popup interaction.

popup.html (Line 5)
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css"  integrity="sha384-Vkoo8x4CGsO3+Hhxv8T/Q5PaXtkKtu6ug5TOeNV6gBiFeWPGFN9MuhOf23Q9Ifjh" crossorigin="anonymous"><link href="https://fonts.googleapis.com/css2?family=Bellota+Text:ital,wght@0,400;0,700;1,400&display=swap"  rel="stylesheet"><link href="https://fonts.googleapis.com/css2?family=Raleway:wght@400;700&display=swap" rel="stylesheet">

The full moment.js date library (4,601 lines) is injected as a content script into every page at document_start, yet inject.js contains no references to moment or any date/time functionality that would require it. A legitimate dark-theme extension has no use for a date-parsing library executing on all pages before DOM load. Bundling an unnecessary well-known library is a common technique to pad extension code to appear legitimate or to provide a preloaded global (moment) that a future injected payload could call without detection.

manifest.json (Line 11)
{  "content_scripts": [    {      "js": [        "moment.js"      ],      "matches": [        "<all_urls>"      ],      "run_at": "document_start"    },    {      "all_frames": true,      "exclude_globs": [        "*/chrome/newtab*"      ],      "js": [        "inject.js"      ],      "match_about_blank": true,      "matches": [        "<all_urls>"      ],      "run_at": "document_start"    }  ]}

inject.js runs at document_start with all_frames: true and match_about_blank: true, meaning it executes inside every iframe—including sandboxed about:blank frames—on every page. Combined with the <all_urls> host permission, this gives the content script execution context inside embedded payment widgets, OAuth dialogs, and banking iframes. A dark-theme extension only needs to apply CSS; injecting script into all frames including blank ones is broader access than warranted.

manifest.json (Line 18)
{  "all_frames": true,  "exclude_globs": [    "*/chrome/newtab*"  ],  "js": [    "inject.js"  ],  "match_about_blank": true,  "matches": [    "<all_urls>"  ],  "run_at": "document_start"}

By severity

Critical1
High1
Medium4
Low1

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
3.164
3.153

Files with findings

4 distinct paths — top paths by unique finding count:

  • manifest.json3
  • popup.html2
  • background.js1
  • css/twitch.css1
S.No.
Category
Severity
File
Summary
Found in Version
1Remote Code Loading
critical
background.js (line 67)The background page dynamically injects and executes a remote JavaScript file from Google Tag Manager. In an MV2 extension background context, this gives a remotely controlled script access to privileged extension API…
2Remote Code Loading
high
manifest.json (line 28)The manifest explicitly whitelists remote script origins in the extension CSP, including Google Tag Manager and Google Analytics domains. Combined with the background loader, this permits execution of code fetched fro…
3Other
medium
manifest.json (line 11)The full moment.js date library (4,601 lines) is injected as a content script into every page at document_start, yet inject.js contains no references to moment or any date/time functionality that would require it. A l…
4Tracking
medium
popup.html (line 7)The popup UI fetches third-party resources from Bootstrap CDN and Google Fonts every time the extension popup is opened. That creates avoidable outbound requests from extension context that can be used for telemetry o…
5Tracking
medium
css/twitch.css (line 255)This injected site CSS references an external image hosted on an unrelated third-party domain over plain HTTP. When the stylesheet is applied, the browser may request that asset and disclose that the user visited the …
6Tracking
medium
popup.html (line 5)The popup HTML loads external resources from third-party CDNs (stackpath.bootstrapcdn.com and fonts.googleapis.com) every time the user opens the extension popup. This causes the user's IP address, browser fingerprint…
7Privilege Escalation
low
manifest.json (line 18)inject.js runs at document_start with all_frames: true and match_about_blank: true, meaning it executes inside every iframe—including sandboxed about:blank frames—on every page. Combined with the <all_urls> host permi…
URLs
152
IPv4
3
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.

stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascripthttp://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
stackoverflow.com/q/181348https://stackoverflow.com/q/181348
en.wikipedia.org/wiki/ISO_week_datehttps://en.wikipedia.org/wiki/ISO_week_date#Calculating_a_date_given_the_year.2C_week_number_and_weekday
momentjs.com/guides/http://momentjs.com/guides/#/warnings/define-locale/
tools.ietf.org/html/rfc2822https://tools.ietf.org/html/rfc2822#section-3.3
momentjs.com/guides/http://momentjs.com/guides/#/warnings/js-date/
github.com/moment/moment/issues/1423https://github.com/moment/moment/issues/1423
momentjs.com/guides/http://momentjs.com/guides/#/warnings/min-max/
github.com/moment/moment/issues/2978https://github.com/moment/moment/issues/2978
github.com/moment/moment/pull/1871https://github.com/moment/moment/pull/1871
Showing 1 to 10 of 160 rows
Rows per page:

Gain full insight into all external connections.

Upgrade for full visibility.

4.4.3.2
IPv4
-
2.3.3.3
IPv4
-
2.3.3.1
IPv4
-
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.