{"id":4416,"name":"autolink","author":"Vex_Kshitiz + Updated by Nirob","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":"remote-eval","severity":"critical","category":"security","title":"Downloads data and runs dynamic code","description":"The file makes network requests AND executes dynamically built code. This pairing is how remote-controlled backdoors are written.","count":1,"locations":[{"line":285,"snippet":"eval(evalCode);"}]},{"id":"eval","severity":"high","category":"security","title":"Dynamic code execution","description":"Runs code that is built at runtime (eval, new Function, vm). This is the most common way malicious payloads are hidden in scripts.","count":1,"locations":[{"line":285,"snippet":"eval(evalCode);"}]},{"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":7,"locations":[{"line":107,"snippet":"}, event.threadID, () => fs.unlinkSync(path), event.messageID);"},{"line":116,"snippet":"return api.sendMessage(\"⚠️ File too large to send!\", event.threadID, () => fs.unlinkSync(path), event.messageID);"},{"line":133,"snippet":"return api.sendMessage(\"⚠️ File too large to send!\", event.threadID, () => fs.unlinkSync(path), event.messageID);"},{"line":152,"snippet":"return api.sendMessage(\"⚠️ File too large to send!\", event.threadID, () => fs.unlinkSync(path), event.messageID);"},{"line":168,"snippet":"return api.sendMessage(\"⚠️ File too large to send!\", event.threadID, () => fs.unlinkSync(path), event.messageID);"}]},{"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-extra\");"}]},{"id":"network","severity":"low","category":"privacy","title":"Network access","description":"Makes HTTP/WebSocket requests. Check where the data goes.","count":1,"locations":[{"line":4,"snippet":"const axios = require(\"axios\");"}]}],"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":false},{"id":"eval","label":"Dynamic code","active":true},{"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":[],"external":["axios","cheerio","fs-extra","qs"],"local":[]},"domains":["insta-downloader-ten.vercel.app","pindl-pinterest.vercel.app","snapsave.app","ssstik.io","xdl-twitter.vercel.app","yt-downloader-eta.vercel.app"],"scannedAt":"2026-11-05T13:17:21.386Z"}