live · scanning repos
Scanrepo
github.com
github.com / ruvnet

ruvnet/ruflo

TypeScript·8265 files·commit 89b0cd0·scanned 19h ago·cached ✓
?/100
INCONCLUSIVE
Scan coverage was too low to trust this verdict — treat the score as inconclusive and rescan.

score capped at 15 — 79,973+ stars — findings likely false positives

verdict accurate?
Incomplete scan
Obfuscated code detected
79,973 stars
Crypto/Web3 project
Partial architecture graph
CLI tool detected
threat-state: lowlive

FINDINGS ░▒▓

criticaleval() usage detectedeval() executes arbitrary code and is commonly used in malware to run obfuscated payloads fetched from remote servers.plugins/ruflo-workflows/scripts/fixtures/gaia-audit/planted-repo/v3/@claude-flow/cli/src/benchmarks/gaia-evil-runner.ts
  // FLAG: eval of task-derivable content.
  const result = eval(taskContent);

  // FLAG: exec-family call with an interpolated (task-derivable) command.
+8
criticaleval() usage detectedeval() executes arbitrary code and is commonly used in malware to run obfuscated payloads fetched from remote servers.plugins/ruflo-workflows/scripts/gaia-audit.test.mjs

// ── AUD-9 dynamic-eval (static runner-source scan) ─────────────────────────
test('dynamic-eval: planted runner flags eval + interpolated exec only', () => {
  const c = checkDynamicEval({ runnerSo...
+8
criticalFunction() constructor detectednew Function() is equivalent to eval() and can execute arbitrary code strings.scripts/bench-managed-workflows.mjs
const original = baselineSource.slice(baselineSource.indexOf('function summarizeEvents('), baselineSource.indexOf('async function fetchSessionEvents('));
const summarize = new Function(`${stripTypeScr...
+5
criticalRemote 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/install.sh
# Usage:
#   curl -fsSL https://cdn.jsdelivr.net/gh/ruvnet/claude-flow@main/scripts/install.sh | bash
#   curl -fsSL https://cdn.jsdelivr.net/gh/ruvnet/claude-flow@main/scripts/install.sh | bash -s --...
+10
criticalBrowser wallet app with Node/system accessThe repository interacts with browser wallets but also accesses the filesystem or executes shell/code. This context mismatch is typical of hybrid drainer/infostealer malware.+10
infoSuspicious files are not reachable from entry pointsFlagged files exist but are not imported by any entry point. They may be dead code, tests, or attack payloads triggered by another mechanism.+2
infoWallet transaction signing APIUses wallet signing APIs (signTransaction, signMessage, sendTransaction, etc.). Legitimate in DeFi apps, but combined with remote exfiltration it is the core drainer pattern.plugins/ruflo-core/scripts/test-consensus-transport.mjs
  const msg = { type: 'commit', from: 'a', to: 'b', payload: { digest: 'abc123' }, seq: 1 };
  const sig = signMessage(msg, kpA.privateKeyPem);
  const okRight = verifyMessage({ ...msg, signature: sig...
+2
warningSSH/credential path accessAccessing .ssh, .aws/credentials, or .env files to steal authentication credentials.plugins/ruflo-x-gateway/src/github-query.mjs
  /^\.env(?:\..*)?$/i, /^\.envrc$/i, /^\.npmrc$/i, /^\.netrc$/i, /^\.pypirc$/i,
  /^\.git$/i, /^\.ssh$/i, /^\.aws$/i, /^\.gnupg$/i, /^\.kube$/i,
  /^id_(?:rsa|dsa|ecdsa|ed25519)(?:\..*)?$/i,
  /^crede...
+5
warningSSH/credential path accessAccessing .ssh, .aws/credentials, or .env files to steal authentication credentials.plugins/ruflo-business-pods/hooks/guard.ts
// Where credentials live: a pod template path has no business pointing at any of these.
const SENSITIVE = /(?:^|[\\/])(?:\.env(?:\.[^\\/]*)?|\.ssh|\.aws|\.gnupg|\.netrc|\.npmrc|id_(?:rsa|ed25519|ecds...
+5
warningSSH/credential path accessAccessing .ssh, .aws/credentials, or .env files to steal authentication credentials.plugins/ruflo-business-pods/tests/register.test.ts
    expect(await route('../../etc/shadow.json')).toContain('..')
    expect(await route('/home/u/.ssh/id_rsa')).toContain('credentials')
    expect(await route('/home/u/.aws/credentials.json')).toCont...
+5
warningExtremely long lines (>1000 chars)Very long lines in source files (not minified bundles) can hide malicious code.plugins/ruflo-ai-team/src/public-pages.mjs+4
criticalString-array obfuscation detectedCode resolves its string literals through a rotating string-array decoder — many `name(0xNNN)` index calls that reconstruct hidden strings at runtime. This is the structural signature of javascript-obfuscator regardless of the variable-naming scheme, so it fires even when mangled identifiers (e.g. `j5`, `jM`) are used to evade _0x-based detection. Commonly used to hide malware from code review.scripts/lib/guard-probe-corpus.mjs
export const INVISIBLE = {
  zwsp: cp(0x200b), zwnj: cp(0x200c), zwj: cp(0x200d), lrm: cp(0x200e), rlo: cp(0x202e), pdf: cp(0x202c),
  wj: cp(0x2060), bom: cp(0xfeff), shy: cp(0xad), rli: cp(0x2067), ...
+18
warningExtremely long lines (>1000 chars)Very long lines in source files (not minified bundles) can hide malicious code.plugins/ruflo-adr/hooks/codex-hook.cjs+4
warningFlattened or dead control flowDetected switch(true), dead if branches, or deeply nested ternaries — patterns used by obfuscators to hide execution order.plugins/ruflo-ai-team/src/server.mjs+3
warningFlattened or dead control flowDetected switch(true), dead if branches, or deeply nested ternaries — patterns used by obfuscators to hide execution order.plugins/ruflo-ai-team/src/store.mjs+3
warningFlattened or dead control flowDetected switch(true), dead if branches, or deeply nested ternaries — patterns used by obfuscators to hide execution order.plugins/ruflo-x-gateway/src/server.mjs+3
warningHigh-entropy string literalsFound 4 long strings with high Shannon entropy. This is common in obfuscated payloads that hide URLs, keys, or bytecode.plugins/ruflo-console/hooks/data/workflows.ts+3
criticalSuspicious install scripts in package.jsonpreinstall/postinstall scripts that run shell commands, download files, or execute node code.v3/@claude-flow/browser/package.json
    "typecheck": "tsc --noEmit",
    "postinstall": "node -e \"const{execSync}=require('child_process');try{execSync('agent-browser --version',{stdio:'ignore'});}catch{console.log('\\n📦 Installing ag...
+8
infoSuspicious file in repoVery large source file (524KB) — could contain obfuscated payloadpackage-lock.json+2
infoSuspicious file in repoVery large source file (539KB) — could contain obfuscated payloadplugins/ruflo-graph-intelligence/package-lock.json+2
infoSuspicious file in repoVery large source file (993KB) — could contain obfuscated payloadv3/@claude-flow/cli/assets/model-router/seed-router.krr.high.json+2
warningOpen redirect vulnerabilityres.redirect() using unsanitized user input (req.get('host'), req.query, req.body). Can redirect victims to phishing sites.scripts/gen-seed-corpus-v2.mjs
  { tier: 'strong', task: 'Plan an A/B test rollout of a major search-ranking algorithm change. Cover: success metrics + guardrails, ramp schedule (1% → 5% → 25% → 50% → 100%), what triggers a rollbac...
+3
warningOpen redirect vulnerabilityres.redirect() using unsanitized user input (req.get('host'), req.query, req.body). Can redirect victims to phishing sites.docs/benchmarks/runs/seed-corpus-2026-06-15-23-01-54Z.json
      "tier": "strong",
      "task": "Audit this OAuth 2.0 implementation for security issues. Identify at least 4 distinct vulnerabilities, propose remediation for each, classify severity, and indic...
+3

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.

1510 files scanned @ 89b0cd0 | 10/29/2026 | heuristic scan — always review manually

risk by category
code execution25
network & exfiltration0
file system access17
obfuscation15
supply chain15
owasp / injection6
telemetry
files 1510/8265rules hit 23engine v7commit 89b0cd0

github

ruvnet/ruflo

🌊 The original agent harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory, self-learning intelligence, federation, vector RAG integration, and native Claude Code / Codex / Hermes and many more Integrated

TypeScript
79973
9378
514d
8265 files
1510 scanned(18%)
89b0cd0

architecture░▒▓

entry (3) flagged (20) pkg (154)
554 nodes · 762 edgesscroll to zoom · click node to jump to finding
LOW (15/100) — ruvnet/ruflo — ScanRepo