YaraFlux

Um servidor MCP para escaneamento YARA, permitindo que LLMs analisem arquivos usando regras YARA.

Documentação

Servidor MCP YaraFlux

GitHub release (latest by date) CI codecov Codacy Badge License: MIT Python Version FastAPI MCP Code style: black

Um servidor Model Context Protocol (MCP) para varredura YARA, fornecendo aos LLMs capacidades de analisar arquivos com regras YARA.

📋 Visão Geral

O Servidor MCP YaraFlux permite que assistentes de IA realizem análises de ameaças baseadas em regras YARA por meio da interface padronizada do Model Context Protocol. O servidor integra a varredura YARA com assistentes de IA modernos, suportando gerenciamento abrangente de regras, varredura segura e análise detalhada de resultados por meio de uma arquitetura modular.

🧩 Visão Geral da Arquitetura

+------------------------------------------+
|              AI Assistant                |
+--------------------+---------------------+
                    |
                    | Model Context Protocol
                    |
+--------------------v---------------------+
|              YaraFlux MCP Server         |
|                                          |
|  +----------------+    +---------------+ |
|  | MCP Server     |    | Tool Registry | |
|  +-------+--------+    +-------+-------+ |
|          |                     |         |
|  +-------v--------+    +-------v-------+ |
|  | YARA Service   |    | Storage Layer | |
|  +----------------+    +---------------+ |
|                                          |
+------------------------------------------+
          |                   |
 +-----------------+  +---------------+
 | YARA Engine     |  | Storage       |
 | - Rule Compiling|  | - Local FS    |
 | - File Scanning |  | - MinIO/S3    |
 +-----------------+  +---------------+

O YaraFlux segue uma arquitetura modular que separa responsabilidades entre:

  • Camada de Integração MCP: Gerencia a comunicação com assistentes de IA
  • Camada de Implementação de Ferramentas: Implementa a funcionalidade de varredura e gerenciamento YARA
  • Camada de Abstração de Armazenamento: Fornece opções flexíveis de armazenamento
  • Integração com o Mecanismo YARA: Utiliza YARA para varredura e gerenciamento de regras

Para diagramas detalhados da arquitetura, consulte a Documentação da Arquitetura.

✨ Recursos

  • 🔄 Arquitetura Modular

    • Separação clara entre integração MCP, implementação de ferramentas e armazenamento
    • Análise padronizada de parâmetros e tratamento de erros
    • Backend de armazenamento flexível com opções locais e S3/MinIO
  • 🤖 Integração MCP

    • 19 ferramentas MCP integradas para funcionalidade abrangente
    • Otimizado para integração com Claude Desktop
    • Análise direta de arquivos dentro de conversas
    • Compatível com a especificação mais recente do protocolo MCP
  • 🔍 Varredura YARA

    • Varredura de URLs e conteúdo de arquivos
    • Informações detalhadas de correspondências com contexto
    • Armazenamento e recuperação de resultados de varredura
    • Mecanismo de varredura otimizado para desempenho
  • 📝 Gerenciamento de Regras

    • Criar, ler, atualizar e excluir regras YARA
    • Validação de regras com relatórios detalhados de erros
    • Importação de regras do repositório ThreatFlux
    • Categorização por origem (personalizada vs. comunidade)
  • 📊 Análise de Arquivos

    • Visualização hexadecimal para análise binária
    • Extração de strings com parâmetros configuráveis
    • Metadados de arquivos e informações de hash
    • Upload e armazenamento seguro de arquivos
  • 🔐 Recursos de Segurança

    • Autenticação JWT para acesso à API
    • Execução em contêiner sem usuário root
    • Isolamento seguro de armazenamento
    • Controles de acesso configuráveis

🚀 Início Rápido

Usando Imagem Docker

# Pull the latest Docker image
docker pull threatflux/yaraflux-mcp-server:latest
# Run the container
docker run -p 8000:8000 \
  -e JWT_SECRET_KEY=your-secret-key \
  -e ADMIN_PASSWORD=your-admin-password \
  -e DEBUG=true \
  threatflux/yaraflux-mcp-server:latest
### Using Docker building from source

```bash
# Clone the repository
git clone https://github.com/ThreatFlux/YaraFlux.git
cd YaraFlux/

# Build the Docker image
docker build -t yaraflux-mcp-server:latest .

# Run the container
docker run -p 8000:8000 \
  -e JWT_SECRET_KEY=your-secret-key \
  -e ADMIN_PASSWORD=your-admin-password \
  -e DEBUG=true \
  yaraflux-mcp-server:latest

Instalação a partir do Código-Fonte

# Clone the repository
git clone https://github.com/ThreatFlux/YaraFlux.git
cd YaraFlux/

# Install dependencies (requires Python 3.13+)
make install

# Run the server
make run

🧩 Integração com Claude Desktop

O YaraFlux é projetado para integração perfeita com o Claude Desktop por meio do Model Context Protocol.

  1. Construa a imagem Docker:
docker build -t yaraflux-mcp-server:latest .
  1. Adicione à configuração do Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
{
  "mcpServers": {
    "yaraflux-mcp-server": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "--env",
        "JWT_SECRET_KEY=your-secret-key",
        "--env",
        "ADMIN_PASSWORD=your-admin-password",
        "--env",
        "DEBUG=true",
        "--env",
        "PYTHONUNBUFFERED=1",
        "threatflux/yaraflux-mcp-server:latest"
      ],
      "disabled": false,
      "autoApprove": [
        "scan_url",
        "scan_data",
        "list_yara_rules",
        "get_yara_rule"
      ]
    }
  }
}
  1. Reinicie o Claude Desktop para ativar o servidor.

🛠️ Ferramentas MCP Disponíveis

O YaraFlux expõe 19 ferramentas MCP integradas:

Ferramentas de Gerenciamento de Regras

  • list_yara_rules: Lista regras YARA disponíveis com opções de filtragem
  • get_yara_rule: Obtém o conteúdo e os metadados de uma regra YARA específica
  • validate_yara_rule: Valida a sintaxe de regras YARA com relatórios detalhados de erros
  • add_yara_rule: Cria uma nova regra YARA
  • update_yara_rule: Atualiza uma regra YARA existente
  • delete_yara_rule: Exclui uma regra YARA
  • import_threatflux_rules: Importa regras do repositório GitHub ThreatFlux

Ferramentas de Varredura

  • scan_url: Varre conteúdo de uma URL com regras YARA especificadas
  • scan_data: Varre dados fornecidos (codificados em base64) com regras especificadas
  • get_scan_result: Recupera resultados detalhados de uma varredura anterior

Ferramentas de Gerenciamento de Arquivos

  • upload_file: Envia um arquivo para análise ou varredura
  • get_file_info: Obtém metadados sobre um arquivo enviado
  • list_files: Lista arquivos enviados com paginação e ordenação
  • delete_file: Exclui um arquivo enviado
  • extract_strings: Extrai strings ASCII/Unicode de um arquivo
  • get_hex_view: Obtém a visualização hexadecimal do conteúdo do arquivo
  • download_file: Baixa um arquivo enviado

Ferramentas de Gerenciamento de Armazenamento

  • get_storage_info: Obtém estatísticas de uso de armazenamento
  • clean_storage: Remove arquivos antigos para liberar espaço de armazenamento

📚 Documentação

Documentação abrangente está disponível no diretório docs/:

🗂️ Estrutura do Projeto

yaraflux_mcp_server/
├── src/
│   └── yaraflux_mcp_server/
│       ├── app.py                 # FastAPI application
│       ├── auth.py                # JWT authentication and user management
│       ├── config.py              # Configuration settings loader
│       ├── models.py              # Pydantic models for requests/responses
│       ├── mcp_server.py          # MCP server implementation
│       ├── utils/                 # Utility functions package
│       │   ├── __init__.py        # Package initialization
│       │   ├── error_handling.py  # Standardized error handling
│       │   ├── param_parsing.py   # Parameter parsing utilities
│       │   └── wrapper_generator.py # Tool wrapper generation
│       ├── mcp_tools/             # Modular MCP tools package
│       │   ├── __init__.py        # Package initialization
│       │   ├── base.py            # Base tool registration utilities
│       │   ├── file_tools.py      # File management tools
│       │   ├── rule_tools.py      # YARA rule management tools
│       │   ├── scan_tools.py      # Scanning tools
│       │   └── storage_tools.py   # Storage management tools
│       ├── storage/               # Storage implementation package
│       │   ├── __init__.py        # Package initialization
│       │   ├── base.py            # Base storage interface
│       │   ├── factory.py         # Storage client factory
│       │   ├── local.py           # Local filesystem storage
│       │   └── minio.py           # MinIO/S3 storage
│       ├── routers/               # API route definitions
│       │   ├── __init__.py        # Package initialization
│       │   ├── auth.py            # Authentication API routes
│       │   ├── files.py           # File management API routes
│       │   ├── rules.py           # YARA rule management API routes
│       │   └── scan.py            # YARA scanning API routes
│       ├── yara_service.py        # YARA rule management and scanning
│       ├── __init__.py            # Package initialization
│       └── __main__.py            # CLI entry point
├── docs/                          # Documentation
├── tests/                         # Test suite
├── Dockerfile                     # Docker configuration
├── entrypoint.sh                  # Container entrypoint script
├── Makefile                       # Build automation
├── pyproject.toml                 # Project metadata and dependencies
├── requirements.txt               # Core dependencies
└── requirements-dev.txt           # Development dependencies

🧪 Desenvolvimento

Desenvolvimento Local

# Set up development environment
make dev-setup

# Run tests
make test

# Code quality checks
make lint
make format
make security-check

# Generate test coverage report
make coverage

# Run development server
make run

Fluxos de Trabalho CI/CD

Este projeto usa GitHub Actions para integração contínua e implantação:

  • Testes de CI: Executados em cada push e pull request para as branches main e develop

    • Executa testes, formatação, linting e verificação de tipos
    • Constrói e testa imagens Docker
    • Envia relatórios de cobertura de testes para o Codecov
  • Incremento Automático de Versão: Incrementa automaticamente a versão em pushes para a branch main

    • Atualiza a versão em pyproject.toml, setup.py e Dockerfile
    • Cria tag git para a nova versão
  • Publicar Lançamento: Acionado após o incremento automático de versão bem-sucedido

    • Constrói imagens Docker para múltiplos estágios
    • Gera notas de lançamento a partir de commits git
    • Cria lançamento no GitHub com artefatos
    • Publica imagens Docker no Docker Hub

Esses fluxos de trabalho garantem a qualidade do código e automatizam o processo de lançamento.

Verificações de Status

As seguintes verificações de status são executadas em pull requests:

  • Verificação de Formatação: Garante que o código segue os padrões de formatação Black e isort
  • Verificação de Lint: Valida a qualidade do código e a conformidade com os padrões de codificação
  • Execução de Testes: Executa a suíte completa de testes para verificar a funcionalidade
  • Relatório de Cobertura: Garante cobertura suficiente de testes do código

🌐 Documentação da API

Documentação interativa da API disponível em:

Para documentação detalhada da API, consulte a Referência da API.

🤝 Contribuindo

Contribuições são bem-vindas! Sinta-se à vontade para enviar um Pull Request.

  1. Faça um fork do repositório
  2. Crie sua branch de recurso (git checkout -b feature/amazing-feature)
  3. Faça commit das suas alterações (git commit -m 'Add some amazing feature')
  4. Envie para a branch (git push origin feature/amazing-feature)
  5. Abra um Pull Request

📄 Licença

Este projeto é licenciado sob a Licença MIT - consulte o arquivo LICENSE para detalhes.

💖 Doe ou Solicite Recursos