github.com / doobidoo
doobidoo/ mcp-memory-service
Python·1604 files·commit 52568d9·scanned 15h ago·cached ✓
25/100
LOW RISK
Minor findings consistent with the project type. Nothing reachable from install hooks.
score capped at 25 — 2,052 stars — findings likely legitimate code patterns
verdict accurate?
Research / educational context
Partial architecture graph
threat-state: lowlive
FINDINGS ░▒▓
warningPython subprocess / os.system usageos.system() or subprocess with shell=True / suspicious commands can execute arbitrary shell commands. Plain pip/package installs are usually benign.scripts/maintenance/cleanup_organize.py
print(f"Running: {command}")
result = subprocess.run(command, shell=True, capture_output=True, text=True)
if result.returncode != 0:
print(f"ERROR: {result.stderr}")+4criticaleval() usage detectedeval() executes arbitrary code and is commonly used in malware to run obfuscated payloads fetched from remote servers.scripts/maintenance/update_graph_relationship_types.py
try:
tags = eval(row["tags"])
except:
tags = []+8criticalPython dynamic code executioneval(), exec() or compile() on untrusted input can execute arbitrary code. Common in Python malware for running obfuscated payloads.scripts/maintenance/update_graph_relationship_types.py
try:
tags = eval(row["tags"])
except:
tags = []+7criticalRemote 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.scripts/run/memory_wrapper_cleanup.sh
else
log "ERROR: uv not found. Install with: curl -LsSf https://astral.sh/uv/install.sh | sh"
exit 1
fi+10criticalPython dynamic code executioneval(), exec() or compile() on untrusted input can execute arbitrary code. Common in Python malware for running obfuscated payloads.scripts/run_memory_server.py
with open(new_script, 'r', encoding='utf-8') as f:
exec(compile(f.read(), new_script, 'exec'), global_vars)
else:
print(f"[ERROR] Could not find {new_script}", file=sys.stderr)+7warningPython subprocess / os.system usageos.system() or subprocess with shell=True / suspicious commands can execute arbitrary shell commands. Plain pip/package installs are usually benign.scripts/server/check_server_health.py
# Start the server
server_process = subprocess.Popen(
['/bin/bash', '/Users/hkr/Documents/GitHub/mcp-memory-service/run_mcp_memory.sh'],
cwd='/Users/hkr/Documents/GitHub/mcp-me...+4warningPython subprocess / os.system usageos.system() or subprocess with shell=True / suspicious commands can execute arbitrary shell commands. Plain pip/package installs are usually benign.scripts/testing/test_docker_functionality.py
try:
result = subprocess.run(
cmd,
shell=True, +4criticaleval() usage detectedeval() executes arbitrary code and is commonly used in malware to run obfuscated payloads fetched from remote servers.claude-hooks/core/topic-change.js
// Use eval carefully on controlled content const resultsArray = eval(resultsMatch[1]); return resultsArray || []; }+8
criticaleval() usage detectedeval() executes arbitrary code and is commonly used in malware to run obfuscated payloads fetched from remote servers.claude-hooks/utilities/dynamic-context-updater.js
if (resultsMatch) {
return eval(resultsMatch[1]) || [];
}
}+8warningFlattened or dead control flowDetected switch(true), dead if branches, or deeply nested ternaries — patterns used by obfuscators to hide execution order.claude-hooks/utilities/context-formatter.js+3
warningFlattened or dead control flowDetected switch(true), dead if branches, or deeply nested ternaries — patterns used by obfuscators to hide execution order.site/demo/assets/ort/ort-wasm-simd-threaded.mjs+3
infoSuspicious file in repoExecutable file (auto-capture-hook.ps1) in repositoryclaude-hooks/core/auto-capture-hook.ps1+2
infoSuspicious file in repoExecutable file (install_claude_hooks_windows.ps1) in repositoryclaude-hooks/install_claude_hooks_windows.ps1+2
infoSuspicious file in repoExecutable file (memory_wrapper_cleanup.ps1) in repositoryscripts/run/memory_wrapper_cleanup.ps1+2
Scores 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.
1127 files scanned @ 52568d9 | 10/29/2026 | heuristic scan — always review manually
risk by category
code execution25
network & exfiltration0
file system access0
obfuscation6
supply chain15
owasp / injection0
telemetry
files 1127/1604rules hit 16engine v7commit 52568d9
github
doobidoo/mcp-memory-service
Open-source persistent memory for AI agent pipelines (LangGraph, CrewAI, AutoGen) and Claude. REST API + knowledge graph + autonomous consolidation.
2052
366
672d
1604 files
1127 scanned(70%)
52568d9
architecture░▒▓
entry (0) flagged (13) pkg (218)
618 nodes · 2183 edgesscroll to zoom · click node to jump to finding