plugins/ruflo-security-audit/README.md
Security review, dependency scanning, policy gates, and CVE monitoring.
/plugin marketplace add ruvnet/ruflo
/plugin install ruflo-security-audit@ruflo
security scan --depth full@claude-flow/securityThe 3.6.25 release closed a class of shell-injection bugs. When auditing downstream code, the scanner should flag these patterns:
execSync(string) with template-literal args — replace with execFileSync(cmd, argv, { shell: false }). Closed sites: github-safe.js, statusline.js/cjs (git calls), mcp-tools/github-tools.ts (gh pr/issue/run), update/executor.ts (npm install).number — TypeScript casts don't run at runtime. A prNumber: "1; rm -rf /" slips through. Mitigate via toPositiveInt(value) (see src/mcp-tools/github-tools.ts).npm install — gate via isSafePackageSpec(pkg, version) regex check (see src/update/executor.ts). Defense-in-depth even with execFileSync.LD_PRELOAD, NODE_OPTIONS, DYLD_*) flowing into a child process env — gate via validateEnv() (see src/mcp-tools/validate-input.ts)..claude-flow/sessions/, .claude-flow/terminals/store.json, .swarm/memory.db — paired with ADR-096 opt-in encryption (CLAUDE_FLOW_ENCRYPT_AT_REST=1). Confirm gate state via ruflo doctor -c encryption.A ruflo verify round-trip confirms 55 witnesses (27 regression-fix + 28 per-source-file capability) match the signed manifest byte-for-byte.
ruflo-core plugin (provides MCP server)@claude-flow/cli v3.6 major+minor.bash plugins/ruflo-security-audit/scripts/smoke.sh is the contract.This plugin's static scanning (CVE / dependency / shell-injection patterns) complements the runtime gates owned by ruflo-aidefence ADR-0001:
| Layer | Owner | What it catches |
|---|---|---|
| Static analysis (this plugin) | ruflo-security-audit | Shell-injection patterns, dependency CVEs, plaintext secrets at rest, loader-hijack env vars |
| Runtime gates (3-gate pattern) | ruflo-aidefence ADR-0001 | PII pre-storage gate, sanitization gate, prompt-injection gate |
The two layers are complementary: static analysis finds the patterns; the 3-gate runtime catches what slipped through.
This plugin owns the security-findings AgentDB namespace (kebab-case, follows the convention from ruflo-agentdb ADR-0001 §"Namespace convention"). Reserved namespaces (pattern, claude-memories, default) MUST NOT be shadowed.
security-findings indexes scan results by file + commit + severity. Accessed via memory_* (namespace-routed).
bash plugins/ruflo-security-audit/scripts/smoke.sh
# Expected: "10 passed, 0 failed"