github.com / evolution-foundation
evolution-foundation/ evolution-api
TypeScript·364 files·commit fa09d37·scanned 4d ago·cached ✓
25/100
LOW RISK
Minor findings consistent with the project type. Nothing reachable from install hooks.
score capped at 25 — 9,943 stars — findings likely legitimate code patterns
verdict accurate?
threat-state: lowlive
FINDINGS ░▒▓
criticalchild_process / exec usageExecuting shell commands can be used to download and run malware, exfiltrate data, or modify system files.src/api/provider/sessions.ts
import axios from 'axios';
import { execFileSync } from 'child_process';
type ResponseSuccess = { status: number; data?: any };+8criticalRemote script piped into a shellA shell script downloads remote content and executes it directly (e.g. `curl … | bash`). The payload is never stored or reviewable and can change server-side — a classic malware/backdoor install pattern.local_install.sh
Linux*)
if [ ! -x "$(command -v curl)" ]; then
log_warning "Curl não está instalado. Tentando instalar..."
if [ -x "$(command -v apt-get)" ]; then+10infoBase64 encoding usedatob() or Buffer.from with base64. Common in legitimate code but also used to hide malicious URLs.src/api/integrations/channel/meta/whatsapp.business.service.ts
const response = await axios.get(mediaMessage.media, { responseType: 'arraybuffer' });
const buffer = Buffer.from(response.data, 'base64');
formData.append('file', buffer...+2infoBase64 encoding usedatob() or Buffer.from with base64. Common in legitimate code but also used to hide malicious URLs.src/api/integrations/channel/whatsapp/whatsapp.baileys.service.ts
if (typeof messageSecretBase64 === 'string') {
const messageSecret = Buffer.from(messageSecretBase64, 'base64');
const msg = {+2infoBase64 encoding usedatob() or Buffer.from with base64. Common in legitimate code but also used to hide malicious URLs.src/api/integrations/chatbot/openai/services/openai.service.ts
} else if (msg.message.base64) {
audio = Buffer.from(msg.message.base64, 'base64');
} else {
// Fallback for raw WhatsApp audio messages that need downloadMediaMessage+2infoSuspicious file in repoVery large source file (576KB) — could contain obfuscated payloadpackage-lock.json+2
warningUnvalidated file uploadFile upload without type/size validation. Can be exploited for remote code execution or storage abuse.package.json
"minio": "^8.0.3",
"multer": "^2.0.2",
"nats": "^2.29.1",
"node-cache": "^5.1.2",+3warningUnvalidated file uploadFile upload without type/size validation. Can be exploited for remote code execution or storage abuse.src/api/routes/sendMessage.router.ts
import { RequestHandler, Router } from 'express';
import multer from 'multer';
import { HttpStatus } from './index.router';+3Scores are heuristics. A “safe” verdict means no known-malicious patterns were found — clever malware can look boring. Wrong verdict? Flag it above; confirmed false positives become regression tests.
207 files scanned @ fa09d37 | 10/25/2026 | heuristic scan — always review manually
risk by category
code execution20
network & exfiltration6
file system access0
obfuscation0
supply chain2
owasp / injection6
telemetry
files 207/364rules hit 9engine v7commit fa09d37
github
evolution-foundation/evolution-api
Evolution API is an open-source WhatsApp integration API
9943
7372
1238d
364 files
207 scanned(57%)
fa09d37
architecture░▒▓
entry (1) flagged (2) pkg (165)
356 nodes · 873 edgesscroll to zoom · click node to jump to finding