Skip to content

Insufficient Input Validation for External API Calls #18

@FradSer

Description

@FradSer

Security Issue: SSRF and Injection Risk

Severity: HIGH
Location: agents.py:29, 59 - ExaTools integration
Risk Level: External API Abuse

Problem Description

The ExaTools integration in the researcher agent lacks proper input sanitization. User-provided thought content is passed directly to external research APIs without validation.

Attack Scenario

  • Malicious input could trigger Server-Side Request Forgery (SSRF) attacks via ExaTools
  • Research queries could be manipulated to access internal resources
  • No rate limiting or query validation implemented
  • Potential for API key abuse through crafted requests

Current Implementation

# agents.py - Researcher agent uses ExaTools without input sanitization
"tools": [ThinkingTools(), ExaTools()],

Required Fix

def sanitize_research_query(query: str) -> str:
    """Sanitize input for external research APIs."""
    import re
    # Remove potentially dangerous characters/patterns
    sanitized = re.sub(r'[^\w\s\-\.\?]', '', query)
    # Limit length to prevent abuse
    return sanitized[:500]

# Update researcher agent configuration
"tools": [ThinkingTools(), ExaTools(input_sanitizer=sanitize_research_query)],

Security Impact

  • External Resources: Potential access to internal services via SSRF
  • API Abuse: Unlimited external API calls without rate limiting
  • Data Leakage: Sensitive internal data could be sent to external APIs

Acceptance Criteria

  • Implement input sanitization for all external API calls
  • Add query length limits and character filtering
  • Implement rate limiting for external API requests
  • Add monitoring for suspicious query patterns
  • Test with malicious inputs to verify protection

Priority: High - Security vulnerability

Metadata

Metadata

Assignees

Labels

bugSomething isn't workingpriority: highHigh priority issues

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions