mycop

Escáner de seguridad de código AI con 100 reglas integradas que cubren OWASP Top 10 y CWE Top 25

Documentación

mycop

Escáner de seguridad de código con IA: detecta y corrige automáticamente vulnerabilidades en código generado por IA.

CI Crates.io Downloads License: MIT GitHub stars Made with Rust

mycop escanea bases de código en Python, JavaScript, TypeScript, Go y Java en busca de vulnerabilidades de seguridad mediante coincidencia de patrones, análisis AST y explicaciones y corrección automática opcionales impulsadas por IA. Incluye 200 reglas de seguridad integradas que cubren las categorías OWASP Top 10 y CWE Top 25.

mycop demo — scanning Python code for security vulnerabilities

¿Por qué mycop?

El código generado por IA es rápido, pero no es seguro. Investigación de Veracode muestra que el 45% del código generado por IA contiene vulnerabilidades de seguridad. Copilot, ChatGPT y otros asistentes de IA producen código funcional que a menudo incluye inyección SQL, secretos codificados, inyección de comandos y otros fallos críticos.

mycop fue construido específicamente para resolver este problema:

  • Primera herramienta SAST diseñada para código generado por IA -- 200 reglas dirigidas a los patrones de vulnerabilidad exactos que los LLM producen con mayor frecuencia, cubriendo OWASP Top 10 y CWE Top 25.
  • Corrección automática impulsada por IA, no solo detección -- mycop no solo encuentra vulnerabilidades, las corrige. El comando mycop fix reescribe código inseguro usando IA mientras preserva la funcionalidad.
  • Multilenguaje con una sola herramienta -- escanea bases de código en Python, JavaScript, TypeScript, Go y Java sin tener que lidiar con Bandit, ESLint y configuraciones separadas.
  • Configuración cero -- las 200 reglas de seguridad están compiladas en el binario. Sin descargas de reglas, sin archivos de configuración, sin conexión a internet. Solo mycop scan . y listo.
  • Servidor MCP para flujos de trabajo agénticos -- conecta mycop directamente a Claude Code, Cursor, Windsurf y otros asistentes de codificación con IA mediante el Protocolo de Contexto de Modelo.
  • Gratis y de código abierto -- licencia MIT, para siempre.

Instalación

Script de instalación (macOS / Linux)

curl -fsSL https://raw.githubusercontent.com/AbdumajidRashidov/mycop/main/install.sh | sh

Homebrew

brew install AbdumajidRashidov/tap/mycop

Cargo

cargo install mycop

Docker

docker run --rm -v "$(pwd):/src" -w /src ghcr.io/abdumajidrashidov/mycop scan .

Compilar desde el código fuente

git clone https://github.com/AbdumajidRashidov/mycop.git
cd mycop
cargo install --path .

Inicio rápido

# Scan current directory
mycop scan .

# Auto-fix all vulnerabilities using AI
mycop fix .

# Deep AI security review of a single file
mycop review src/auth.py

# Initialize config for your project
mycop init

# List all security rules
mycop rules list

Comandos

mycop scan

Escanea archivos en busca de vulnerabilidades de seguridad.

mycop scan .                              # Scan current directory
mycop scan src/ lib/                      # Scan specific directories
mycop scan --severity high                # Only report high/critical
mycop scan --fail-on critical             # Exit 1 only on critical findings
mycop scan --format json                  # JSON output
mycop scan --format sarif                 # SARIF output (for IDE integration)
mycop scan --explain                      # AI-powered explanations
mycop scan --diff                         # Only scan git-changed files
mycop scan --fix                          # Auto-fix (same as `mycop fix`)

Código de salida 1 cuando los hallazgos alcanzan el umbral --fail-on (predeterminado: alto).

mycop fix

Corrige automáticamente vulnerabilidades de seguridad usando IA. Agrupa todos los hallazgos por archivo, envía el archivo completo a un proveedor de IA y escribe la versión corregida.

mycop fix .                               # Fix all files
mycop fix src/auth.py                     # Fix specific file
mycop fix . --severity high               # Only fix high/critical
mycop fix . --dry-run                     # Show diffs without writing
mycop fix . --ai-provider anthropic       # Force specific AI provider
mycop fix . --diff                        # Only fix git-changed files

mycop review

Revisión de seguridad profunda impulsada por IA de un solo archivo. Va más allá de la coincidencia de reglas para encontrar fallos lógicos, condiciones de carrera y problemas arquitectónicos.

mycop review src/server.ts
mycop review app.py --ai-provider openai

mycop init

Genera un archivo de configuración .scanrc.yml. Detecta automáticamente el tipo de tu proyecto (Python, JavaScript/TypeScript, Rust) y rellena patrones de ignorar específicos del lenguaje.

mycop init

mycop rules list

Lista todas las reglas de seguridad disponibles.

mycop rules list                          # All rules
mycop rules list --language python        # Python rules only
mycop rules list --severity high          # High/critical rules only

mycop deps check

Comprueba dependencias en busca de problemas (paquetes alucinados).

mycop deps check .
mycop deps check requirements.txt

mycop mcp

Inicia un servidor MCP (Protocolo de Contexto de Modelo) sobre STDIO para la integración de herramientas agénticas. Esto permite que los asistentes de codificación con IA llamen directamente a las capacidades de escaneo, corrección y revisión de mycop.

mycop mcp

Herramientas expuestas:

HerramientaDescripción
scanEscanea archivos/directorios en busca de vulnerabilidades con filtrado por severidad
list_rulesNavega/filtra las 200 reglas de seguridad integradas
explain_findingExplicación detallada de un hallazgo específico con información CWE/OWASP
reviewRevisión de seguridad profunda con IA de un archivo
check_depsDetecta paquetes alucinados en dependencias

Nota: El comando mycop fix de la CLI sigue disponible para uso independiente. En modo MCP, el agente lee los hallazgos del escaneo (con fix_hint) y aplica correcciones directamente — no se necesita una llamada redundante de IA a IA.

Recursos: mycop://rules/catalog (catálogo JSON completo) y mycop://config/schema (plantilla de configuración).

Configurar en Claude Code (~/.claude/settings.json):

{
  "mcpServers": {
    "mycop": {
      "command": "mycop",
      "args": ["mcp"]
    }
  }
}

Configurar en Cursor (.cursor/mcp.json):

{
  "mcpServers": {
    "mycop": {
      "command": "mycop",
      "args": ["mcp"],
      "type": "stdio"
    }
  }
}

Configurar en Windsurf (.windsurf/mcp.json):

{
  "mcpServers": {
    "mycop": {
      "command": "mycop",
      "args": ["mcp"]
    }
  }
}

Funciona con cualquier cliente compatible con MCP, incluidos Codex CLI, Gemini CLI y otros IDE agénticos.

Ignorar en línea

Suprime hallazgos específicos con comentarios en línea:

eval(user_input)  # mycop-ignore

# mycop-ignore:PY-SEC-005
eval(user_input)

eval(user_input)  # mycop-ignore:PY-SEC-005,PY-SEC-001

Funciona con estilos de comentario # (Python), // (JavaScript/TypeScript/Go/Java). Coloca el comentario en la misma línea o en la línea superior.

Proveedores de IA

mycop detecta automáticamente los proveedores de IA disponibles en este orden:

  1. Claude CLI — comando claude instalado
  2. API de Anthropic — variable de entorno ANTHROPIC_API_KEY
  3. API de OpenAI — variable de entorno OPENAI_API_KEY
  4. Ollama — servidor local de Ollama ejecutándose en el puerto 11434
  5. Basado en reglas — respaldo sin conexión usando sugerencias de corrección de las reglas

Anula con --ai-provider:

mycop scan . --explain --ai-provider anthropic
mycop fix . --ai-provider ollama

Configuración

Crea un .scanrc.yml (o .mycop.yml) en la raíz de tu proyecto, o ejecuta mycop init para generar uno:

# File patterns to ignore (glob syntax)
ignore:
  - "**/*_test.py"
  - "**/test_*.py"
  - "**/*.test.js"
  - "**/*.spec.ts"
  - "**/node_modules/**"
  - "**/venv/**"

# Minimum severity level: critical, high, medium, low
min_severity: medium

# Minimum severity to cause non-zero exit: critical, high, medium, low
fail_on: high

# AI provider override: claude-cli, anthropic, openai, ollama, none
# ai_provider: anthropic

Los indicadores de la CLI siempre tienen prioridad sobre los valores del archivo de configuración.

Reglas de seguridad

200 reglas integradas (50 Python + 50 JavaScript + 50 Go + 50 Java) que cubren OWASP Top 10, CWE Top 25 y más:

CategoríaPythonJavaScript
Inyección SQL (CWE-89)PY-SEC-001, PY-SEC-042JS-SEC-011
Inyección de comandos (CWE-78)PY-SEC-002, PY-SEC-045, PY-SEC-050JS-SEC-016
Secretos codificados (CWE-798)PY-SEC-003, PY-SEC-034, PY-SEC-043JS-SEC-004, JS-SEC-034
Aleatoriedad insegura (CWE-330)PY-SEC-004JS-SEC-005
Inyección Eval/Exec (CWE-95)PY-SEC-005JS-SEC-002, JS-SEC-049
Recorrido de ruta (CWE-22)PY-SEC-006, PY-SEC-037JS-SEC-006, JS-SEC-037
Deserialización insegura (CWE-502)PY-SEC-007JS-SEC-009
Autenticación faltante (CWE-862)PY-SEC-008—
XSS (CWE-79)PY-SEC-009, PY-SEC-044JS-SEC-001, JS-SEC-010, JS-SEC-041
Inyección de registros (CWE-117)PY-SEC-010—
SSRF (CWE-918)PY-SEC-011JS-SEC-007
XXE (CWE-611)PY-SEC-012JS-SEC-012
Inyección LDAP (CWE-90)PY-SEC-013JS-SEC-015
Inyección de plantillas (CWE-1336)PY-SEC-014JS-SEC-013
Inyección de cabeceras (CWE-113)PY-SEC-015JS-SEC-014
Inyección XPath (CWE-643)PY-SEC-016—
Hash débil MD5/SHA1 (CWE-328)PY-SEC-017, PY-SEC-018JS-SEC-017, JS-SEC-018
Cifrado débil (CWE-327)PY-SEC-019, PY-SEC-020JS-SEC-019, JS-SEC-020, JS-SEC-022
IV codificado (CWE-329)PY-SEC-021—
TLS inseguro (CWE-295)PY-SEC-022JS-SEC-021
Algoritmo JWT None (CWE-345)PY-SEC-023JS-SEC-023
Hash de contraseña débil (CWE-916)PY-SEC-024—
Fijación de sesión (CWE-384)PY-SEC-025JS-SEC-024, JS-SEC-025
Cabeceras de seguridad faltantes (CWE-319)PY-SEC-026JS-SEC-026
Redirección abierta (CWE-601)PY-SEC-027JS-SEC-027
Configuración incorrecta de CORS (CWE-942)PY-SEC-028JS-SEC-028
Asignación masiva (CWE-915)PY-SEC-029JS-SEC-030
IDOR (CWE-639)PY-SEC-030JS-SEC-029
Modo depuración (CWE-215)PY-SEC-031JS-SEC-031
Fuga de información de error (CWE-209)PY-SEC-032JS-SEC-032
Registro de datos sensibles (CWE-532)PY-SEC-033JS-SEC-033
Carga arbitraria de archivos (CWE-434)PY-SEC-035JS-SEC-035
Archivos temporales inseguros (CWE-377)PY-SEC-036—
Zip Slip (CWE-22)PY-SEC-037JS-SEC-037
Transporte no cifrado (CWE-319)PY-SEC-038JS-SEC-038
Contaminación de prototipos (CWE-1321)—JS-SEC-003
Inyección NoSQL (CWE-943)—JS-SEC-008
Ataque de temporización (CWE-208)PY-SEC-046JS-SEC-046
ReDoS (CWE-1333)PY-SEC-047JS-SEC-047
TOCTOU (CWE-367)PY-SEC-048JS-SEC-048
Captura vacía/desnuda (CWE-390)PY-SEC-040JS-SEC-040

Ejecuta mycop rules list para ver las 200 reglas con sus niveles de severidad.

Comparación

¿Cómo se compara mycop con otras herramientas de seguridad?

CaracterísticamycopSemgrepSnyk CodeBanditESLint Security
Enfoque en código IASíNoNoNoNo
Reglas integradas (sin descarga)200Requiere registroBasado en la nube~100 (solo Python)~30 (solo JS)
Corrección automática con IASíNoDe pagoNoNo
MultilenguajePy, JS, TS, Go, Java30+10+Solo PythonSolo JS/TS
Servidor MCPSíNoNoNoNo
Configuración ceroSíNecesita configuración de reglasNecesita configuración del proyectoMínimaNecesita .eslintrc
Salida SARIFSíSíSíSíMediante plugin
PrecioGratis (MIT)Nivel gratuito / De pagoDe pagoGratisGratis

mycop está diseñado específicamente para la era de la codificación con IA. Otras herramientas son escáneres de propósito general que se diseñaron antes de que la generación de código con IA se volviera mainstream.

Formatos de salida

  • Terminal — salida con colores y contexto de código (predeterminado)
  • JSON — JSON estructurado para integración con herramientas
  • SARIF — Formato de Intercambio de Resultados de Análisis Estático para integración con IDE/CI

Integraciones

Servidor MCP (Herramientas agénticas)

mycop incluye un servidor MCP integrado que expone todas las capacidades a herramientas de codificación agénticas. Ejecuta mycop mcp y configura tu herramienta: consulta la sección mycop mcp anterior para obtener instrucciones de configuración.

Clientes compatibles: Claude Code, Cursor, Windsurf, Codex CLI, Gemini CLI y cualquier IDE o agente compatible con MCP.

Disponible en:

  • Glama — Registro MCP gestionado
  • Smithery — Alojamiento y descubrimiento de servidores MCP
  • PulseMCP — Directorio de servidores MCP
  • MCP Servers — Lista comunitaria curada

Acción de GitHub

Añade mycop a tu pipeline de CI con la Acción oficial de GitHub:

- name: mycop Security Scan
  uses: AbdumajidRashidov/mycop/action@main
  with:
    paths: '.'
    fail-on: 'high'
    format: 'sarif'
EntradaPredeterminadoDescripción
paths.Archivos o directorios a escanear
severitySeveridad mínima para reportar
fail-onhighSeveridad mínima para fallar la comprobación
formatterminalFormato de salida (terminal, json, sarif)
versionlatestVersión de mycop a instalar
diff-onlyfalseEscanear solo archivos modificados en el PR

Sube los resultados SARIF a GitHub Code Scanning:

- name: mycop Security Scan
  uses: AbdumajidRashidov/mycop/action@main
  with:
    format: 'sarif'

- name: Upload SARIF
  uses: github/codeql-action/upload-sarif@v3
  with:
    sarif_file: mycop-results.sarif

Gancho de pre-commit

Añade mycop como gancho de pre-commit:

# .pre-commit-config.yaml
repos:
  - repo: https://github.com/AbdumajidRashidov/mycop
    rev: main
    hooks:
      - id: mycop

Extensión de VS Code (Próximamente)

El directorio vscode-extension/ contiene una extensión de VS Code que proporciona:

  • Escaneo en tiempo real al guardar archivos
  • Diagnósticos en el panel de Problemas
  • Comandos "Escanear archivo actual" y "Escanear espacio de trabajo"
  • Umbral de severidad configurable

Consulta vscode-extension/README.md para obtener instrucciones de configuración.

Docker

# Scan current directory
docker run --rm -v "$(pwd):/src" -w /src ghcr.io/abdumajidrashidov/mycop scan .

# Scan with specific options
docker run --rm -v "$(pwd):/src" -w /src ghcr.io/abdumajidrashidov/mycop scan . --format json --severity high

Contribuciones

¡Las contribuciones son bienvenidas! Ya sea un informe de error, una nueva regla de seguridad, una solicitud de función o una solicitud de extracción, agradecemos tu ayuda para mejorar mycop.

Para comenzar:

  1. Haz un fork del repositorio y crea tu rama desde main.
  2. Realiza tus cambios y asegúrate de que todas las comprobaciones pasen:
    cargo fmt --all -- --check
    cargo clippy --all-targets -- -D warnings
    cargo test --verbose
    
  3. Abre una solicitud de extracción con una descripción clara de tus cambios.

Explora problemas abiertos para encontrar algo en lo que trabajar, o abre uno nuevo para sugerir una mejora.

Si encuentras útil mycop, considera patrocinar el proyecto para apoyar el desarrollo continuo.

Historial de estrellas

Star History Chart

Licencia

MIT