Is 易解析 - 图片/视频/音乐 网页嗅探神器 safe?
易解析 - 图片/视频/音乐 网页嗅探神器 is medium risk. Code analysis shows the extension fetches a per-site script from its own server and runs it with full access to your page, not in a sandbox.
Who publishes itchathub807 - 1 other listing from the same operator, none carrying a finding
chathub807 - 1 other listing from the same operator, none carrying a finding
What this publisher told the store about itself, and the other listings that told it the same thing.
Same store account
1 other listing published from this account, 6k+ users between them, none of them carrying a finding.
AI-generated. Findings may contain errors. Those marked Verified have been manually reviewed.
Publishers can request a review.
Findings
This extension runs vendor-sent scripts as your page's own JavaScript
Code analysis shows the extension fetches a per-site script from its own server and runs it with full access to your page, not in a sandbox.
- Severity
- High unwanted
- Type
- Unexpected
- CWE
- CWE-829
- Source
- Static analysis
You visit a page whose hostname the vendor's server has configured with a script.
The extension compiles that server-supplied script and runs it with the same access as the page's own JavaScript, not in an isolated sandbox.
The interpreter's execution context is set to the real browser window before the script runs.
The interpreter's global scope is repointed at the real page window
Library default
js/chrome-inject-eval.js// The bundled eval5 interpreter ships with an isolated default context:Interpreter.global = Object.create(null); // no window, no DOM, no cookiesExtension override
js/content.js// The extension replaces that default before creating its interpreter instance:const { Interpreter } = evalCore.evalModule;Interpreter.global = window; // real page window: DOM, cookies, fetch, everythingconst interpreter = new Interpreter();- Script to run on this sitewindow.aiparser2img = function(buffer) { /* ... */ }
Arbitrary JavaScript the server sends is compiled and executed with page-level access whenever you're on a matching host.
- Which sites this applies toexample.com
A substring match against your page's hostname decides whether a script runs; the server, not the extension, controls the site list.
- Data passed into the scriptup to 500 buffered request/response entries
The functions the script defines are called with the extension's buffer of your recent cross-site AJAX requests and responses.
- 51save.savev.cc
Vendor's own config endpoint. Returns the hostname-keyed JSON that names which sites get a script and what that script contains.
Fetches the live per-hostname script config directly from the vendor's endpoint so you can see what runs on a given site without installing the extension.
- Node.js 18+
// node fetch-51save-config.js <version> <hostname-substring-to-check>const https = require('https');const crypto = require('crypto');const version = process.argv[2] || '1.1.5';const clientId = crypto.randomUUID();const url = `https://51save.savev.cc/v1/51save/common/jsonForJs?version=${version}&clientId=${clientId}`;https.get(url, (res) => { let data = ''; res.on('data', (chunk) => { data += chunk; }); res.on('end', () => { const config = JSON.parse(data); const keys = Object.keys(config); console.log(`Config returned ${keys.length} hostname key(s):`); for (const key of keys) { console.log(`\n--- ${key} ---`); console.log(config[key].script || '(no script field)'); } });}).on('error', (e) => console.error('Request failed:', e.message));- 1Run `node fetch-51save-config.js` (optionally pass the extension version as arg 1).
- 2Read the printed script for each hostname key.
- 3Search the output for a substring of any site you visit to see if it has a configured script.
Static analysis finding. This behaviour was identified by reading the shipped extension code and has not yet been reproduced in a live run. The trigger conditions and the exact data sent are read from the code, not from an observed capture.
What it can do
Permissions this extension asks for, as declared in version 1.1.5. Asking for a permission is not a finding on its own - it is what the extension can do if it chooses to.
Read and change your data on every site you visit
*://*/* and 1 more
Read and change your data on every secure site you visit
https://*/*
Store data in your browser
storage
Start, monitor and manage your downloads
downloads
Watch every request your browser makes
webRequest
Add items to the right-click menu
contextMenus
Act on the current tab, but only after you click the extension
activeTab