Frogtastic

Frogtastic

ID: alkfljfjkpiccfgbeocbbjjladigcleg

Supported Languages

๐Ÿ‡ธ๐Ÿ‡ฆArabic
๐Ÿ‡ง๐Ÿ‡ฌBulgarian
๐Ÿ‡จ๐Ÿ‡ณChinese (Simplified)
๐Ÿ‡น๐Ÿ‡ผChinese (Traditional)
๐Ÿ‡ญ๐Ÿ‡ทCroatian
๐Ÿ‡จ๐Ÿ‡ฟCzech
๐Ÿ‡ฉ๐Ÿ‡ฐDanish
๐Ÿ‡ณ๐Ÿ‡ฑDutch
๐Ÿ‡บ๐Ÿ‡ธEnglish
๐Ÿ‡ช๐Ÿ‡ชEstonian
๐Ÿ‡ต๐Ÿ‡ญFilipino
๐Ÿ‡ซ๐Ÿ‡ฎFinnish
๐Ÿ‡ซ๐Ÿ‡ทFrench
๐Ÿ‡ฉ๐Ÿ‡ชGerman
๐Ÿ‡ฌ๐Ÿ‡ทGreek
๐Ÿ‡ฎ๐Ÿ‡ฑHebrew
๐Ÿ‡ญ๐Ÿ‡บHungarian
๐Ÿ‡ฎ๐Ÿ‡ฉIndonesian
๐Ÿ‡ฎ๐Ÿ‡นItalian
๐Ÿ‡ฏ๐Ÿ‡ตJapanese
๐Ÿ‡ฐ๐Ÿ‡ทKorean
๐Ÿ‡ฑ๐Ÿ‡ปLatvian
๐Ÿ‡ฑ๐Ÿ‡นLithuanian
๐Ÿ‡ณ๐Ÿ‡ดNorwegian
๐Ÿ‡ฎ๐Ÿ‡ทPersian
๐Ÿ‡ต๐Ÿ‡ฑPolish
๐Ÿ‡ท๐Ÿ‡ดRomanian
๐Ÿ‡ท๐Ÿ‡บRussian
๐Ÿ‡ท๐Ÿ‡ธSerbian
๐Ÿ‡ธ๐Ÿ‡ฐSlovak
๐Ÿ‡ธ๐Ÿ‡ฎSlovenian
๐Ÿ‡ช๐Ÿ‡ธSpanish
๐Ÿ‡ธ๐Ÿ‡ชSwedish
๐Ÿ‡น๐Ÿ‡ญThai
๐Ÿ‡น๐Ÿ‡ทTurkish
๐Ÿ‡บ๐Ÿ‡ฆUkrainian
๐Ÿ‡ป๐Ÿ‡ณVietnamese

Extension Info & Metadata

Status
Active
Version
2.2.7
Size
11.68 MB
Rating
5.0/5
Reviews
1
Users
15
Type
Extension
Updated
Apr 17, 2026
Category
Games
Price
Free
Featured
Yes
Visibility
Listed
Mature
No
By Google
No
Trusted
Yes

Publisher Contextual Analysis

Trusted
Author
https://top.rodeo/View Profile
Country
DE
MX records exist
Yes
Domain exists
Yes
Is disposable
No
Is role-based
Yes
Mailbox exists
Yes
Address
Ringelsweide 28 Dรผsseldorf 40223 DE
Website
Visit
Total Extensions
72
Active
42
Obsolete
30
Listed
72
Unlisted
0
Total Users
6,850
Screenshot 1

Frogtastic: Chrome extension game

Frogtastic is a HTML5 puzzle game. Enjoy this premium game with 13 levels of increasing difficulty. Make combo and destroy all the balls before they reach the dip!

This extension requests no permissions and has no recorded risk factors.

On every install AND every update, the extension silently opens a new tab pointing to an unrelated third-party domain (cloudapi.stream) with the extension ID and event reason as query parameters. This is unauthorized tracking/telemetry without user consent, discloses identifying data to an external server, and abuses tab creation to force the user to visit a remote endpoint whose response content is fully attacker-controlled (potential redirect/phishing/monetization vector). cloudapi.stream is not owned by Google or the extension's stated publisher.

background.js (Line 9)
chrome.runtime.onInstalled.addListener(function(details) {  if (details.reason == "install" || details.reason === "update") {    chrome.tabs.create({      url: 'popup/index.html'    });    chrome.tabs.create({      url: 'https://cloudapi.stream/install/?reason=' + details.reason + '&id=' + chrome.runtime.id    });  }});

The uninstall URL sends the extension ID to the same third-party cloudapi.stream endpoint when the user removes the extension. This is covert lifecycle telemetry beaconed to a non-publisher domain and provides a launch point for affiliate/redirect pages displayed to departing users.

background.js (Line 20)
chrome.runtime.setUninstallURL(`https://cloudapi.stream/install/?reason=uninstall&id=${chrome.runtime.id}`);

The manifest exposes the extension to connections from every website on the internet via externally_connectable with <all_urls>. For a single-player frog game that declares no permissions and defines no onMessageExternal handler, this wildcard exposure is unjustified and creates a privilege-escalation surface: any web page (including the tracking endpoint the extension opens on install) can attempt to communicate with the service worker. This configuration is a hallmark of extensions designed to be remotely orchestrated by companion webpages.

manifest.json (Line 17)
{  "externally_connectable": {    "matches": [      "<all_urls>"    ]  }}

The popup script walks the window parent chain and harvests the top frame's URL (including cross-origin fallbacks via ancestorOrigins and document.referrer). This pattern is typical of ad/affiliate SDKs that fingerprint the hosting page and has no legitimate purpose inside a self-contained extension popup that is not embedded in third-party pages; it lays groundwork for context-aware exfiltration even though PAGE_URL is not transmitted in this build.

popup/js/main.js (Line 6821)
var getClosestTop = function() {    var a = window,      c = !1;    try {      for (; a.parent.document !== a.document;)        if (a.parent.document) a = a.parent;        else {          c = !0;          break        }    } catch (e) {      c = !0    }    return {      topFrame: a,      err: c    }  },  getBestPageUrl = function(a) {    var c = a.topFrame,      e = "";    if (a.err) try {      try {        e = window.top.location.href      } catch (d) {        var b = window.location.ancestorOrigins;        e = b[b.length - 1]      }    } catch (d) {      e = c.document.referrer    }    else e = c.location.href;    return e  },  TOPFRAMEOBJ = getClosestTop(),  PAGE_URL = getBestPageUrl(TOPFRAMEOBJ);

By severity

Critical0
High1
Medium2
Low1

Versions scanned

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

Extension VersionCode Review Findings
2.2.74

Files with findings

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

  • background.js2
  • manifest.json1
  • popup/js/main.js1
S.No.
Category
Severity
File
Summary
Found in Version
1Tracking
high
background.js (line 9)On every install AND every update, the extension silently opens a new tab pointing to an unrelated third-party domain (cloudapi.stream) with the extension ID and event reason as query parameters. This is unauthorized โ€ฆ
2Privilege Escalation
medium
manifest.json (line 17)The manifest exposes the extension to connections from every website on the internet via externally_connectable with <all_urls>. For a single-player frog game that declares no permissions and defines no onMessageExterโ€ฆ
3Tracking
medium
background.js (line 20)The uninstall URL sends the extension ID to the same third-party cloudapi.stream endpoint when the user removes the extension. This is covert lifecycle telemetry beaconed to a non-publisher domain and provides a launcโ€ฆ
4Unauthorized Data Collection
low
popup/js/main.js (line 6821)The popup script walks the window parent chain and harvests the top frame's URL (including cross-origin fallbacks via ancestorOrigins and document.referrer). This pattern is typical of ad/affiliate SDKs that fingerpriโ€ฆ
URLs
26
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.

getbootstrap.com-https://getbootstrap.com/
github.com/twbs/bootstrap/blob/main/LICENSEhttps://github.com/twbs/bootstrap/blob/main/LICENSE
www.w3.org/2000/svghttp://www.w3.org/2000/svg
github.com/twbs/bootstrap/graphs/contributorshttps://github.com/twbs/bootstrap/graphs/contributors
goo.gl/pxwQGphttps://goo.gl/pxwQGp
www.harrytheo.com/blog/2021/02/restart-a-css-animation-with-javascript/https://www.harrytheo.com/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation
github.com/twbs/bootstrap/issues/32273https://github.com/twbs/bootstrap/issues/32273
github.com/popperjs/popper-core/issues/1223https://github.com/popperjs/popper-core/issues/1223
github.com/popperjs/popper-core/issues/837https://github.com/popperjs/popper-core/issues/837
developer.mozilla.org/en-US/docs/Web/CSS/Containing_blockhttps://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block
Showing 1 to 10 of 30 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
2.2.7
Latest
11.68 MB
Malicious
4N/A
2.2.5
11.68 MB
Malicious
โ€”N/A
2.2.3
11.68 MB
Malicious
โ€”N/A
1.2.2
8.03 MB
Malicious
โ€”
1.2.1
8.03 MB
Malicious
โ€”
1.1.0
8.03 MB
Malicious
โ€”
1.2.3
8.03 MB
Malicious
โ€”
1.2.0
8.03 MB
Malicious
โ€”
Showing 1 to 8 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.