
Escáner de detección de paquetes maliciosos en múltiples ecosistemas y seguridad en la cadena de suministro
Detección de Paquetes Maliciosos Multi-Ecosistema y Escáner de Seguridad en la Cadena de Suministro
Una herramienta de seguridad de grado de producción para detectar paquetes maliciosos y amenazas en la cadena de suministro en los ecosistemas npm, PyPI, Maven, RubyGems, Go y Cargo. Aprovecha la recopilación automatizada de inteligencia de amenazas de fuentes de seguridad confiables para identificar dependencias comprometidas en sus proyectos.
OreWatch es el nombre del producto y del paquete de PyPI. La ruta actual del repositorio fuente todavía usa ore-mal-pkg-inspector.
https://github.com/rapticore/ore-mal-pkg-inspector/issues/2#issue-4215016110
https://github.com/rapticore/ore-mal-pkg-inspector/issues/3#issue-4215017945
https://github.com/rapticore/ore-mal-pkg-inspector/issues/4#issue-4215019385
https://github.com/rapticore/ore-mal-pkg-inspector/issues/5#issue-4215021599
Los ataques a la cadena de suministro son ahora el vector de amenaza principal para el compromiso de software. Solo en 2024, se publicaron miles de paquetes maliciosos en npm, PyPI y otros registros de paquetes, dirigidos a desarrolladores mediante typosquatting, confusión de dependencias y campañas de malware sofisticadas como Shai-Hulud.
El desafío: Las organizaciones y desarrolladores necesitan:
La brecha: Las soluciones existentes a menudo son:
OreWatch aborda estos desafíos proporcionando:
Cobertura Integral Multi-Ecosistema: Una sola herramienta para paquetes de npm, PyPI, Maven, RubyGems, Go y Cargo
Inteligencia de Amenazas Automatizada: Recopila y fusiona dinámicamente datos de fuentes de investigación de seguridad confiables
Detección Activa de IoCs: Identifica patrones de ataque Shai-Hulud y otros indicadores de código malicioso más allá de la coincidencia de nombres de paquetes
Listo para CI/CD: Diseñado para una integración perfecta en GitHub Actions, GitLab CI, Jenkins y otras plataformas de automatización
Código Abierto y Transparente: Visibilidad completa en la lógica de detección, fuentes de datos y metodología de escaneo
Soporte Multi-Ecosistema Escanea paquetes de npm, PyPI, Maven, RubyGems, Go y Cargo con detección automática de ecosistema a partir de la estructura del proyecto.
Base de Datos Unificada de Inteligencia de Amenazas Verifica contra bases de datos de paquetes maliciosos recopiladas dinámicamente de fuentes de investigación de seguridad confiables.
Detección Automática de Ecosistema Identifica inteligentemente ecosistemas a partir de la estructura de directorios, nombres de archivos, y puede escanear múltiples ecosistemas en una sola ejecución.
Detección de Indicadores de Compromiso (IoCs) Escanea patrones de ataque Shai-Hulud (variantes original y 2.0), hooks maliciosos, flujos de trabajo sospechosos y archivos de payload conocidos.
Integración con Shai-Hulud Cruza referencia de paquetes npm con la lista completa de paquetes afectados por Shai-Hulud de OreNPMGuard.
Informes JSON Estructurados Genera informes JSON legibles por máquina con metadatos explícitos de datos de amenazas y ubicaciones de archivos al estilo SARIF para los hallazgos.
Formatos de Entrada Flexibles Soporta archivos de dependencias estándar (package.json, requirements.txt, etc.) y listas de paquetes genéricas (texto, JSON, YAML).
Registro Listo para Producción
Niveles de verbosidad configurables con las banderas --verbose y --debug para resolución de problemas y pistas de auditoría.
Seguro y Rápido Operaciones de solo lectura sin modificaciones a su código, optimizado para escanear grandes bases de código de manera eficiente.
vs. Herramientas de Ecosistema Único La mayoría de los escáneres de seguridad se centran en un solo gestor de paquetes. OreWatch proporciona protección unificada en seis ecosistemas principales, esencial para entornos de desarrollo políglotas modernos.
vs. Listas de Amenazas Manuales Las listas estáticas de paquetes maliciosos se vuelven obsoletas rápidamente. Nuestros recolectores automatizados obtienen inteligencia de amenazas fresca diariamente de múltiples fuentes autorizadas.
vs. Detección Solo por Nombre de Paquete Verificar solo los nombres de paquetes pasa por alto ataques sofisticados. La detección de IoCs identifica patrones de código malicioso incluso en paquetes que aún no están en listas negras.
vs. Auditorías de Seguridad Manuales Las revisiones manuales de dependencias consumen tiempo y son propensas a errores. El escaneo automatizado permite la validación continua de seguridad en cada compilación.
vs. Herramientas Comerciales de Caja Negra Las herramientas propietarias carecen de transparencia en la lógica de detección. Como proyecto de código abierto, cada regla de detección y fuente de datos es auditable.
Historia de Origen OreWatch nació del desarrollo de OreNPMGuard, un escáner especializado para ataques Shai-Hulud en npm. Durante ese proyecto, reconocimos la necesidad de una cobertura multi-ecosistema más amplia más allá de npm. En diciembre de 2025, extrajimos y mejoramos las capacidades de detección multi-ecosistema en esta herramienta independiente, manteniendo el enfoque de OreNPMGuard en npm mientras permitimos que OreWatch sirva a la comunidad de desarrolladores más amplia en todos los ecosistemas de paquetes principales.
Si está adoptando OreWatch por primera vez, elija la ruta más pequeña que coincida con su flujo de trabajo:
Secuencia recomendada para la primera ejecución para la mayoría de los desarrolladores:
pip install . o el paquete publicado.orewatch monitor quickstart /ruta/al/proyecto --client <su-cliente>.orewatch monitor status.orewatch monitor menubar para notificaciones y una interfaz de usuario local.Si desea una guía de configuración más corta con comandos para copiar y pegar, use docs/adoption-guide.md.
OreWatch se puede instalar mediante pipx (recomendado), Homebrew (macOS),
pip, o desde código fuente. Todos los métodos producen el comando CLI orewatch.
pipx instala OreWatch en su propio entorno
aislado mientras hace que el comando orewatch esté disponible globalmente. Esta es la
mejor opción para la mayoría de los desarrolladores.```bash
python3.14 -m pip install --user pipx python3.14 -m pipx ensurepath
pipx install --python python3.14 orewatch
orewatch --help
orewatch monitor menubar
Si ya instalaste `orewatch` con pipx y deseas agregar la aplicación de la barra de menú de macOS más tarde, inyecta los enlaces de Cocoa en el mismo entorno de pipx:```bash
pipx inject orewatch pyobjc-framework-Cocoa
Actualización:```bash pipx upgrade orewatch
**Desinstalar:**```bash
pipx uninstall orewatch
Para usuarios de macOS que prefieren instalaciones gestionadas por Homebrew:```bash
brew tap rapticore/tap
brew install rapticore/tap/orewatch
orewatch --help
orewatch monitor menubar
**Actualización:**```bash
brew update && brew upgrade orewatch
Desinstalar:```bash brew uninstall orewatch brew untap rapticore/tap # optional — removes the tap
> **Nota:** La fórmula de Homebrew incluye los bindings de Cocoa requeridos por
> `orewatch monitor menubar`. Si una instalación anterior de Homebrew reporta
> `ModuleNotFoundError: No module named 'AppKit'`, ejecuta
> `brew update && brew reinstall rapticore/tap/orewatch` para que la fórmula reconstruya
> su entorno Python aislado con soporte para la barra de menú.
#### Opción 3 — pip
Usa `pip` para pipelines de CI, imágenes de Docker, o cuando gestiones tus propios
virtualenvs:```bash
# Install into an active Python 3.14 virtualenv or user site
python3.14 -m pip install orewatch
# Pin a version for reproducible CI builds
python3.14 -m pip install orewatch==1.3.0
# If you want the macOS menu bar app on a fresh install, use this instead:
# python3.14 -m pip install 'orewatch[mac-menubar]'
# Verify
orewatch --help
Actualización:```bash python3.14 -m pip install --upgrade orewatch
#### Opción 4 — Verificación de Fuente (Contribuidores)```bash
# Clone the repository
git clone https://github.com/rapticore/ore-mal-pkg-inspector.git
cd ore-mal-pkg-inspector
# Create and activate a Python 3.14 virtual environment (recommended)
python3.14 -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Install in editable mode for development
python -m pip install -e .
# Verify
orewatch --help
Después de instalar con cualquier método, confirme que OreWatch funciona:```bash
orewatch --help
orewatch --list-supported-files
orewatch .
#### Notas de la plataforma
| Plataforma | Fuente de Python | Notas |
|---|---|---|
| **macOS** (Homebrew Python) | `brew install [email protected]` | Recomendado para usuarios de Homebrew |
| **macOS** (pyenv) | `pyenv install 3.14` | Mejor para configuraciones con múltiples versiones |
| **Ubuntu / Debian** | `sudo apt install python3.14` o pyenv | Verifica que tu distribución incluya 3.14+ |
| **Fedora / RHEL** | `sudo dnf install python3.14` o pyenv | — |
| **Windows (WSL)** | pyenv o paquete del sistema | Windows nativo no ha sido probado |
> **Python 3.14 es necesario.** OreWatch utiliza características del lenguaje introducidas en
> Python 3.14. Las versiones anteriores fallarán al importar.
#### Solución de problemas de instalación
| Síntoma | Solución |
|---|---|
| `command not found: orewatch` | Asegúrate de que la ubicación de instalación esté en tu `PATH`. Para pipx: ejecuta `pipx ensurepath` y reinicia tu terminal. |
| `ModuleNotFoundError` al importar | Puede que tengas múltiples versiones de Python. Confirma que el runtime detrás de `orewatch` sea Python 3.14+ y reinstala con el intérprete correspondiente. |
| pipx install falla con errores de resolución | Actualiza pipx: `python3.14 -m pip install --upgrade pipx` |
| Homebrew `orewatch` no encontrado después de instalar | Ejecuta `brew tap rapticore/tap` primero, luego reintenta la instalación. |
| Permiso denegado durante pip install | Usa `pip install --user orewatch` o instala dentro de un virtualenv. |
_Nota: Si los datos de amenazas locales faltan o están desactualizados, los escaneos de paquetes preparan un candidato de actualización en vivo y solo lo promueven después de que las puertas de anomalías pasen. Si el candidato parece sospechoso, OreWatch mantiene activo el último conjunto de datos conocido como bueno._
_CLI instalado:_ `orewatch`
_Alias de compatibilidad:_ `ore-mal-pkg-inspector`
### Primer escaneo
**Escanea un directorio de proyecto:**```bash
# Auto-detect ecosystem and scan current directory
orewatch .
# Scan specific project path
orewatch /path/to/your/project
# With verbose output to see progress
orewatch /path/to/your/project --verbose
Salida esperada:``` Detected multiple ecosystems: npm, pypi Scanning all detected ecosystems...
Scanning npm... Found 2 dependency file(s) for npm Parsing: package.json Parsing: package-lock.json
Scanning pypi... Found 1 dependency file(s) for pypi Parsing: requirements.txt
Extracted 45 unique package(s) across 2 ecosystem(s)
Checking 45 package(s) against malicious databases... Checking 30 npm package(s)... Checking 15 pypi package(s)...
Scanning for Indicators of Compromise...
Generating report...
Ecosystem: npm, pypi Total Packages Scanned: 45 Malicious Packages Found: 0 IoCs Found: 0
✅ No malicious packages or IoCs detected
Si desea que OreWatch siga monitoreando el proyecto después de este primer análisis, continúe con [Monitoreo en Segundo Plano](#background-monitoring) o vaya directamente a [docs/adoption-guide.md](https://github.com/rapticore/ore-mal-pkg-inspector/blob/HEAD/docs/adoption-guide.md).
---
## Uso
### Comandos Básicos
**Escanear Directorio (Detección automática del ecosistema):**```bash
# Current directory
orewatch .
# Specific directory
orewatch /home/user/projects/my-app
# With an absolute path
orewatch /home/user/projects/backend-api
Escanear archivos de dependencias específicos:```bash
orewatch --file package.json orewatch --file requirements.txt orewatch --file pom.xml orewatch --file Gemfile orewatch --file go.mod orewatch --file Cargo.toml
**Forzar Ecosistema Específico:**```bash
# Override auto-detection
orewatch /path/to/project --ecosystem npm
orewatch /path/to/project --ecosystem pypi
orewatch /path/to/project --ecosystem maven
orewatch /path/to/project --ecosystem rubygems
orewatch /path/to/project --ecosystem go
orewatch /path/to/project --ecosystem cargo
Escanear listas de paquetes genéricos:```bash
orewatch --file packages.txt --ecosystem pypi
orewatch --file packages.json --ecosystem npm
orewatch --file packages.yaml --ecosystem npm
### Uso Avanzado
**Ruta de salida personalizada:**```bash
# Save to custom location
orewatch /path/to/project --output /tmp/scan_report.json
# Save to specific subdirectory
orewatch /path/to/project --output reports/security/$(date +%Y%m%d).json
Control de escaneo de IoC:```bash
orewatch /path/to/project
orewatch /path/to/project --no-ioc
orewatch /path/to/project --ioc-only
**Modo Silencioso:**```bash
# Generate report without console summary (useful for scripts)
orewatch /path/to/project --no-summary
Controles de Datos de Amenazas:```bash
orewatch /path/to/project --latest-data
orewatch /path/to/project --strict-data
orewatch /path/to/project --latest-data --include-experimental-sources
orewatch --list-supported-files
**Escaneo por lotes:**```bash
# Scan multiple projects
for dir in ~/projects/*/; do
echo "Scanning $dir"
orewatch "$dir" --output "reports/$(basename $dir).json"
done
El repositorio ahora incluye un monitor en segundo plano local que mantiene los datos de amenazas actualizados, observa los proyectos que han optado por cambios en el manifiesto y el flujo de trabajo, ejecuta escaneos con debounce y registra notificaciones para hallazgos nuevos o escalados. La configuración y el estado propiedad del monitor se almacenan fuera del repositorio en directorios propiedad del usuario, de modo que un repositorio clonado no pueda preconfigurar el comportamiento del monitor.
OreWatch ahora trata al monitor como un singleton por usuario. Un demonio puede observar muchos proyectos en cualquier lugar del disco y atender a múltiples clientes concurrentes de Claude Code, Codex, Cursor, VS Code, JetBrains / PyCharm y Xcode.
1. Instalar e inicializar el monitor singleton```bash
orewatch monitor quickstart /path/to/project --client claude_code
`monitor quickstart` es el flujo recomendado para la primera ejecución. Hace lo siguiente:
- instala o actualiza el servicio monitor singleton
- inicia el monitor si es necesario
- agrega el proyecto de destino a la lista de vigilancia
- imprime el bloque de arranque para el cliente seleccionado
Si prefieres instalar el monitor primero y conectar los clientes después:```bash
orewatch monitor install
orewatch monitor install --ide-bootstrap
orewatch monitor install --service-manager launchd --no-start
2. Verificar que el monitor esté saludable```bash orewatch monitor status orewatch monitor connection-info orewatch monitor doctor
Utilice estos comandos para tareas ligeramente diferentes:
- `monitor status` muestra si el daemon singleton y la API están en ejecución
- `monitor connection-info` imprime la URL del bucle de retorno, la ruta del token, el directorio home del monitor y los clientes bootstrap compatibles
- `monitor doctor` imprime la configuración exacta, la base de datos de estado, los registros y las rutas de datos de amenazas compartidas
**3. Agregue cada proyecto que desee que el singleton supervise**```bash
orewatch monitor watch add /path/to/project-a
orewatch monitor watch add /path/to/project-b
orewatch monitor watch list
orewatch monitor watch remove /path/to/project-b
Un solo demonio de OreWatch puede vigilar todos estos proyectos a la vez. No necesitas un monitor separado por repositorio o por espacio de trabajo del IDE.
OreWatch soporta dos transportes de integración:
Los comandos de arranque imprimen una de estas formas:```json { "mcpServers": { "orewatch": { "command": "/absolute/path/to/orewatch", "args": [ "monitor", "mcp" ] } } }
Cuando `orewatch monitor ide-bootstrap --client <client>` puede resolver el script de consola local, ahora emite esa ruta absoluta en lugar del simple `orewatch`. Si tienes una configuración MCP anterior que aún dice `"command": "orewatch"`, regenérala y reemplaza la antigua entrada.```json
{
"orewatch": {
"baseUrl": "http://127.0.0.1:48736",
"tokenPath": "/path/to/api.token"
}
}
Estos clientes todos usan el mismo puente MCP local:```bash orewatch monitor mcp
Configuración recomendada:
1. Ejecuta `orewatch monitor quickstart /path/to/project --client <cursor|claude_code|codex>` una vez.
2. Copia el bloque MCP impreso en el cliente MCP correspondiente.
3. Abre un proyecto monitoreado en ese cliente.
4. Deja que el cliente llame a OreWatch a través de MCP para:
- `orewatch_health`
- `orewatch_check_dependency_add`
- `orewatch_check_manifest`
- `orewatch_override_dependency_add`
- `orewatch_list_active_findings`
- `orewatch_list_notifications`
Notas:
- `monitor mcp` es un servidor stdio. Si lo inicias manualmente, aparecerá inactivo mientras espera un cliente MCP.
- El puente MCP verifica la API local al inicio y puede iniciar automáticamente el monitor singleton una vez cuando `auto_start_on_client` está habilitado.
- Para un inicio confiable del IDE, instala el monitor de fondo una vez con `monitor install` para que el daemon ya esté disponible antes de que se inicie el puente MCP.
##### VS Code
Las integraciones con VS Code deben usar la API localhost singleton en lugar del puente MCP.
Configuración recomendada:
1. Ejecuta `orewatch monitor quickstart /path/to/project --client vscode`.
2. Copia `baseUrl` y `tokenPath` de `orewatch monitor ide-bootstrap --client vscode`.
3. Conecta esos valores en tu extensión, tarea o ayudante local de VS Code.
4. Llama a la API en los eventos dependency-add, manifest-save y alert-refresh.
Uso recomendado de la API para una integración con VS Code:
- llama a `POST /v1/check/dependency-add` antes de los flujos de instalación/agregar del gestor de paquetes
- llama a `POST /v1/check/manifest` cuando un manifiesto compatible se guarda o se vuelve a verificar explícitamente
- consulta `GET /v1/findings/active` y `GET /v1/notifications` para mostrar detecciones de fondo
##### JetBrains / PyCharm
JetBrains y PyCharm usan el mismo contrato de API localhost que VS Code.
Configuración recomendada:
1. Ejecuta `orewatch monitor quickstart /path/to/project --client jetbrains`.
2. Copia el bloque de API de `orewatch monitor ide-bootstrap --client jetbrains`.
3. Usa el `baseUrl` y `tokenPath` devueltos en un plugin de JetBrains, herramienta externa o ayudante local.
4. Muestra tanto las decisiones de dependencia síncronas como las alertas de fondo almacenadas dentro del IDE.
Uso recomendado de la API para una integración con JetBrains:
- verifica las adiciones de dependencia con `POST /v1/check/dependency-add`
- vuelve a verificar `package.json`, `requirements.txt`, `pyproject.toml`, `pom.xml`, `Gemfile`, `go.mod`, `Cargo.toml` y manifiestos compatibles relacionados con `POST /v1/check/manifest`
- obtén `GET /v1/findings/active` y `GET /v1/notifications` para paneles de alerta persistentes o ventanas de herramientas
##### Xcode
Las integraciones con Xcode también deberían usar la API localhost singleton, pero hay un límite de alcance importante: OreWatch aún no analiza los manifiestos de dependencias nativos de Apple como `Package.resolved`, `Podfile.lock` o `Cartfile`. Hoy, la integración con Xcode es mejor para:
- mostrar hallazgos y notificaciones de fondo en un ayudante, script o aplicación complementaria
- repositorios de varios lenguajes abiertos en Xcode que también contienen manifiestos compatibles como `package.json`, `pyproject.toml` o `Cargo.toml`
- equipos que desean la aplicación de la barra de menú de macOS y las alertas del Centro de Notificaciones mientras trabajan en Xcode
Configuración recomendada:
1. Ejecuta `orewatch monitor quickstart /path/to/project --client xcode`.
2. Copia el bloque de API de `orewatch monitor ide-bootstrap --client xcode`.
3. Usa el `baseUrl` y `tokenPath` devueltos desde un script de fase de compilación, un proceso auxiliar o una integración personalizada de Xcode.
4. Consulta `GET /v1/findings/active` y `GET /v1/notifications` para alertas visibles para el usuario.
5. Si el espacio de trabajo de Xcode contiene manifiestos no Apple compatibles, llama a `POST /v1/check/manifest` para esos archivos como parte de tu flujo de trabajo.
Estado actual de la integración:
- Claude Code, Codex y Cursor: puente MCP de primera clase incluido en este repositorio
- VS Code: contrato de API local documentado, pero aún no se incluye una extensión de primera parte
- JetBrains / PyCharm: contrato de API local documentado, pero aún no se incluye un plugin de primera parte
- Xcode: API local e integración con la barra de menú documentadas, pero aún no hay una extensión de Xcode de primera parte ni analizador de manifiestos nativos de Apple
#### Cuando OreWatch Encuentra Algo
Cuando el monitor de fondo detecta un paquete comprometido o un IoC en un proyecto monitoreado, OreWatch:
- escribe informes JSON y HTML gestionados por el monitor en el directorio `reports/` del monitor singleton
- almacena el hallazgo activo en la base de datos de estado del monitor
- almacena una entrada de notificación con un mensaje accionable
- emite una advertencia en la terminal si las notificaciones de terminal están habilitadas
- en macOS, prefiere la aplicación de la barra de menú singleton como canal de ventana emergente cuando se está ejecutando
- mantiene la alerta más reciente digna de atención fijada en la parte superior del menú desplegable de la barra de menú para una revisión rápida
- de lo contrario, recurre a una notificación de escritorio directa de mejor esfuerzo si las notificaciones de escritorio están habilitadas
- puede enviar una notificación webhook opcional para entornos remotos o sin cabeza
Usa la superficie de revisión CLI incorporada para inspeccionar esas alertas:```bash
orewatch monitor findings
orewatch monitor findings --project /path/to/project --min-severity high
orewatch monitor notifications
orewatch monitor notifications --project /path/to/project
orewatch monitor package-updates
orewatch monitor package-updates --check
El puente de API local y MCP expone los mismos datos para IDEs y agentes:
GET /v1/findings/activeGET /v1/notificationsGET /v1/package-updatesPOST /v1/package-updates/checkorewatch_list_active_findingsorewatch_list_notificationsorewatch_list_package_updatesorewatch_check_package_updatesEsta es la ruta compatible para IDEs, clientes MCP y agentes de codificación para mostrar detecciones en segundo plano después de que el análisis original haya finalizado.
Los avisos de actualización de paquetes son solo de notificación. OreWatch informa sobre versiones más recientes de las dependencias del proyecto vigilado y del propio OreWatch, pero no modifica manifiestos, archivos de bloqueo ni paquetes instalados.
OreWatch ahora incluye una aplicación nativa de la barra de menú de macOS para quienes deseen una interfaz de usuario local visible sin depender únicamente de comandos CLI, sondeo MCP o ventanas emergentes del Centro de Notificaciones de mejor esfuerzo.
Instale los enlaces Cocoa opcionales en el mismo entorno de ejecución que proporciona el comando orewatch. Elija el comando que coincida con su método de instalación:```bash
python3.14 -m pip install 'orewatch[mac-menubar]'
pipx inject orewatch pyobjc-framework-Cocoa
brew install rapticore/tap/orewatch
Luego, inicia la aplicación de la barra de menú:```bash
orewatch monitor menubar
Por defecto, monitor menubar reinicia la aplicación en segundo plano y devuelve el indicador del shell inmediatamente. Use orewatch monitor menubar --foreground solo cuando quiera mantenerlo explícitamente adjunto a la terminal para depuración.
La aplicación de la barra de menú se adjunta al mismo monitor singleton. No inicia una segunda instancia del monitor. Si el monitor no está ya instalado y ejecutándose, la aplicación lo instalará/iniciará en el primer lanzamiento.
Homebrew instala los enlaces Cocoa en el entorno aislado libexec de OreWatch. Si orewatch monitor menubar reporta No module named 'AppKit', actualice la fórmula con brew update && brew reinstall rapticore/tap/orewatch. Para instalaciones con pip, pipx y desde fuente, los enlaces opcionales aún deben agregarse al mismo entorno de Python que proporciona el comando orewatch.
Cuando las notificaciones de escritorio están habilitadas en macOS, el vigilante singleton ahora mantiene viva una aplicación singleton de la barra de menú y la utiliza como superficie emergente principal. Eso evita depender solo de una invocación separada de osascript desde el demonio y le brinda una interfaz de usuario nativa persistente para nuevos hallazgos.
La compilación actual de la barra de menú prioriza los iconos. La antigua abreviatura OW y la redacción anterior del icono de OreWatch deben tratarse como referencias heredadas; la aplicación ahora prefiere el icono de marca incluido y solo recurre a texto compacto o insignias cuando macOS no puede renderizar la imagen o necesita un contador de alertas.
Lo que la aplicación de la barra de menú de macOS le ofrece:
Agregar Carpeta de Trabajo... que inscribe un proyecto en el vigilante singleton y ejecuta un escaneo rápido inicialFlujo recomendado para Mac:
orewatch monitor quickstart /path/to/project --client claude_code una vez.orewatch.orewatch monitor menubar.Para una implementación más fácil, use los documentos enfocados en lugar de leer el README completo de principio a fin:
Orden de adopción recomendado:
monitor quickstart.orewatch monitor findings y orewatch monitor notifications.monitor menubar para que los usuarios obtengan una superficie de revisión persistente y entrega de ventanas emergentes.Comandos operativos comunes:```bash
orewatch monitor start orewatch monitor restart orewatch monitor stop orewatch monitor uninstall
orewatch monitor run
orewatch monitor menubar
orewatch monitor scan-now orewatch monitor scan-now /path/to/project
orewatch monitor findings orewatch monitor notifications
orewatch monitor cleanup orewatch monitor cleanup --keep-backups 5 --staging-max-age-seconds 3600
**Acciones manuales de snapshot y firma:**```bash
# Generate a signing keypair
orewatch monitor snapshot keygen /tmp/ore-keys
# Build and apply local threat-data snapshots
orewatch monitor snapshot build /tmp/ore-snapshot \
--private-key /tmp/ore-keys/snapshot_signing_private.pem \
--public-key /tmp/ore-keys/snapshot_signing_public.pem
orewatch monitor snapshot apply /tmp/ore-snapshot/manifest.json \
--public-key /tmp/ore-keys/snapshot_signing_public.pem
# Publish a hosted snapshot channel
orewatch monitor snapshot publish /tmp/ore-snapshots \
--base-url https://example.com/ore-snapshots \
--channel stable \
--private-key /tmp/ore-keys/snapshot_signing_private.pem \
--public-key /tmp/ore-keys/snapshot_signing_public.pem
Comportamiento del monitor:
~/.config/orewatch/singleton/ y el estado por defecto es ~/.local/state/orewatch/singleton/.~/Library/Application Support/OreWatch/singleton/ y el estado por defecto es ~/Library/Application Support/OreWatch/State/singleton/.threat-data/final-data/.monitor doctor imprime la ruta exacta de config_path, state_db, log_file, final_data_dir y el directorio de plantillas de servicio para el monitor singleton.Superficie de integración local:
127.0.0.1:48736 de forma predeterminada cuando el daemon del monitor está en ejecución.api.token con permisos solo del propietario.127.0.0.1:48736 sin Authorization: Bearer <token> devolverán correctamente 401 Unauthorized.orewatch monitor connection-info en lugar de adivinar rutas, y deben enviar el project_path real en el que están operando dentro de las solicitudes de verificación de dependencias.orewatch_health, orewatch_check_dependency_add, orewatch_check_manifest, orewatch_override_dependency_add, , , y .Configuración opcional de actualización en vivo controlada por anomalías:```yaml live_updates: enabled: true mode: gated bootstrap_from_live: true block_on_core_source_failure: false max_drop_ratio: 0.40 max_drop_absolute: 200 max_removal_ratio: 0.25 max_removal_absolute: 100 warn_growth_ratio: 5.0 warn_growth_absolute: 2000
Comportamiento clave:
- Los candidatos en vivo se construyen primero en un área de preparación; no sobrescriben las bases de datos activas durante la recopilación.
- Las caídas grandes, las regresiones del ecosistema, los ecosistemas vacíos y las eliminaciones masivas bloquean la promoción.
- Las interrupciones de fuentes principales son solo de advertencia por defecto para las actualizaciones en vivo de código abierto; las caídas y eliminaciones a nivel de ecosistema aún bloquean las promociones incorrectas.
- Las anomalías solo de advertencia se registran en el estado y los informes, pero no impiden la promoción.
- Los candidatos rechazados mantienen activo el último conjunto de datos conocido bueno cuando ya existe uno.
- Se permite el arranque inicial desde fuentes en vivo si al menos una fuente principal tiene éxito y el candidato produce datos de ecosistema utilizables.
**Configuración opcional del webhook de notificación:**```yaml
notifications:
desktop: true
terminal: true
webhook_url: https://hooks.example.com/orewatch
webhook_format: generic
webhook_timeout_ms: 5000
webhook_headers:
Authorization: Bearer change-me
Establece webhook_format: slack al apuntar a un webhook entrante de Slack. En ese modo, OreWatch envía un payload simple de text.
El proyecto ahora tiene dos superficies de distribución distintas:
Deben distribuirse por separado.
Mejor opción predeterminada para desarrolladores: publicar el escáner como un paquete Python normal en PyPI y recomendar la instalación con pipx.
Por qué esta es la mejor opción:
pipx proporciona a los desarrolladores una instalación aislada a nivel de usuario sin contaminar los entornos virtuales del proyecto.python3.14 -m pip install orewatch==<version>.Forma de lanzamiento recomendada:
sdist y rueda universal en PyPI.orewatch.ore-mal-pkg-inspector como un alias de compatibilidad temporal.pipx install --python python3.14 orewatch para instalaciones locales de desarrolladores.python3.14 -m pip install orewatch==<version> para CI y automatización fija.Canal secundario disponible: el tap de Homebrew ya está disponible para usuarios de macOS que prefieren instalaciones gestionadas por Brew:```bash brew install rapticore/tap/orewatch
Homebrew sigue siendo una capa de conveniencia sobre la versión publicada en PyPI, no el artefacto de lanzamiento principal.
**Mejor opción para contribuidores:** mantener el flujo actual de checkout de código fuente:```bash
git clone https://github.com/rapticore/ore-mal-pkg-inspector.git
cd ore-mal-pkg-inspector
python3.14 -m venv .venv
source .venv/bin/activate
python -m pip install -e .
Si está implementando OreWatch con Kandji, Jamf Pro, Intune, Munki u otro sistema de distribución de software para macOS, el modelo recomendado es diferente a la ruta del desarrollador pipx.
Realidad actual del producto:
.pkg plano firmado construido alrededor de la rueda publicada de OreWatchModelo de implementación empresarial recomendado:
.pkg firmado que instale el tiempo de ejecución de OreWatch y un shim CLI orewatch establemac-menubar si desea la aplicación nativa de la barra de menú en Macs administradosorewatch monitor quickstart /path/to/project --client <client> o un bootstrap equivalente en contexto de usuarioPor qué esta división es importante:
Forma de paquete recomendada para macOS administrado:
/Library/Application Support/OreWatch/runtime/usr/local/bin/orewatchGuía específica para proveedores:
.pkg).pkg sobre .dmg o .zip para OreWatch porque el tiempo de ejecución no es una aplicación de arrastrar y soltar.pkg como un Paquete e impleméntelo con una Política o Self Service.pkg firmado.pkg real, firmado con un certificado Developer ID Installer, y el paquete debe contener una carga útil.pkg más metadatos de pkg y trate a OreWatch como otro software administrado de macOSPara un manual de implementación más completo, consulte docs/managed-rollout.md.
Las instantáneas de datos de amenazas no deben incluirse dentro del paquete de Python. Cambian en una cadencia diferente y ya son compatibles como artefactos firmados alojados.
Predeterminado de código abierto/comunidad: consuma openssf y osv directamente a través de la ruta de actualización en vivo con compuerta de anomalía.
Predeterminado empresarial: publique instantáneas firmadas versionadas en un alojamiento HTTPS estático y permita que los clientes las actualicen de forma independiente.
Destinos de alojamiento recomendados:
Diseño de instantánea recomendado:
versions/<version>/manifest.jsonversions/<version>/*.dbchannels/stable.jsonModelo de confianza recomendado:
Para un lanzamiento de producción, la configuración más limpia es:
pipxpipPor defecto, el escáner muestra solo advertencias, errores y el resumen final. Para solucionar problemas o realizar un seguimiento detallado del progreso, use las banderas de registro:
Vea mensajes de progreso y estadísticas de recolección:```bash orewatch /path/to/project --verbose
**La salida incluye:**
- Resultados de detección de ecosistema
- Progreso de análisis de archivos
- Conteos de extracción de paquetes
- Detalles de consulta de base de datos
- Progreso de escaneo de IoC
**Ejemplo:**```
INFO: Detected ecosystems: npm, pypi
INFO: Loaded database for npm: 15234 malicious packages
INFO: Loaded database for pypi: 8421 malicious packages
INFO: Extracted 45 packages from 3 files
INFO: Checking 30 npm packages against database...
INFO: Checking 15 pypi packages against database...
INFO: IoC scan complete: 0 indicators found
Vea información detallada de diagnóstico para solucionar problemas:```bash orewatch /path/to/project --debug
**Output includes:**
- Todos los mensajes de nivel INFO
- Rutas de archivo siendo escaneadas
- Detalles de ejecución de consultas SQL
- Cálculos de hash
- Resultados de coincidencia de patrones
- Información de estado interno
**Use cases:**
- Investigar por qué no se detectó un paquete
- Depurar problemas de detección automática de ecosistemas
- Reportar problemas con contexto detallado
- Auditar el comportamiento del escáner
### Logging for Collectors
The threat intelligence collectors also support verbose and debug modes:```bash
cd collectors
# See collection progress
python3 orchestrator.py --verbose
# Debug data source issues
python3 orchestrator.py --debug
Nota: Todos los registros van a stderr, manteniendo stdout limpio para la salida del informe JSON. Esto permite canalizar los resultados del escáner a otras herramientas sin interferencia de mensajes de registro.
Los informes se guardan en el directorio scan-output/ por defecto (o en una ruta personalizada con --output). OreWatch escribe un informe JSON legible por máquina y un informe HTML complementario con estilo con el mismo nombre base. El artefacto JSON incluye metadatos de disponibilidad de datos de amenazas y utiliza objetos physicalLocation estilo SARIF para hallazgos de paquetes, pero no es un documento SARIF 2.1.0 completo.
Example report:```json { "scan_timestamp": "2025-12-31T12:00:00Z", "ecosystem": "npm", "scanned_path": "/path/to/project", "total_packages_scanned": 150, "data_status": "complete", "sources_used": ["openssf", "osv"], "experimental_sources_used": [], "missing_ecosystems": [], "malicious_packages_found": 2, "iocs_found": 3, "malicious_packages": [ { "name": "malicious-pkg", "version": "1.0.0", "severity": "critical", "sources": ["threat-intel-db", "research-community"], "description": "Malicious code executes unauthorized operations", "detected_behaviors": ["malicious_code", "data_exfiltration"] } ], "iocs": [ { "type": "malicious_bundle_js", "path": "node_modules/suspect-pkg/bundle.js", "hash": "46faab8ab153fae6e80e7cca38eab363075bb524edd79e42269217a083628f09", "severity": "CRITICAL", "variant": "original", "description": "Known malicious payload file from Shai-Hulud attack" }, { "type": "malicious_postinstall", "path": "package.json", "pattern": "node bundle.js", "severity": "CRITICAL", "variant": "original", "description": "Malicious postinstall hook executes payload" } ] }
**Campos de datos de amenazas:**
- `data_status`: `complete`, `partial`, `failed` o `not_applicable`
- `sources_used`: fuentes que contribuyeron con datos de amenazas utilizables para los ecosistemas solicitados
- `experimental_sources_used`: fuentes experimentales incluidas en los datos del escaneo
- `missing_ecosystems`: ecosistemas solicitados que no tenían una base de datos de amenazas de paquetes utilizable
- `promotion_decision`: vacío para escaneos de datos existentes, de lo contrario `promoted`, `bootstrapped` o `rejected`
- `kept_last_known_good`: `true` cuando un candidato en vivo fue rechazado pero el conjunto de datos activo anterior permaneció utilizable
- `anomalies`: anomalías de advertencia/bloqueo que surgieron durante un intento de actualización en vivo
### Interpretación de los resultados
**Niveles de severidad:**
- **CRITICAL:** Código malicioso conocido con exploits activos o exfiltración de datos
- **HIGH:** Indicadores sólidos de intención maliciosa o typosquatting
- **MEDIUM:** Patrones sospechosos o posibles vulnerabilidades
- **LOW:** Problemas menores o hallazgos informativos
**Acciones recomendadas:**
1. **Hallazgos críticos/altos:** Eliminar inmediatamente los paquetes afectados e investigar el impacto
2. **Revisar IoCs:** Verificar si se ha ejecutado código malicioso (registros, actividad de red)
3. **Actualizar dependencias:** Reemplazar paquetes maliciosos con alternativas legítimas
4. **Escanear de nuevo:** Verificar la remediación con un escaneo de seguimiento
5. **Reportar:** Considerar reportar a los mantenedores del registro de paquetes
---
## Integración CI/CD
### GitHub Actions
**Escaneo de seguridad básico:**```yaml
name: Security Scan - Malicious Packages
on: [push, pull_request]
jobs:
malicious-package-scan:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.14'
- name: Install OreWatch
run: |
git clone https://github.com/rapticore/ore-mal-pkg-inspector.git scanner
cd scanner
pip install .
- name: Scan for malicious packages
run: |
cd scanner
orewatch ${{ github.workspace }} --latest-data
- name: Upload scan report
uses: actions/upload-artifact@v4
if: always()
with:
name: security-scan-report
path: scanner/scan-output/
Avanzado con fallo en la detección:```yaml - name: Scan and fail on malicious packages run: | cd scanner orewatch ${{ github.workspace }} --latest-data --output report.json
# Check if malicious packages were found
MALICIOUS_COUNT=$(jq '.malicious_packages_found' report.json)
IOC_COUNT=$(jq '.iocs_found' report.json)
if [ "$MALICIOUS_COUNT" -gt 0 ] || [ "$IOC_COUNT" -gt 0 ]; then
echo "🚨 SECURITY ALERT: Malicious packages or IoCs detected!"
echo "Malicious packages: $MALICIOUS_COUNT"
echo "IoCs found: $IOC_COUNT"
exit 1
fi
### GitLab CI```yaml
malicious-package-scan:
image: python:3.14
stage: security
before_script:
- git clone https://github.com/rapticore/ore-mal-pkg-inspector.git scanner
- cd scanner && pip install .
script:
- orewatch $CI_PROJECT_DIR --latest-data --strict-data --output scan-report.json
artifacts:
paths:
- scan-report.json
when: always
allow_failure: false
pipeline { agent any
stages {
stage('Setup Scanner') {
steps {
sh '''
git clone https://github.com/rapticore/ore-mal-pkg-inspector.git scanner
cd scanner
python3.14 -m pip install .
'''
}
}
stage('Security Scan') {
steps {
sh '''
cd scanner
orewatch ${WORKSPACE} --latest-data
'''
}
}
}
post {
always {
archiveArtifacts artifacts: 'scanner/scan-output/*.json', fingerprint: true
}
}
}
### Hook de pre-commit
Añadir a `.git/hooks/pre-commit`:```bash
#!/bin/bash
echo "Running malicious package scan..."
cd /path/to/ore-mal-pkg-inspector
orewatch $PROJECT_DIR --no-summary
if [ $? -ne 0 ]; then
echo "❌ Malicious packages or IoCs detected! Commit blocked."
echo "Review the scan report in scan-output/"
exit 1
fi
echo "✅ Security scan passed"
Síntoma:``` ERROR: No usable threat data available for requested ecosystems: npm
**Causa:** Falló la recolección de datos de amenazas, los metadatos están incompletos o los ecosistemas solicitados aún no tienen bases de datos locales utilizables.
**Solución:**```bash
# Force recollection and require a complete result for the requested ecosystems
orewatch /path/to/project --latest-data --strict-data
Nota: Si esto persiste, verifique la conectividad de red, los permisos del sistema de archivos y si solicitó intencionadamente fuentes experimentales.
Síntoma:``` WARNING: No packages detected in /path/to/project
**Posibles causas y soluciones:**
1. **Directorio incorrecto:** Asegúrate de estar escaneando el directorio correcto del proyecto ```bash
ls /path/to/project # Verify package.json or requirements.txt exists
Síntoma:``` ERROR: Error downloading npm: <urlopen error [Errno -3] Temporary failure in name resolution>
**Soluciones:**
1. **Verificar la conexión a internet:** ```bash
ping google.com
collectors/config.yaml: ```yaml
osv:
timeout: 600 # Increase from default 300
Síntoma:``` ERROR: Error creating directory collectors/raw-data: Permission denied
**Solución:**```bash
# Ensure proper ownership
sudo chown -R $USER:$USER /path/to/ore-mal-pkg-inspector
# Or run from user-writable location
cd ~/
git clone https://github.com/rapticore/ore-mal-pkg-inspector.git
cd ore-mal-pkg-inspector
Síntoma: ~/Library/Application Support/OreWatch (macOS) o
$XDG_STATE_HOME/orewatch (Linux) ha crecido hasta decenas de gigabytes.
Causa (anterior a 1.2.3): Cada promoción de actualización en vivo archivaba una copia completa de las bases de datos de datos de amenazas anteriores (~300 MB) sin retención. Un monitor de larga duración acumulaba una instantánea por ciclo indefinidamente.
Solución: Actualiza a 1.2.3 o posterior. Ahora las copias de seguridad son manifiestos SHA-256 de ~1 KB, la retención predeterminada es de las 30 más recientes, y hay un comando explícito de limpieza disponible:```bash
orewatch monitor cleanup
orewatch monitor cleanup --keep-backups 5 --staging-max-age-seconds 0
#### Falsos Positivos
**Síntoma:** Paquete legítimo marcado como malicioso.
**Pasos:**
1. **Verificar el hallazgo:** Revisar los detalles del informe incluyendo la gravedad y la descripción
2. **Verificar la versión:** La versión marcada puede ser específica: ```bash
orewatch /path/to/project --verbose
Habilitar registro detallado:```bash
orewatch /path/to/project --debug 2> debug.log
cd collectors python3 orchestrator.py --debug 2> collector-debug.log
**Revise los registros:** Consulte `debug.log` para obtener un rastro detallado de ejecución, incluyendo:
- Rutas de archivos escaneadas
- Consultas SQL ejecutadas
- Resultados de coincidencia de patrones
- Trazas de pila de errores
---
## Preguntas frecuentes
### ¿Con qué frecuencia debo actualizar la inteligencia de amenazas?
**Recomendación:**
- **Entornos de producción/CI:** Actualizaciones automáticas diarias
- **Estaciones de trabajo de desarrollo:** Mínimo actualizaciones semanales
- **Después de noticias de seguridad:** Actualización inmediata cuando se anuncien nuevas amenazas
Los paquetes maliciosos se publican continuamente. Las actualizaciones diarias garantizan las protecciones más recientes.
### ¿Cómo actualizo los datos de inteligencia de amenazas?
Ejecute el escáner con la bandera `--latest-data` para forzar una actualización:```bash
orewatch /path/to/project --latest-data
Para actualizaciones automatizadas en CI/CD, programe escaneos periódicos con la bandera --latest-data (por ejemplo, diariamente). Agregue --include-experimental-sources solo si desea explícitamente que los datos derivados de Phylum se incluyan en la reconstrucción.
Nota: Los escaneos por primera vez recopilan datos automáticamente, por lo que las actualizaciones manuales solo son necesarias para actualizar las bases de datos existentes.
Las bases de datos predeterminadas se construyen a partir de las fuentes principales de amenazas del proyecto:
openssfosvEl escáner también puede incluir el conjunto de fuentes experimentales del proyecto:
phylum con --include-experimental-sourcessocketdev está presente en el repositorio como un marcador de posición deshabilitado y no forma parte de la ruta de recopilación predeterminada.
Para detalles técnicos sobre las fuentes de datos, la recopilación y el procesamiento, consulte ARCHITECTURE.md.
No. OreWatch realiza operaciones de solo lectura. Puede:
Nunca:
Pasos a seguir:
Parcialmente.
Escaneo sin conexión: ✅ Sí, una vez que las bases de datos estén inicializadas```bash
orewatch /path/to/project
orewatch /path/to/project
**Actualizaciones sin conexión:** ❌ No, la recopilación de inteligencia de amenazas requiere acceso a internet para obtenerla de fuentes de seguridad.
**Entornos aislados:** Puedes:
1. Descargar bases de datos en una máquina con conexión a internet
2. Transferir los archivos SQLite al directorio singleton `final_data_dir` mostrado por `orewatch monitor doctor`
3. Ejecutar escaneos sin conexión con datos potencialmente desactualizados
### ¿Cómo se compara esto con npm audit o pip-audit?
**Propósitos diferentes:**
**npm audit / pip-audit:**
- Se centran en vulnerabilidades CVE conocidas
- Verifican versiones de paquetes contra bases de datos de avisos
- Mantenidos por los equipos de los registros de paquetes
**OreWatch:**
- Se centra en paquetes maliciosos (no solo vulnerables)
- Detecta typosquatting, malware, ataques a la cadena de suministro
- Cobertura entre ecosistemas
- Detección de IoC para amenazas activas
**Mejor práctica:** Usa **ambos**:```bash
# Check for vulnerabilities
npm audit
pip-audit
# Check for malicious packages
orewatch /path/to/project
Escaneo de dependencias: ✅ Sí, el escáner lee tus archivos de dependencia sin importar de dónde provengan los paquetes.
Inteligencia de amenazas: ⚠️ Limitada. Nuestras bases de datos cubren registros públicos (npmjs.com, pypi.org, etc.). Los paquetes maliciosos en registros privados no se detectarán a menos que añadas datos de amenazas personalizados.
Datos de amenazas personalizados: Puedes ampliar las bases de datos con tus propias listas de paquetes maliciosos. Contáctanos para obtener orientación sobre este caso de uso avanzado.
Tiempo de escaneo:
Factores:
--no-ioc si no es necesario)Consejos de optimización:```bash
orewatch --file package.json
---
## Contribuciones
¡Agradecemos las contribuciones! Ya sea que reportes errores, sugieras funciones o contribuyas con código, tu ayuda mejora OreWatch para todos.
**Reportar errores o solicitar funciones:**
- GitHub Issues: https://github.com/rapticore/ore-mal-pkg-inspector/issues
**Contribuir código:**
- Consulta [CONTRIBUTING.md](https://github.com/rapticore/ore-mal-pkg-inspector/blob/HEAD/CONTRIBUTING.md) para obtener pautas detalladas sobre configuración de desarrollo, estilo de código, pruebas y proceso de solicitudes de extracción (pull requests).
**Preguntas o discusiones:**
- GitHub Discussions: https://github.com/rapticore/ore-mal-pkg-inspector/discussions
---
## Política de Seguridad
La seguridad es nuestra máxima prioridad. OreWatch es una herramienta de seguridad y nos tomamos las vulnerabilidades muy en serio.
### Reportar Vulnerabilidades de Seguridad
**NO abras issues públicos de GitHub por vulnerabilidades de seguridad.**
En su lugar, reporta de forma privada:
**Correo electrónico:** [email protected]
**Incluye:**
- Descripción de la vulnerabilidad
- Pasos para reproducir
- Impacto potencial
- Corrección sugerida (si aplica)
- Tu información de contacto para seguimiento
### Cronograma de Respuesta
- **Acuse de recibo:** Dentro de 48 horas
- **Evaluación inicial:** Dentro de 7 días
- **Cronograma de corrección:** Varía según la gravedad
- Crítica: 7-14 días
- Alta: 14-30 días
- Media/Baja: 30-60 días
### Buenas Prácticas de Seguridad
Al usar OreWatch:
**Sí:**
- ✅ Ejecuta con el menor privilegio (no requiere root/admin)
- ✅ Actualiza la inteligencia de amenazas regularmente
- ✅ Revisa los informes de escaneo rápidamente
- ✅ Integra en CI/CD para protección continua
- ✅ Mantén la herramienta actualizada a la última versión
**No:**
- ❌ Ignorar hallazgos de escaneo sin investigación
- ❌ Deshabilitar el escaneo de IoC en entornos de producción
- ❌ Compartir archivos de base de datos de fuentes no confiables
- ❌ Ejecutar con privilegios elevados innecesariamente
### Divulgación de Vulnerabilidades
Seguimos una divulgación coordinada:
1. La vulnerabilidad se reporta de forma privada
2. Se desarrolla y prueba la corrección
3. Se publica un aviso de seguridad
4. Divulgación pública después de que la corrección esté disponible
### Salón de la Fama de Seguridad
Reconocemos a los investigadores de seguridad que divulgan responsablemente vulnerabilidades:
*La lista se mantendrá a medida que se reciban reportes*
---
### Solicitudes de la Comunidad
Vota o sugiere funciones:
- **GitHub Discussions:** https://github.com/rapticore/ore-mal-pkg-inspector/discussions
- **Feature Requests:** https://github.com/rapticore/ore-mal-pkg-inspector/issues
### Contribuir a la Hoja de Ruta
Priorizamos funciones basándonos en:
- Impacto en seguridad
- Demanda de la comunidad
- Sostenibilidad del mantenimiento
- Alineación con los objetivos del proyecto
Para influir en la hoja de ruta:
1. Abre una solicitud de función con un caso de uso detallado
2. Participa en discusiones
3. Contribuye con implementaciones (¡PRs bienvenidos!)
---
## Hoja de Ruta
OreWatch es utilizable hoy para:
- escaneos CLI locales en npm, PyPI, Maven, RubyGems, Go y Cargo
- un monitor en segundo plano por usuario para muchos proyectos
- integraciones MCP para Cursor, Claude Code y Codex
- integraciones API localhost para ayudantes de VS Code, JetBrains / PyCharm y Xcode
- revisión de la barra de menú de macOS y notificaciones emergentes
Prioridades a corto plazo:
- ejemplos de integración de primera parte o plugins ligeros para VS Code y JetBrains / PyCharm
- flujos de trabajo de notificaciones más sólidos para el usuario más allá de las ventanas emergentes locales
- gestión de políticas de proyecto más clara desde CLI y UI
- informes de monitoreo más completos y documentación de adopción
Prioridades a medio plazo:
- flujos de trabajo de escaneo de proyectos más amplios desde el monitor y la superficie MCP
- mejor guía de implementación a nivel de organización
- canales de entrega de alertas externas y escalado más robustos
- UX más profunda específica del IDE en lugar de guía de integración solo API
Límite actual conocido:
- La integración con Xcode es actualmente la mejor para visibilidad de alertas y repositorios con múltiples lenguajes. OreWatch aún no analiza manifiestos nativos de Apple como `Package.resolved`, `Podfile.lock` o `Cartfile`.
Dirección a largo plazo:
- soporte de manifiestos nativos del ecosistema Apple
- integraciones de editores de primera parte más sólidas
- paridad de UX de sistema operativo más amplia más allá de la ruta actual de la barra de menú de macOS
Consulta [docs/roadmap.md](https://github.com/rapticore/ore-mal-pkg-inspector/blob/HEAD/docs/roadmap.md) para la vista de hoja de ruta más centrada en la adopción.
---
## Licencia
Licencia MIT
Copyright (c) 2025 Rapticore
Por la presente se concede permiso, libre de cargos, a cualquier persona que obtenga una copia de este software y de los archivos de documentación asociados (el "Software"), para tratar el Software sin restricción, incluyendo sin limitación los derechos de uso, copia, modificación, fusión, publicación, distribución, sublicencia, y/o venta de copias del Software, y para permitir a las personas a las que se les proporcione el Software hacer lo mismo, sujeto a las siguientes condiciones:
El aviso de copyright anterior y este aviso de permiso deberán incluirse en todas las copias o partes sustanciales del Software.
EL SOFTWARE SE PROPORCIONA "TAL CUAL", SIN GARANTÍA DE NINGÚN TIPO, EXPRESA O IMPLÍCITA, INCLUYENDO PERO NO LIMITADO A LAS GARANTÍAS DE COMERCIABILIDAD, IDONEIDAD PARA UN PROPÓSITO PARTICULAR Y NO INFRACCIÓN. EN NINGÚN CASO LOS AUTORES O TITULARES DEL COPYRIGHT SERÁN RESPONSABLES POR CUALQUIER RECLAMO, DAÑOS U OTRA RESPONSABILIDAD, YA SEA EN UNA ACCIÓN DE CONTRATO, AGRAVIO O CUALQUIER OTRO MOTIVO, QUE SURJA DE O EN CONEXIÓN CON EL SOFTWARE O EL USO U OTRO TIPO DE ACCIONES EN EL SOFTWARE.
---
## Soporte
### Obtener Ayuda
**Documentación:** ¡La estás leyendo! Comienza aquí para la mayoría de las preguntas.
**Discusiones de GitHub:** Para preguntas, ideas e interacción comunitaria:
- https://github.com/rapticore/ore-mal-pkg-inspector/discussions
**Issues de GitHub:** Para reportes de errores y solicitudes de funciones:
- https://github.com/rapticore/ore-mal-pkg-inspector/issues
**Correo electrónico:** Para vulnerabilidades de seguridad y consultas privadas:
- [email protected]
### Soporte Profesional
Para organizaciones que requieren:
- Integraciones personalizadas
- Soporte con SLA
- Asistencia para despliegue privado
- Fuentes de inteligencia de amenazas personalizadas
Contacto: [email protected]
---
## Agradecimientos
### Origen del Proyecto
Este proyecto fue extraído del repositorio [OreNPMGuard](https://github.com/rapticore/OreNPMGuard) para mantener un enfoque claro del proyecto mientras se expanden las capacidades.
**OreNPMGuard** (diciembre de 2025) se especializa en la detección de ataques Shai-Hulud npm con más de 738 paquetes afectados y análisis profundo de IoC. Durante su desarrollo, reconocimos la necesidad de una protección más amplia en múltiples ecosistemas, lo que llevó a la creación de OreWatch como una herramienta independiente que sirve a la comunidad de desarrolladores en todos los ecosistemas de paquetes principales.
### Proyectos Relacionados
- **[OreNPMGuard](https://github.com/rapticore/OreNPMGuard)** - Escáner especializado Shai-Hulud npm
---
**Construido por el Equipo de Investigación de Seguridad de Rapticore**
*Protegiendo las cadenas de suministro de software, un escaneo a la vez.*
| Quiero... | Use esta ruta | Comience con |
|---|
| escanear un repositorio ahora mismo | escaneo CLI | orewatch /ruta/al/proyecto |
| proteger el desarrollo local en segundo plano | monitor singleton | orewatch monitor quickstart /ruta/al/proyecto --client claude_code |
| usar OreWatch desde Cursor, Claude Code o Codex | puente MCP | orewatch monitor quickstart /ruta/al/proyecto --client <cursor|claude_code|codex> |
| integrar con VS Code, PyCharm o Xcode | API localhost | orewatch monitor quickstart /ruta/al/proyecto --client vscode |
| obtener alertas visibles de macOS y una superficie de revisión nativa | aplicación de barra de menú | orewatch monitor menubar |
| validar compilaciones en CI | escaneo CLI único | orewatch . --strict-data |
| Opción | Corto | Descripción | Valor por defecto |
|---|
--file | -f | Ruta a un archivo específico para escanear (omite la detección de directorios) | Ninguno |
--ecosystem | -e | Forzar ecosistema: npm, pypi, maven, rubygems, go, cargo | Detección automática |
--output | -o | Ruta de salida personalizada para el informe JSON principal; OreWatch también escribe un informe HTML hermano | scan-output/malicious_packages_report_{timestamp}.json |
--no-summary | Omitir la impresión del resumen del informe en la consola | Falso | |
--no-ioc | Omitir el escaneo de IoC (Indicadores de Compromiso) | Falso | |
--ioc-only | Escaneo solo de IoCs, omitir verificación de paquetes | Falso | |
--latest-data | Forzar una actualización en vivo escalonada y una promoción con compuerta de anomalías antes del escaneo | Falso | |
--strict-data | Fallar si algún ecosistema solicitado tiene datos de amenazas parciales o faltantes | Falso | |
--include-experimental-sources | Incluir recolectores experimentales durante la actualización de datos de amenazas | Falso | |
--list-supported-files | Imprimir los nombres de archivo exactos de manifiesto de dependencias compatibles y salir | Falso | |
--verbose | -v | Mostrar registros de nivel INFO (mensajes de progreso) | Falso |
--debug | Mostrar registros de nivel DEBUG (diagnósticos detallados) | Falso |
| Cliente | Transporte | Comando de arranque | Notas |
|---|
| Claude Code | MCP | orewatch monitor ide-bootstrap --client claude_code | Puente MCP de primera clase |
| Codex | MCP | orewatch monitor ide-bootstrap --client codex | Puente MCP de primera clase |
| Cursor | MCP | orewatch monitor ide-bootstrap --client cursor | Puente MCP de primera clase |
| VS Code | Local API | orewatch monitor ide-bootstrap --client vscode | Sin extensión incluida; usa la API de localhost |
| JetBrains / PyCharm | Local API | orewatch monitor ide-bootstrap --client jetbrains | Sin plugin incluido; usa la API de localhost |
| Xcode | Local API | orewatch monitor ide-bootstrap --client xcode | Ideal para hallazgos/notificaciones y repositorios de múltiples lenguajes |
.ore-monitor.ymlmonitor install ahora instala un servicio launchd o systemd a nivel de usuario cuando está disponible, y en caso contrario recurre al modo de fondo local.monitor quickstart /path/to/project --client claude_code es el flujo de primera ejecución más sencillo para la configuración de un agente LLM local.--workspace-root /path/to/workspace todavía se acepta durante una versión como un alias de compatibilidad obsoleto, pero ya no cambia la identidad del monitor, la ubicación del token ni la denominación del servicio.auto, si falla la configuración nativa de launchd o systemd, OreWatch ahora recurre al modo de fondo local en lugar de abortar la configuración.monitor install --ide-bootstrap imprime fragmentos de bootstrap para copiar y pegar para Claude Code, Codex, Cursor, VS Code, JetBrains / PyCharm, y Xcode.monitor connection-info imprime la URL base de la API de loopback, la ruta del token, el ámbito/inicio del monitor singleton, y si el daemon ya está en ejecución.monitor ide-bootstrap imprime nuevamente los fragmentos de bootstrap MCP/API actuales sin reinstalar nada.monitor mcp ejecuta un puente MCP local que expone las comprobaciones de dependencias de OreWatch a Claude Code, Codex y Cursor.monitor findings, monitor notifications y monitor package-updates proporcionan la superficie de revisión integrada para detecciones en segundo plano y avisos de actualización.monitor menubar inicia una aplicación nativa de la barra de menús de macOS respaldada por el monitor singleton y el almacén de hallazgos.monitor mcp es un servidor stdio, por lo que esperará un cliente MCP después del inicio. Ahora escribe el estado de preparación y auto-inicio en stderr, no en stdout.monitor install para que el daemon en segundo plano ya esté disponible cuando el cliente lance monitor mcp o llame a la API.make test-e2e-clients inicia el espacio de trabajo sintético y ejecuta la matriz de clientes MCP/API entre ecosistemas para Claude Code, Codex y Cursor.openssf y osv). Los datos candidatos se almacenan provisionalmente en el directorio de estado del monitor propiedad del usuario, se verifican en busca de eliminaciones/retiros anormales, y solo entonces se promueven a las bases de datos activas.snapshots.channel_url o snapshots.manifest_url, y el monitor los verifica con snapshots.public_key_path.openssl en la máquina local.orewatch_list_active_findingsorewatch_list_notificationsorewatch_list_package_updatesorewatch_check_package_updates