{"id":2770,"name":"up","author":"MOHAMMAD AKASH","framework":"goat","overall":30,"grade":"F","level":"danger","verdict":"Dangerous — do not install without a full manual review","scores":{"security":8,"privacy":96,"quality":100,"maintenance":90,"community":0},"counts":{"critical":1,"high":1,"medium":1,"low":2},"alerts":[{"id":"shell-download","severity":"critical","category":"security","title":"Shell command downloads or pipes remote content","description":"Runs curl / wget / PowerShell through a shell, a standard way to fetch and execute a second-stage payload.","count":1,"locations":[{"line":14,"snippet":"execSync(`curl -L -o \"${fp}\" \"${url}\"`, { stdio: \"pipe\" });"}]},{"id":"shell","severity":"high","category":"security","title":"Shell access","description":"Spawns operating-system processes through child_process. A command running shell code can read or change anything the bot's account can.","count":7,"locations":[{"line":5,"snippet":"const { execSync } = require(\"child_process\");"},{"line":14,"snippet":"execSync(`curl -L -o \"${fp}\" \"${url}\"`, { stdio: \"pipe\" });"},{"line":140,"snippet":"const d = execSync(\"df -k /\").toString().split(\"\\n\")[1].split(/\\s+/);"},{"line":146,"snippet":"const d = execSync(\"df -k /\").toString().split(\"\\n\")[1].split(/\\s+/);"},{"line":152,"snippet":"const d = execSync(\"df -k /\").toString().split(\"\\n\")[1].split(/\\s+/);"}]},{"id":"fs-destructive","severity":"medium","category":"security","title":"Deletes files","description":"Calls fs.rm / unlink / rmdir. Check what path it deletes and whether a user can influence it.","count":1,"locations":[{"line":958,"snippet":"setTimeout(() => { if (fs.existsSync(file)) fs.unlinkSync(file); }, 15000);"}]},{"id":"fs-access","severity":"low","category":"security","title":"Filesystem access","description":"Reads or writes files on the machine running the bot.","count":1,"locations":[{"line":3,"snippet":"const fs = require(\"fs\");"}]},{"id":"hardcoded-ip","severity":"low","category":"privacy","title":"Hard-coded IP address","description":"Talks to a raw IP address instead of a named host — harder to audit and easy to redirect.","count":1,"locations":[{"line":675,"snippet":"const IPs = netIPs.length > 0 ? netIPs : [{ name: \"lo\", address: \"127.0.0.1\", netmask: \"255.0.0.0\" }];"}]}],"capabilities":[{"id":"network","label":"Network","active":false},{"id":"filesystem","label":"Filesystem","active":true},{"id":"shell","label":"Shell","active":true},{"id":"env","label":"Env vars","active":false},{"id":"eval","label":"Dynamic code","active":false},{"id":"credentials","label":"Session data","active":false},{"id":"install","label":"Installs packages","active":false},{"id":"process","label":"Process control","active":false}],"checks":[{"label":"Exports a command/module","ok":true},{"label":"Handles errors (try/catch or .catch)","ok":true},{"label":"Readable, not minified","ok":true},{"label":"Has explanatory comments","ok":true},{"label":"No deprecated dependencies","ok":true},{"label":"Reasonable size (< 200 KB)","ok":true}],"dependencies":{"builtin":["child_process","fs","os","path"],"external":["canvas"],"local":[]},"domains":["github.com"],"scannedAt":"2026-11-05T13:23:02.026Z"}