High concern (1)Downloads and runs a program we haven't reviewed yet
Medium concern (4)A zotero:// link (a web page can open one) can make it install add-ons without asking you (from zotero-plugin-toolkit)A zotero:// link can make it run code if you approve a prompt (from zotero-plugin-toolkit)Installs and runs software packages from npm or PyPILaunches programs on your computer
Low concern (2)Works with files on your computerRuns its own server for programs on this computer
Where we found itDownloads and runs a program we haven't reviewed yetcontent/scripts/pdf2zhEasy.js · line 4236
We haven't yet reviewed who publishes the file or whether anything stops it changing, so it counts as a high concern until we do. Checked only against a checksum from the same place, which catches a broken download but not a swapped one.
const response = await Zotero.HTTP.request("GET", asset.url, {A zotero:// link (a web page can open one) can make it install add-o…content/scripts/pdf2zhEasy.js · line 135
zotero://plugin. zotero-plugin-toolkit removed this link in version 6.0.0; this plugin is built with an older version
Services.io.getProtocolHandler("zotero").wrappedJSObject._extensions["zotero://plugin"] = pluginBridgeExtension;A zotero:// link can make it run code if you approve a promptcontent/scripts/pdf2zhEasy.js · line 91
zotero://ztoolkit-debug
Services.io.getProtocolHandler("zotero").wrappedJSObject._extensions["zotero://ztoolkit-debug"] = debugBridgeExtension;Installs and runs software packages from npm or PyPIcontent/runtime/runtime/bootstrap.py · line 201
Installs a locked set of packages
command = [str(self.uv), 'pip', 'install', '--python', str(self.python(environment)), '--index-url', 'https://pypi.org/simple', '-r', str(self.root / 'runtime' / requirements)]
Launches programs on your computercontent/scripts/pdf2zhEasy.js · line 3886
Programs it names include tar
const { Subprocess } = ChromeUtils.importESModule("resource://gre/modules/Subprocess.sys.mjs");