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.
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.
¿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 fixreescribe 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:
| Herramienta | Descripción |
|---|---|
scan | Escanea archivos/directorios en busca de vulnerabilidades con filtrado por severidad |
list_rules | Navega/filtra las 200 reglas de seguridad integradas |
explain_finding | Explicación detallada de un hallazgo específico con información CWE/OWASP |
review | Revisión de seguridad profunda con IA de un archivo |
check_deps | Detecta paquetes alucinados en dependencias |
Nota: El comando
mycop fixde la CLI sigue disponible para uso independiente. En modo MCP, el agente lee los hallazgos del escaneo (confix_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:
- Claude CLI — comando
claudeinstalado - API de Anthropic — variable de entorno
ANTHROPIC_API_KEY - API de OpenAI — variable de entorno
OPENAI_API_KEY - Ollama — servidor local de Ollama ejecutándose en el puerto 11434
- 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ía | Python | JavaScript |
|---|---|---|
| Inyección SQL (CWE-89) | PY-SEC-001, PY-SEC-042 | JS-SEC-011 |
| Inyección de comandos (CWE-78) | PY-SEC-002, PY-SEC-045, PY-SEC-050 | JS-SEC-016 |
| Secretos codificados (CWE-798) | PY-SEC-003, PY-SEC-034, PY-SEC-043 | JS-SEC-004, JS-SEC-034 |
| Aleatoriedad insegura (CWE-330) | PY-SEC-004 | JS-SEC-005 |
| Inyección Eval/Exec (CWE-95) | PY-SEC-005 | JS-SEC-002, JS-SEC-049 |
| Recorrido de ruta (CWE-22) | PY-SEC-006, PY-SEC-037 | JS-SEC-006, JS-SEC-037 |
| Deserialización insegura (CWE-502) | PY-SEC-007 | JS-SEC-009 |
| Autenticación faltante (CWE-862) | PY-SEC-008 | — |
| XSS (CWE-79) | PY-SEC-009, PY-SEC-044 | JS-SEC-001, JS-SEC-010, JS-SEC-041 |
| Inyección de registros (CWE-117) | PY-SEC-010 | — |
| SSRF (CWE-918) | PY-SEC-011 | JS-SEC-007 |
| XXE (CWE-611) | PY-SEC-012 | JS-SEC-012 |
| Inyección LDAP (CWE-90) | PY-SEC-013 | JS-SEC-015 |
| Inyección de plantillas (CWE-1336) | PY-SEC-014 | JS-SEC-013 |
| Inyección de cabeceras (CWE-113) | PY-SEC-015 | JS-SEC-014 |
| Inyección XPath (CWE-643) | PY-SEC-016 | — |
| Hash débil MD5/SHA1 (CWE-328) | PY-SEC-017, PY-SEC-018 | JS-SEC-017, JS-SEC-018 |
| Cifrado débil (CWE-327) | PY-SEC-019, PY-SEC-020 | JS-SEC-019, JS-SEC-020, JS-SEC-022 |
| IV codificado (CWE-329) | PY-SEC-021 | — |
| TLS inseguro (CWE-295) | PY-SEC-022 | JS-SEC-021 |
| Algoritmo JWT None (CWE-345) | PY-SEC-023 | JS-SEC-023 |
| Hash de contraseña débil (CWE-916) | PY-SEC-024 | — |
| Fijación de sesión (CWE-384) | PY-SEC-025 | JS-SEC-024, JS-SEC-025 |
| Cabeceras de seguridad faltantes (CWE-319) | PY-SEC-026 | JS-SEC-026 |
| Redirección abierta (CWE-601) | PY-SEC-027 | JS-SEC-027 |
| Configuración incorrecta de CORS (CWE-942) | PY-SEC-028 | JS-SEC-028 |
| Asignación masiva (CWE-915) | PY-SEC-029 | JS-SEC-030 |
| IDOR (CWE-639) | PY-SEC-030 | JS-SEC-029 |
| Modo depuración (CWE-215) | PY-SEC-031 | JS-SEC-031 |
| Fuga de información de error (CWE-209) | PY-SEC-032 | JS-SEC-032 |
| Registro de datos sensibles (CWE-532) | PY-SEC-033 | JS-SEC-033 |
| Carga arbitraria de archivos (CWE-434) | PY-SEC-035 | JS-SEC-035 |
| Archivos temporales inseguros (CWE-377) | PY-SEC-036 | — |
| Zip Slip (CWE-22) | PY-SEC-037 | JS-SEC-037 |
| Transporte no cifrado (CWE-319) | PY-SEC-038 | JS-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-046 | JS-SEC-046 |
| ReDoS (CWE-1333) | PY-SEC-047 | JS-SEC-047 |
| TOCTOU (CWE-367) | PY-SEC-048 | JS-SEC-048 |
| Captura vacía/desnuda (CWE-390) | PY-SEC-040 | JS-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ística | mycop | Semgrep | Snyk Code | Bandit | ESLint Security |
|---|---|---|---|---|---|
| Enfoque en código IA | Sí | No | No | No | No |
| Reglas integradas (sin descarga) | 200 | Requiere registro | Basado en la nube | ~100 (solo Python) | ~30 (solo JS) |
| Corrección automática con IA | Sí | No | De pago | No | No |
| Multilenguaje | Py, JS, TS, Go, Java | 30+ | 10+ | Solo Python | Solo JS/TS |
| Servidor MCP | Sí | No | No | No | No |
| Configuración cero | Sí | Necesita configuración de reglas | Necesita configuración del proyecto | Mínima | Necesita .eslintrc |
| Salida SARIF | Sí | Sí | Sí | Sí | Mediante plugin |
| Precio | Gratis (MIT) | Nivel gratuito / De pago | De pago | Gratis | Gratis |
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'
| Entrada | Predeterminado | Descripción |
|---|---|---|
paths | . | Archivos o directorios a escanear |
severity | Severidad mínima para reportar | |
fail-on | high | Severidad mínima para fallar la comprobación |
format | terminal | Formato de salida (terminal, json, sarif) |
version | latest | Versión de mycop a instalar |
diff-only | false | Escanear 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:
- Haz un fork del repositorio y crea tu rama desde
main. - 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 - 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
Licencia
MIT