AI-powered guidance for effective vulnerability reporting to Cisco's Bug Bounty and VDP programs
By participating in Cisco's security research programs, you acknowledge and agree you are registered with Bugcrowd and bound by their Code of Conduct and Standard Disclosure Terms and are authorized in advance by such terms and the applicable program briefs to search for vulnerabilities.
The Cisco Researcher Toolkit is a comprehensive, AI-powered utility designed to assist security researchers in identifying, classifying, and reporting vulnerabilities to Cisco's various Bug Bounty and Vulnerability Disclosure Programs (VDPs).
Built around the PIRR Value Framework (Product Impact, Infrastructure Research, Relationship Building, Revenue Risk), this toolkit demystifies the submission process by embedding Cisco's program priorities directly into an intuitive interface.
# Clone and run the CLI
git clone https://github.com/yourusername/cisco-researcher-toolkit
cd cisco-researcher-toolkit
export GEMINI_API_KEY="your-api-key-here"
python3 ciscoresearchertoolkit.py
- CLI Tool: Full-featured command-line interface with complete AI support
- Web Interface: Modern, responsive single-page application
- Google Gemini (gemini-2.0-flash)
- Anthropic Claude (claude-3-7-sonnet-20250219)
- OpenAI GPT (gpt-4o)
- Intelligent Fallback: Automatic provider switching on failure
- Session Management: Secure API key storage and management
Tool | Description | AI Enhanced | Testing Guide Integration |
---|---|---|---|
Vulnerability Triage | PIRR-based classification and program routing | β | β |
Submission Quality Analyzer | Report quality scoring and enhancement | β | β |
Research Area Suggester | AI-powered attack vector brainstorming with methodology detection | β | β |
Testing Guides | Links to industry-standard OWASP methodologies | β | β |
- High-Impact Findings β Cisco Meraki Bug Bounty Program
- Production Vulnerabilities β Relevant Bug Bounty Programs
- Demo/Test Environment Issues β VDP Programs
- Out-of-Scope High-Impact β Discretionary Submissions
- Python 3.7+ (for CLI)
- Modern Web Browser (for web interface)
- API Key from at least one supported AI provider
# Clone the repository
git clone https://github.com/yourusername/cisco-researcher-toolkit
cd cisco-researcher-toolkit
# Install dependencies (CLI only)
pip install requests
# Set API keys (choose one or more)
export GEMINI_API_KEY="your-gemini-key"
export CLAUDE_API_KEY="your-claude-key"
export OPENAI_API_KEY="your-openai-key"
# Optional: Set default provider
export DEFAULT_AI_PROVIDER="gemini" # or "claude" or "openai"
python3 ciscoresearchertoolkit.py
Open Cisco Researcher Toolkit.html
in your browser and configure API keys in the AI Configuration tab.
Feature | CLI | Web Interface |
---|---|---|
Vulnerability Triage | β Full Support | β Full Support |
Quality Analysis | β Full Support | β Full Support |
AI Report Enhancement | β All Providers | |
Research Suggestions | β All Providers | |
Provider Fallback | β Automatic | β Automatic |
API Key Management | π§ Environment Variables | π±οΈ GUI Configuration |
Offline Usage | β Yes (without AI) | β Yes (without AI) |
Release Data Sync | β Writes to releases.json | β Reads from releases.json |
- Visit Google AI Studio
- Create a new API key
- Set environment variable:
export GEMINI_API_KEY="your-key"
CLI Support: β
Full
Browser Support: β
Full (CORS enabled)
- Visit Anthropic Console
- Generate an API key
- Set environment variable:
export CLAUDE_API_KEY="your-key"
CLI Support: β
Full
Browser Support: β
Full (with CORS workaround header)
- Visit OpenAI Platform
- Create a new API key
- Set environment variable:
export OPENAI_API_KEY="your-key"
CLI Support: β
Full
Browser Support: β CORS Blocked (requires backend proxy)
π‘ Recommendation: Use CLI for full functionality across all providers. Web interface works best with Gemini and Claude (with CORS workaround).
# API Keys
export GEMINI_API_KEY="your-gemini-key"
export CLAUDE_API_KEY="your-claude-key"
export OPENAI_API_KEY="your-openai-key"
# Default Provider (optional)
export DEFAULT_AI_PROVIDER="gemini" # Options: gemini, claude, openai
# Provider Fallback Order (automatic)
# 1. Preferred provider (if specified)
# 2. Current default provider
# 3. Remaining available providers
- Open the AI Configuration tab
- Enter API keys for desired providers
- Select default provider
- Keys are stored in browser session only (not permanent)
The CLI and web interface share Cisco release data through releases.json
:
How it works:
- CLI fetches live data from Cisco/Meraki community forums
- Automatically writes to
releases.json
when successful - Web interface reads from
releases.json
on "Refresh Data" - Both interfaces stay synced without manual updates
To update release data:
python3 ciscoresearchertoolkit.py
# Fetches live data and updates releases.json
In the web interface:
- Click "π Refresh Data" to reload from
releases.json
- If no
releases.json
exists, falls back to hardcoded data
# Start CLI
python3 ciscoresearchertoolkit.py
# Select: [1] Vulnerability Triage Tool
# Answer guided questions:
# - Finding type: "Hardcoded credentials in GitHub repo"
# - Product: "Meraki Dashboard"
# - Impact: "Critical (RCE)"
# - Infrastructure: "Cisco-owned cloud"
# - Business Risk: "Yes"
# Result: "High Impact Finding: Report to Bug Bounty"
# Recommendation: Cisco Meraki Bug Bounty Program
# URL: https://bugcrowd.com/ciscomeraki
# Select: [3] Suggested Research Areas
# Enter topic: "Cisco AI Canvas"
# System Response:
π Recommended Testing Methodologies:
OWASP AI Testing Guide
For AI/ML systems, LLMs, and intelligent assistants
Key areas: Model Security, Prompt Injection, Privacy & Ethics, Runtime Behavior
URL: https://github.com/OWASP/www-project-ai-testing-guide
π― AI-Generated Attack Vectors:
1. Training data extraction through crafted prompts
2. Model poisoning via malicious input injection
3. Prompt injection to bypass safety filters
4. Adversarial examples to manipulate model outputs
5. Privacy attacks to extract sensitive training data
6. Bias exploitation in model recommendations
7. Hallucination induction for misinformation attacks
π Learn More:
β’ OWASP AI Testing Guide - AI security, prompt injection, model vulnerabilities
# Select: [2] Submission Quality Analyzer
# Complete checklist (5/5 for best results)
# Enter technical notes:
"Found SQL injection in Meraki dashboard user search.
Parameter 'username' not sanitized.
PoC: username=' OR 1=1-- returns all users"
# AI generates professional report with:
# - Executive Summary
# - Technical Description
# - Proof of Concept
# - Business Impact Assessment
# Select: [3] Suggested Research Areas
# Enter topic: "Cisco AI Assistant"
# System detects: AI Testing Guide methodology
# Recommended Testing Methodologies:
# π OWASP AI Testing Guide
# For AI/ML systems, LLMs, and intelligent assistants
# Key areas: Model Security, Prompt Injection, Privacy & Ethics, Runtime Behavior
# AI suggests attack vectors:
# 1. Prompt injection bypassing safety filters
# 2. Training data extraction through conversation
# 3. Model hallucination exploitation
# 4. Bias exploitation in recommendations
# 5. Jailbreaking conversational boundaries
cisco-researcher-toolkit/
βββ ciscoresearchertoolkit.py # CLI application
βββ Cisco Researcher Toolkit.html # Web interface
βββ SPECIFICATIONS.md # Detailed requirements
βββ README.md # This file
βββ requirements.txt # Python dependencies
The toolkit automatically detects the most appropriate OWASP testing methodologies based on research topics:
- IoT/Hardware Topics β OWASP ISTG (IoT Security Testing Guide)
- Firmware Topics β OWASP FSTM (Firmware Security Testing Methodology)
- AI/ML Topics β OWASP AI Testing Guide (AI Canvas, AI Assistant)
- Web/API Topics β OWASP WSTG (Web Security Testing Guide)
# AI Testing Guide triggers
"Cisco AI Assistant" β AI Testing Guide
"AI Canvas model" β AI Testing Guide
"LLM vulnerabilities" β AI Testing Guide
# IoT Testing Guide triggers
"Meraki device" β ISTG + WSTG
"Hardware security" β ISTG + FSTM
# Multiple methodologies
"Meraki firmware API" β ISTG + FSTM + WSTG
class AIManager:
"""Manages multiple AI providers with fallback capabilities"""
# Supported providers
providers = {
'gemini': GeminiProvider(),
'claude': ClaudeProvider(),
'openai': OpenAIProvider()
}
# Automatic fallback chain
def call_ai(prompt, preferred_provider=None):
# Try preferred β default β remaining providers
# Return first successful response
- CLI: Environment variables (secure)
- Web: Session storage only (not persistent)
- API Keys: Never transmitted except to respective AI services
- No Backend: All processing client-side
# β
Secure: Environment variables
export GEMINI_API_KEY="your-key"
# β
Secure: .env file (add to .gitignore)
echo "GEMINI_API_KEY=your-key" >> .env
# β Insecure: Hardcoded in source
api_key = "your-key-here" # Never do this!
- API keys stored in session storage only
- Keys cleared when browser session ends
- No persistent storage of credentials
- Direct API communication (no intermediary servers)
- CLI: Use temporary environment variables
- Web: Clear API keys before closing browser
- Always: Use the "Clear All API Keys" button when done
Issue | Cause | Solution |
---|---|---|
"No AI providers configured" | Missing API keys | Set environment variables or configure in web UI |
"Failed to fetch" (Claude) | Browser CORS policy | Automatic CORS workaround header applied; if persistent, use CLI |
"CORS blocked" (OpenAI) | Browser CORS policy | Use CLI or implement backend proxy |
CLI crashes on startup | Invalid DEFAULT_AI_PROVIDER | Remove variable or use valid value |
"Invalid API key" errors | Incorrect/expired key | Verify key is correct and active |
- Gemini: β Full browser support with native CORS
- Claude: β Full browser support with CORS workaround header
- OpenAI: β Browser blocked, CLI recommended
# β
Expected: No providers configured
"β οΈ AI Status: No providers configured"
# β
Expected: Providers available
"AI Status: 2 provider(s) available | Using: Gemini"
# β Error: Invalid API key
"Error: API request to gemini failed: 400 Client Error"
# β Error: Network issue
"Error: API request to claude failed: ConnectionError"
# Enable verbose output
python3 ciscoresearchertoolkit.py --debug
# Check provider status
python3 -c "
import ciscoresearchertoolkit
manager = ciscoresearchertoolkit.ai_manager
print('Available:', manager.list_available_providers())
print('Current:', manager.current_provider)
"
# Test basic CLI functionality
echo "6" | python3 ciscoresearchertoolkit.py
# Test with API key
export GEMINI_API_KEY="test-key"
echo -e "2\ny\ny\ny\ny\ny\ntest\n\n6" | python3 ciscoresearchertoolkit.py
# Test provider switching
export DEFAULT_AI_PROVIDER="claude"
echo "6" | python3 ciscoresearchertoolkit.py
- Open
Cisco Researcher Toolkit.html
in browser - Navigate to AI Configuration tab
- Enter test API keys
- Test each tool functionality
- Verify provider switching works
# Clone repository
git clone https://github.com/yourusername/cisco-researcher-toolkit
cd cisco-researcher-toolkit
# Install development dependencies
pip install -r requirements.txt
# Run tests
python3 -m pytest tests/
# Lint code
python3 -m flake8 ciscoresearchertoolkit.py
- Update AIProvider enum:
class AIProvider(Enum):
GEMINI = "gemini"
CLAUDE = "claude"
OPENAI = "openai"
NEWPROVIDER = "newprovider" # Add here
- Add API configuration:
API_CONFIGS = {
AIProvider.NEWPROVIDER: {
"url": "https://api.newprovider.com/v1/generate",
"headers": {"Content-Type": "application/json"}
}
}
- Implement payload/response handling:
def _create_payload(self, prompt, provider):
elif provider == AIProvider.NEWPROVIDER:
return {"prompt": prompt, "max_tokens": 4000}
def _extract_response(self, result, provider):
elif provider == AIProvider.NEWPROVIDER:
return result.get("text", "")
- Follow PEP 8 guidelines
- Use type hints where applicable
- Add docstrings for all functions
- Keep functions focused and small
- Handle errors gracefully
- Gemini: 15 requests per minute (free tier)
- Claude: 5 requests per minute (free tier)
- OpenAI: 3 requests per minute (free tier)
- Fallback: Automatic switching when rate limited
- Gemini: ~2-5 seconds (fastest)
- Claude: ~3-8 seconds (moderate)
- OpenAI: ~4-10 seconds (variable)
- Use environment variable
DEFAULT_AI_PROVIDER
for preferred model - Implement provider switching based on cost preferences
- Monitor usage through respective provider dashboards
- IoT Security Testing Guide (ISTG)
- Firmware Security Testing Methodology (FSTM)
- AI Testing Guide
- Web Security Testing Guide (WSTG)
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
- Cisco Network Device Security Team for program guidance and framework development
- OWASP Community for comprehensive testing methodologies
- AI Providers (Google, Anthropic, OpenAI) for enabling enhanced functionality
- Security Research Community for feedback and testing
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Built for security researchers, by security researchers π‘οΈ
Happy hunting and responsible disclosure! π―