{"id":1010,"name":"Unknown","author":"Unknown","framework":"goat","overall":30,"grade":"F","level":"danger","verdict":"Dangerous — do not install without a full manual review","scores":{"security":80,"privacy":34,"quality":100,"maintenance":72,"community":0},"counts":{"critical":1,"high":0,"medium":2,"low":4},"alerts":[{"id":"exfil","severity":"critical","category":"privacy","title":"Possible credential exfiltration","description":"The file reads session data or secrets and also talks to the network. Verify nothing sensitive is being sent out.","count":1,"locations":[{"line":675,"snippet":"tokenEncrypted: process.env.TOKEN ? '✅ Encrypted' : '❌ Not Encrypted',"}]},{"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":80,"snippet":"fs.unlinkSync(targetPath);"}]},{"id":"env-secret","severity":"medium","category":"privacy","title":"Reads secrets from environment variables","description":"Accesses process.env values that look like tokens, passwords, API keys or database URLs.","count":1,"locations":[{"line":675,"snippet":"tokenEncrypted: process.env.TOKEN ? '✅ Encrypted' : '❌ Not Encrypted',"}]},{"id":"network","severity":"low","category":"privacy","title":"Network access","description":"Makes HTTP/WebSocket requests. Check where the data goes.","count":2,"locations":[{"line":245,"snippet":"const messages = await channel.messages.fetch({ limit: 100 });"},{"line":312,"snippet":"const messages = await channel.messages.fetch({ limit: 10 });"}]},{"id":"dynamic-require","severity":"low","category":"security","title":"Dynamic require","description":"require() is called with a value computed at runtime, so the loaded module cannot be known from reading the file.","count":1,"locations":[{"line":92,"snippet":"return require(targetPath);"}]},{"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":1,"snippet":"const fs = require('fs');"}]},{"id":"env","severity":"low","category":"privacy","title":"Environment variable access","description":"Reads process.env. Fine on its own; worth a look if the values are sent anywhere.","count":1,"locations":[{"line":675,"snippet":"tokenEncrypted: process.env.TOKEN ? '✅ Encrypted' : '❌ Not Encrypted',"}]}],"capabilities":[{"id":"network","label":"Network","active":true},{"id":"filesystem","label":"Filesystem","active":true},{"id":"shell","label":"Shell","active":false},{"id":"env","label":"Env vars","active":true},{"id":"eval","label":"Dynamic code","active":false},{"id":"credentials","label":"Session data","active":true},{"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":["crypto","fs","os","path"],"external":["canvas","gif-encoder-2","systeminformation"],"local":[]},"domains":[],"scannedAt":"2026-11-05T13:22:54.825Z"}