AI Trainer Dev Tools

AI Trainer Dev Tools

ID: afogdibhhjckdhmkhgdplbkgpiknefdn

Could be malicious

Supported Languages

🇺🇸English

Extension Info & Metadata

Status
Removed
Version
1.1
Size
1.08 MB
Rating
0.0/5
Reviews
0
Users
5
Type
Extension
Updated
Oct 21, 2024
Category
Productivity Developer
Price
Free
Featured
No
Visibility
Listed
Mature
Yes
By Google
No
Trusted
No

Publisher Contextual Analysis

Author
https://travisbytes.comView Profile
MX records exist
Yes
Domain exists
Yes
Is disposable
No
Is role-based
No
Mailbox exists
Yes
Website
Visit
Total Extensions
1
Active
0
Obsolete
1
Listed
1
Unlisted
0
Total Users
5
Screenshot 1
Screenshot 2
Screenshot 3
Screenshot 4

AI Trainer Dev Tools

AI Trainer Dev Tools for Conductify platform (https://studio.conductify.ai/) Features: - Rich textbox to edit prompt - Beautify JSON format - Python code preview Configuration: - Enable / Disable for specific sites

Item
Type
Severity
Description
scripting
Permission
Critical
This permission allows injection and execution of JavaScript on any webpage. Rated Critical because it can modify page content, steal sensitive data, and inject malicious code into any site the extension has access to.
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.
https://studio.conductify.ai/*
Permission
Unknown
No classification available for this permission.

This file (auto-injected into every site visited) attaches `window.getReactProps` and `window.getReactPropsByElement` to the global scope of the page. These helpers walk React internals (`__reactFiber$`/`__reactInternalInstance$`) and return memoizedProps, which commonly contain form values, user identifiers, tokens, and other sensitive component state. Exposing them on `window` of every page means any first-party or third-party page script can invoke them to harvest internal React state — an unauthorized data-collection / privilege amplification primitive. Mixed Vietnamese/English comments are also a minor OPSEC indicator.

functions.js (Line 1)
window.getReactPropsByElement = function(element) {  if (!(element instanceof HTMLElement)) {    console.error('The provided argument is not a valid DOM element:', element)    return  }  const key = Object.keys(element)    .find(      key =>      key.startsWith('__reactInternalInstance$') ||      key.startsWith('__reactFiber$'),    )  if (!key) {    console.error('No React internal instance found on this element:', element)    return  }  const internalInstance = element[key]  const props = internalInstance.memoizedProps  return props}window.getReactProps = function(selector) {  const element = document.querySelector(selector)    ...    const internalInstance = element[key]  const props = internalInstance.memoizedProps  console.log('Props:', props)  return props}

The extension is named 'AI Trainer Dev Tools' and only declares the host permission for studio.conductify.ai, yet its content_scripts and web_accessible_resources match `<all_urls>`. This causes contentScript.js (and its always-on injection of functions.js) to load into every webpage the user visits, granting the extension a far broader DOM/page surface than its stated purpose. Manifest scope mismatch is a common over-privileging pattern.

manifest.json (Line 8)
  "permissions": [        "https://studio.conductify.ai/*",        "storage",        "scripting"    ],  ...  "content_scripts": [    {      "matches": [                "<all_urls>"            ],      "js": [                "contentScript.js"            ],      "run_at": "document_end"        }    ],  "web_accessible_resources": [    {      "resources": [                "initEditor.js",                "functions.js",                "highlight/*",                "tinymce/*",                "easyMDE/*",                "style.css"            ],      "matches": [                "<all_urls>"            ]        }    ]

`functions.js` is unconditionally injected into the page world of every site visited by the user (because of the `<all_urls>` content_script match), regardless of whether the user explicitly enabled the extension on that domain. This converts a privileged extension resource into a script accessible to the page's MAIN world JavaScript context on every site, expanding attack surface beyond the extension's stated AI Trainer use case.

contentScript.js (Line 2)
function injectScript(file, node) {  const script = document.createElement('script');  script.src = chrome.runtime.getURL(file);  script.type = 'text/javascript';  script.async = false;  (document.head || document.documentElement)  .appendChild(script);}...function injectCommonScriptAndStyle() {  injectScript('functions.js', document.head);}// Apply TinyMCE to all textareas if the domain/path is enabledfunction applyEnhancements() {  injectCommonScriptAndStyle();  chrome.storage.sync.get(['enabledDomains'], function(data) {    const currentDomain = window.location.hostname;    const currentPath = window.location.pathname;    const settings = data.enabledDomains?.[currentDomain];    if (settings?.enabled && (!settings.path || currentPath.includes(settings.path))) {      injectScriptAndStyle();    }  });}

On toolbar-icon click the service worker uses `chrome.scripting.executeScript` to inject contentScript.js into whichever tab is active, regardless of origin. Combined with the `<all_urls>` content_script registration this is duplicative and acts as a manual cross-origin injector, allowing the same DOM-mutation/React-introspection logic to run on any site the user happens to be on, even sites the user has not enabled in popup settings.

background.js (Line 1)
chrome.action.onClicked.addListener((tab) => {  console.log('Extension icon clicked for tab:', tab.id);  chrome.scripting.executeScript({    target: {      tabId: tab.id    },    files: ['contentScript.js']  });});

By severity

Critical0
High1
Medium3
Low0

Versions scanned

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

Extension VersionCode Review Findings
1.14

Files with findings

4 distinct paths — top paths by unique finding count:

  • background.js1
  • contentScript.js1
  • functions.js1
  • manifest.json1
S.No.
Category
Severity
File
Summary
Found in Version
1Unauthorized Data Collection
high
functions.js (line 1)This file (auto-injected into every site visited) attaches `window.getReactProps` and `window.getReactPropsByElement` to the global scope of the page. These helpers walk React internals (`__reactFiber$`/`__reactIntern…
2Code Injection
medium
contentScript.js (line 2)`functions.js` is unconditionally injected into the page world of every site visited by the user (because of the `<all_urls>` content_script match), regardless of whether the user explicitly enabled the extension on t…
3Code Injection
medium
background.js (line 1)On toolbar-icon click the service worker uses `chrome.scripting.executeScript` to inject contentScript.js into whichever tab is active, regardless of origin. Combined with the `<all_urls>` content_script registration …
4Privilege Escalation
medium
manifest.json (line 8)The extension is named 'AI Trainer Dev Tools' and only declares the host permission for studio.conductify.ai, yet its content_scripts and web_accessible_resources match `<all_urls>`. This causes contentScript.js (and …
URLs
27
IPv4
55
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
studio.conductify.ai/*https://studio.conductify.ai/*
github.com/tinymce/tinymcehttps://github.com/tinymce/tinymce
www.gnu.org/licenses/gpl.htmlhttp://www.gnu.org/licenses/gpl.html
www.w3.org/2000/svghttp://www.w3.org/2000/svg
www.w3.org/1998/Math/MathMLhttp://www.w3.org/1998/Math/MathML
www.w3.org/1999/xhtmlhttp://www.w3.org/1999/xhtml
www.tiny.cloud/license-key/https://www.tiny.cloud/license-key/
www.tiny.cloud/docs/tinymce/7/migration-from-6x/https://www.tiny.cloud/docs/tinymce/7/migration-from-6x/
www.tiny.cloud/docs/tinymce/7/support/https://www.tiny.cloud/docs/tinymce/7/support/#supportedwebbrowsers
Showing 1 to 10 of 30 rows
Rows per page:

Gain full insight into all external connections.

Upgrade for full visibility.

1.2.4.1
IPv4
-
5.1.7.3
IPv4
-
2.2.3.4
IPv4
-
2.1.3.4
IPv4
-
2.2.3.5
IPv4
-
6.1.8.3
IPv4
-
1.1.1.2
IPv4
-
3.2.2.2
IPv4
-
2.2.1.3
IPv4
-
1.2.5.3
IPv4
-
4.5.8.5
IPv4
-
6.2.8.1
IPv4
-
2.3.3.6
IPv4
-
1.2.3.4
IPv4
-
3.5.7.5
IPv4
-
3.3.2.4
IPv4
-
4.4.4.9
IPv4
-
3.3.3.8
IPv4
-
3.4.3.9
IPv4
-
3.3.3.9
IPv4
-
3.1.6.4
IPv4
-
8.2.3.5
IPv4
-
4.8.4.3
IPv4
-
8.5.6.8
IPv4
-
4.8.4.2
IPv4
-
1.1.4.4
IPv4
-
1.1.5.4
IPv4
-
3.3.6.4
IPv4
-
4.4.4.2
IPv4
-
1.2.3.5
IPv4
-
1.2.8.7
IPv4
-
2.2.2.8
IPv4
-
8.8.8.8
IPv4
-
1.2.8.9
IPv4
-
2.7.4.2
IPv4
-
7.3.7.7
IPv4
-
8.3.8.7
IPv4
-
4.3.6.7
IPv4
-
4.3.6.8
IPv4
-
4.1.5.4
IPv4
-
1.3.9.3
IPv4
-
3.1.4.4
IPv4
-
1.3.8.3
IPv4
-
1.3.7.1
IPv4
-
2.1.9.6
IPv4
-
2.2.3.3
IPv4
-
4.4.9.4
IPv4
-
1.8.7.4
IPv4
-
4.6.9.6
IPv4
-
1.8.6.4
IPv4
-
1.7.8.8
IPv4
-
4.4.3.5
IPv4
-
2.5.3.9
IPv4
-
3.1.5.3
IPv4
-
7.2.2.4
IPv4
-
Showing 1 to 55 of 60 rows
Rows per page:
Version
Size
Is Malicious
Findings
Permhash
1.1
Latest
1.08 MB
Malicious
4
Showing 1 to 1 of 10 rows
Rows per page:

Browse and explore files within this extension package

Gain full insight into all external connections.

Upgrade for full visibility.