UNPKG

claude-flow-novice

Version:

Claude Flow Novice - Advanced orchestration platform for multi-agent AI workflows with CFN Loop architecture Includes Local RuVector Accelerator and all CFN skills for complete functionality.

290 lines (239 loc) 14.8 kB
================================================================================ RUVECTOR - ISOLATION VULNERABILITY MATRIX ================================================================================ Query Method Status Risk WHERE Clause Parameter ════════════════════════════════════════════════════════════════════════════════ QueryV2::search() VULNERABLE HIGH NONE NO project QueryV2::search_similar_entities() VULNERABLE HIGH NONE NO project StoreV2::find_entities_by_name() VULNERABLE HIGH NONE NO project StoreV2::find_entities_by_kind() VULNERABLE HIGH NONE NO project StoreV2::find_entities_in_file() RISKY MEDIUM YES (path) NO validation StoreV2::search_entities() VULNERABLE HIGH NONE NO project StoreV2::find_entities_using_type() VULNERABLE HIGH NONE NO project StoreV2::find_references_to_entity()VULNERABLE HIGH NONE NO project StoreV2::find_references_from_entity()VULNERABLE HIGH NONE NO project QueryCommand::execute() RISKY MEDIUM OPTIONAL CLIENT-SIDE VULNERABILITY BREAKDOWN ═════════════════════════════════════════════════════════════════════════════════ UNFILTERED (8 METHODS) - Return results from ALL projects: ────────────────────────────────────────────────────────── ├─ QueryV2::search() └─ Impact: Semantic search across all projects └─ Leaks: 783,891 potential results from any project ├─ QueryV2::search_similar_entities() └─ Impact: Maps similar code across projects └─ Leaks: Architecture, patterns, variable names ├─ StoreV2::find_entities_by_name() └─ Impact: Gets all matching function/class names └─ Leaks: Function signatures from all projects ├─ StoreV2::find_entities_by_kind() └─ Impact: Enumerates all classes/functions/structs └─ Leaks: Complete type hierarchy from all projects ├─ StoreV2::search_entities() └─ Impact: Fulltext search across all projects └─ Leaks: Code matching any term ├─ StoreV2::find_entities_using_type() └─ Impact: Gets all usages of a type globally └─ Leaks: Type dependencies across projects ├─ StoreV2::find_references_to_entity() └─ Impact: Maps ALL references to an entity globally └─ Leaks: Call chains across projects └─ StoreV2::find_references_from_entity() └─ Impact: Maps ALL calls from an entity globally └─ Leaks: API consumers from all projects RISKY (2 METHODS) - Insufficient filtering: ──────────────────────────────────────────── ├─ StoreV2::find_entities_in_file() ├─ Has WHERE clause: YES (file_path = ?) ├─ Issue: No path validation - Directory traversal: ../../project-a/... - Symlink attacks: link to other project - No canonicalization └─ Risk: Can query ANY file path └─ QueryCommand::execute() ├─ Has filtering: YES (Optional) ├─ Issue: Client-side only - If file_filter not specified: NO filtering - Substring match: "project-a" matches "NOT-project-a" - Happens after DB fetch (wasteful) - Easy to bypass └─ Risk: Query filter optional and inadequate ATTACK PATHS ═════════════════════════════════════════════════════════════════════════════════ ATTACK 1: Direct Semantic Search ──────────────────────────────── Attacker: Project B developer Method: query.search("authentication", 10, 0.5) Result: Returns auth code from Project A Status: EXPLOITABLE NOW Effort: Zero (basic API knowledge) ATTACK 2: Entity Enumeration by Type ───────────────────────────────────── Attacker: Project B developer Method: for kind in EntityKind { find_entities_by_kind(kind, 500) } Result: Maps all 500 classes from Project A Status: EXPLOITABLE NOW Effort: Simple loop (20 lines of code) ATTACK 3: Common Function Discovery ──────────────────────────────────── Attacker: Project B developer Method: find_entities_by_name("authenticate"), find_entities_by_name("decrypt"), etc. Result: Extracts security functions from Project A Status: EXPLOITABLE NOW Effort: Guess 20 common names, get 200+ functions ATTACK 4: Entity ID Brute Force ──────────────────────────────── Attacker: Project B developer Method: for id in 1..1_000_000_000 { search_similar_entities(id, 10, 0.5) } Result: Maps entire codebase structure of Project A Status: EXPLOITABLE NOW (but slow) Effort: Brute force script ATTACK 5: Directory Traversal ────────────────────────────── Attacker: Project B developer Method: find_entities_in_file("/home/user/project-a/src/auth.rs") Result: Direct access to any file Status: EXPLOITABLE NOW Effort: Guess project paths (standard naming patterns) ATTACK 6: Batch Query Injection ──────────────────────────────── Attacker: Create batch file with cross-project queries Method: BatchQueryCommand reads from attacker-controlled file Result: Unfiltered results written to output file Status: EXPLOITABLE NOW Effort: Simple text file IMPACT ANALYSIS ═════════════════════════════════════════════════════════════════════════════════ Data Exposed Per Attack: Search: Up to 10-100 results per query Find by kind: Up to 500 classes/functions per type Find by name: Up to 100 functions per common name Entity enumeration: UP TO 783,891 TOTAL ENTITIES Directory traversal: Complete file contents Frequency: Can be automated No detection mechanism No rate limiting No audit trail Accumulation: Single attacker can extract: 100% of Project A's code Time required: Hours to days depending on method Detection: Query logs: No logging implemented Behavioral: Search patterns same as legitimate use Result: UNDETECTABLE SEVERITY TIMELINE ═════════════════════════════════════════════════════════════════════════════════ Vulnerability Age: Since centralized DB implemented Affected Projects: ALL using ~/.local/share/ruvector/index_v2.db Entities at Risk: 783,891+ Date Discovered: 2025-12-11 Fix Complexity: Moderate (schema + 10 API updates) Estimated Fix Time: 1-2 developer weeks Current Status: EXPLOITABLE IN PRODUCTION FIX COMPLEXITY ASSESSMENT ═════════════════════════════════════════════════════════════════════════════════ CRITICAL FIXES (Required for basic isolation): ┌────────────────────────────────────────┬──────────┬─────────────┐ Task Effort Impact ├────────────────────────────────────────┼──────────┼─────────────┤ Add project_root column 2 hours HIGH Fix QueryV2::search() 1 hour CRITICAL Fix QueryV2::search_similar_entities() 1 hour CRITICAL Fix 6 StoreV2 methods 2 hours CRITICAL Add path validation 2 hours HIGH Update CLI to pass project context 1 hour HIGH Create test suite 3 hours HIGH ├────────────────────────────────────────┼──────────┼─────────────┤ SUBTOTAL │10 hours PRODUCTION └────────────────────────────────────────┴──────────┴─────────────┘ HIGH PRIORITY FIXES (Important for robustness): ┌────────────────────────────────────────┬──────────┬─────────────┐ Task Effort Impact ├────────────────────────────────────────┼──────────┼─────────────┤ Add audit logging 2 hours MEDIUM Add FK constraints (same-project refs) 2 hours MEDIUM Create composite indexes 1 hour MEDIUM Documentation updates 2 hours LOW ├────────────────────────────────────────┼──────────┼─────────────┤ SUBTOTAL 7 hours HARDENING └────────────────────────────────────────┴──────────┴─────────────┘ TOTAL EFFORT TO SAFE STATE: 17 hours (~2 developer days) SUCCESS CRITERIA FOR FIX ═════════════════════════════════════════════════════════════════════════════════ Test Coverage Required: [] test_cross_project_search_isolation [] test_cross_project_find_by_kind_isolation [] test_cross_project_find_by_name_isolation [] test_directory_traversal_blocked [] test_symlink_detection [] test_batch_query_respects_project Pass Rate Required: Unit tests: 95% minimum Integration tests: 90% minimum Security tests: 100% (zero tolerance) Code Review: [] All 10 query methods have project_root parameter [] All queries have WHERE project_root = ? clause [] All file path inputs validated and canonicalized [] CLI passes project context to query layer [] No hardcoded paths in queries [] Documentation updated with isolation assumptions DEPLOYMENT RESTRICTIONS (UNTIL FIX) ═════════════════════════════════════════════════════════════════════════════════ DO NOT USE: Production environments Multi-project setups Competitive projects Sensitive code repositories Regulated data (HIPAA, PCI-DSS, GDPR, SOX) Financial/payment systems Healthcare/medical systems Customer data SAFE USES ONLY: Single-project development Public codebases Internal company code (with trust) Research/academic Learning purposes ISOLATION GUARANTEE SCORECARD ═════════════════════════════════════════════════════════════════════════════════ Current After Fix ──────────────────── Database-level filtering 0% 100% WHERE clause coverage 10% 100% Project parameter usage 0% 100% Path validation 0% 100% Test isolation coverage 0% 100% Overall Isolation Grade: F A Risk Level: CRITICAL SAFE DOCUMENTATION REFERENCES ═════════════════════════════════════════════════════════════════════════════════ Full Audit Report: Location: /mnt/c/Users/masha/Documents/claude-flow-novice/docs/RUVECTOR_ISOLATION_AUDIT.md Size: 835 lines Details: Complete analysis with code samples, risks, and fixes Quick Reference: Location: /mnt/c/Users/masha/Documents/claude-flow-novice/docs/RUVECTOR_QUICK_REFERENCE.md Size: 287 lines Details: Summary, attack vectors, fix overview Executive Summary: Location: /mnt/c/Users/masha/Documents/claude-flow-novice/docs/RUVECTOR_ISOLATION_SUMMARY.txt Size: Full breakdown of all findings Source Code Files (Need Fixes): - .claude/skills/cfn-local-ruvector-accelerator/src/query_v2.rs (lines 42, 136) - .claude/skills/cfn-local-ruvector-accelerator/src/store_v2.rs (lines 143, 158, 173, 187, 235, 249, 285, 321) - .claude/skills/cfn-local-ruvector-accelerator/src/cli/query.rs (lines 63-91) - .claude/skills/cfn-local-ruvector-accelerator/src/schema_v2.rs (lines 214-286) - .claude/skills/cfn-local-ruvector-accelerator/src/main.rs (lines 34-35) Database Location: ~/.local/share/ruvector/index_v2.db ================================================================================