
Détection de paquets malveillants multi-écosystème et scanner de sécurité de la chaîne d'approvisionnement
Détection de paquets malveillants multi-écosystèmes et scanner de sécurité de la chaîne d'approvisionnement
Un outil de sécurité de niveau production pour détecter les paquets malveillants et les menaces de la chaîne d'approvisionnement dans les écosystèmes npm, PyPI, Maven, RubyGems, Go et Cargo. Il exploite la collecte automatisée de renseignements sur les menaces provenant de sources de sécurité fiables pour identifier les dépendances compromises dans vos projets.
OreWatch est le nom du produit et du paquet PyPI. Le chemin actuel du dépôt source utilise encore ore-mal-pkg-inspector.
https://github.com/rapticore/ore-mal-pkg-inspector/issues/2#issue-4215016110
Les attaques sur la chaîne d'approvisionnement sont désormais le principal vecteur de menace pour les compromissions logicielles. Rien qu'en 2024, des milliers de paquets malveillants ont été publiés sur npm, PyPI et d'autres registres de paquets, ciblant les développeurs avec du typosquattage, de la confusion de dépendances et des campagnes de malwares sophistiquées comme Shai-Hulud.
Le défi : Les organisations et les développeurs doivent :
La lacune : Les solutions existantes sont souvent :
OreWatch répond à ces défis en fournissant :
Couverture multi-écosystèmes complète : Un outil unique pour les paquets npm, PyPI, Maven, RubyGems, Go et Cargo
Renseignements automatisés sur les menaces : Collecte et fusionne dynamiquement les données provenant de sources de recherche en sécurité fiables
Détection active d'IoC : Identifie les motifs d'attaque Shai-Hulud et d'autres indicateurs de code malveillant au-delà de la simple correspondance de noms de paquets
Prêt pour CI/CD : Conçu pour une intégration transparente dans GitHub Actions, GitLab CI, Jenkins et autres plateformes d'automatisation
Open Source et transparent : Visibilité complète sur la logique de détection, les sources de données et la méthodologie d'analyse
Support multi-écosystèmes Analyse les paquets npm, PyPI, Maven, RubyGems, Go et Cargo avec une détection automatique de l'écosystème à partir de la structure du projet.
Base de données unifiée de renseignements sur les menaces Vérifie par rapport aux bases de données de paquets malveillants collectées dynamiquement à partir de sources de recherche en sécurité fiables.
Détection automatique de l'écosystème Identifie intelligemment les écosystèmes à partir de la structure des répertoires, des noms de fichiers, et peut analyser plusieurs écosystèmes en une seule exécution.
Détection des indicateurs de compromission (IoC) Analyse les motifs d'attaque Shai-Hulud (variantes originales et 2.0), les hooks malveillants, les workflows suspects et les fichiers de payload connus.
Intégration Shai-Hulud Recoupe les paquets npm avec la liste complète des paquets affectés par Shai-Hulud provenant d'OreNPMGuard.
Rapports JSON structurés Génère des rapports JSON lisibles par machine avec des métadonnées explicites sur les données de menace et des emplacements de fichiers de type SARIF pour les résultats.
Formats d'entrée flexibles Prend en charge les fichiers de dépendances standards (package.json, requirements.txt, etc.) et les listes de paquets génériques (texte, JSON, YAML).
Journalisation prête pour la production
Niveaux de verbosité configurables avec les options --verbose et --debug pour le dépannage et les pistes d'audit.
Sûr et rapide Opérations en lecture seule sans modification de votre code, optimisé pour l'analyse rapide de grandes bases de code.
vs. outils mono-écosystème La plupart des scanners de sécurité se concentrent sur un seul gestionnaire de paquets. OreWatch offre une protection unifiée sur six écosystèmes majeurs, essentielle pour les environnements de développement polyglottes modernes.
vs. listes de menaces manuelles Les listes de paquets malveillants statiques deviennent rapidement obsolètes. Nos collecteurs automatisés récupèrent quotidiennement des renseignements actualisés sur les menaces provenant de plusieurs sources faisant autorité.
vs. détection par nom de paquet uniquement Vérifier uniquement les noms de paquets ne permet pas de détecter les attaques sophistiquées. La détection d'IoC identifie les motifs de code malveillant même dans les paquets pas encore sur les listes noires.
vs. audits de sécurité manuels Les révisions manuelles des dépendances sont chronophages et sujettes aux erreurs. L'analyse automatisée permet une validation continue de la sécurité dans chaque build.
vs. outils commerciaux en boîte noire Les outils propriétaires manquent de transparence dans la logique de détection. En tant que projet open source, chaque règle de détection et source de données est vérifiable.
Histoire d'origine OreWatch est né du développement d'OreNPMGuard, un scanner spécialisé pour les attaques Shai-Hulud sur npm. Au cours de ce projet, nous avons reconnu le besoin d'une couverture multi-écosystèmes plus large au-delà de npm. En décembre 2025, nous avons extrait et amélioré les capacités de détection multi-écosystèmes dans cet outil autonome, tout en maintenant l'accent d'OreNPMGuard sur npm tout en permettant à OreWatch de servir la communauté plus large des développeurs sur tous les principaux écosystèmes de paquets.
Si vous adoptez OreWatch pour la première fois, choisissez le chemin le plus petit qui correspond à votre flux de travail :
| Je veux... | Utilisez ce chemin | Commencez par |
|---|---|---|
| analyser un dépôt maintenant | CLI scan | orewatch /path/to/project |
| protéger le développement local en arrière-plan | moniteur singleton | orewatch monitor quickstart /path/to/project --client claude_code |
| utiliser OreWatch depuis Cursor, Claude Code ou Codex | pont MCP | orewatch monitor quickstart /path/to/project --client <cursor|claude_code|codex> |
| intégrer avec VS Code, PyCharm ou Xcode | API localhost | orewatch monitor quickstart /path/to/project --client vscode |
| obtenir des alertes macOS visibles et une interface de révision native | application barre de menus | orewatch monitor menubar |
| valider les builds dans CI | CLI scan ponctuel | orewatch . --strict-data |
Séquence recommandée pour une première exécution pour la plupart des développeurs :
pip install . ou le paquet publié.orewatch monitor quickstart /path/to/project --client <votre-client>.orewatch monitor status.orewatch monitor menubar pour les notifications et une interface locale.Si vous souhaitez un guide d'installation plus court avec des commandes copiables, utilisez docs/adoption-guide.md.
OreWatch peut être installé via pipx (recommandé), Homebrew (macOS),
pip, ou depuis les sources. Toutes les méthodes produisent la commande CLI orewatch.
pipx installe OreWatch dans son propre environnement isolé
tout en rendant la commande orewatch disponible globalement. C'est la
meilleure option pour la plupart des développeurs.```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 vous avez déjà installé `orewatch` avec pipx et souhaitez ajouter plus tard l'application de la barre de menus macOS, injectez les liaisons Cocoa dans le même environnement pipx :```bash
pipx inject orewatch pyobjc-framework-Cocoa
Mise à niveau :```bash pipx upgrade orewatch
**Désinstallation:**```bash
pipx uninstall orewatch
Pour les utilisateurs de macOS qui préfèrent les installations gérées par Homebrew :```bash
brew tap rapticore/tap
brew install rapticore/tap/orewatch
orewatch --help
orewatch monitor menubar
**Mise à niveau:**```bash
brew update && brew upgrade orewatch
Désinstallation :```bash brew uninstall orewatch brew untap rapticore/tap # optional — removes the tap
> **Remarque :** Le Homebrew formulaire inclut les liaisons Cocoa requises par
> `orewatch monitor menubar`. Si une ancienne installation Homebrew signale
> `ModuleNotFoundError: No module named 'AppKit'`, exécutez
> `brew update && brew reinstall rapticore/tap/orewatch` pour que le formulaire reconstruise
> son environnement Python isolé avec la prise en charge de la barre de menus.
#### Option 3 — pip
Utilisez `pip` pour les pipelines CI, les images Docker, ou lorsque vous gérez vos propres
environnements virtuels :```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
Mise à niveau:```bash python3.14 -m pip install --upgrade orewatch
#### Option 4 — Source Checkout (Contributeurs)```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
Après avoir installé avec n'importe quelle méthode, confirmez qu'OreWatch fonctionne :```bash
orewatch --help
orewatch --list-supported-files
orewatch .
#### Notes sur les plateformes
| Plateforme | Source Python | Remarques |
|---|---|---|
| **macOS** (Homebrew Python) | `brew install [email protected]` | Recommandé pour les utilisateurs de Homebrew |
| **macOS** (pyenv) | `pyenv install 3.14` | Idéal pour les configurations multi-versions |
| **Ubuntu / Debian** | `sudo apt install python3.14` ou pyenv | Vérifiez que votre distribution fournit 3.14+ |
| **Fedora / RHEL** | `sudo dnf install python3.14` ou pyenv | — |
| **Windows (WSL)** | pyenv ou paquet système | Windows natif non testé |
> **Python 3.14 est requis.** OreWatch utilise des fonctionnalités de langage introduites dans
> Python 3.14. Les versions plus anciennes échoueront au moment de l'importation.
#### Dépannage de l'installation
| Symptôme | Correctif |
|---|---|
| `command not found: orewatch` | Assurez-vous que le répertoire d'installation est dans votre `PATH`. Pour pipx : exécutez `pipx ensurepath` et redémarrez votre shell. |
| `ModuleNotFoundError` à l'import | Vous avez peut-être plusieurs versions de Python. Vérifiez que l'environnement d'exécution derrière `orewatch` est Python 3.14+ et réinstallez avec l'interpréteur correspondant. |
| L'installation pipx échoue avec des erreurs de résolveur | Mettez à niveau pipx : `python3.14 -m pip install --upgrade pipx` |
| Homebrew `orewatch` introuvable après installation | Exécutez d'abord `brew tap rapticore/tap`, puis réessayez l'installation. |
| Permission refusée lors de l'installation pip | Utilisez `pip install --user orewatch` ou installez dans un environnement virtuel. |
_Remarque : Si les données de menace locales sont manquantes ou obsolètes, les analyses de paquets préparent un candidat de mise à jour en direct et ne le promeuvent qu'après le passage des portes d'anomalie. Si le candidat semble suspect, OreWatch conserve le dernier jeu de données connu comme bon actif._
_CLI installée :_ `orewatch`
_Alias de compatibilité :_ `ore-mal-pkg-inspector`
### Premier scan
**Scannez un répertoire de projet :**```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
Sortie attendue :``` 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 vous souhaitez qu'OreWatch continue de surveiller le projet après cette première analyse, poursuivez avec [Surveillance en arrière-plan](#background-monitoring) ou allez directement à [docs/adoption-guide.md](https://github.com/rapticore/ore-mal-pkg-inspector/blob/main/docs/adoption-guide.md).
---
## Utilisation
### Commandes de base
**Analyser un répertoire (Détection automatique de l'écosystème) :**```bash
# Current directory
orewatch .
# Specific directory
orewatch /home/user/projects/my-app
# With an absolute path
orewatch /home/user/projects/backend-api
Analyser des fichiers de dépendances spécifiques :```bash
orewatch --file package.json orewatch --file requirements.txt orewatch --file pom.xml orewatch --file Gemfile orewatch --file go.mod orewatch --file Cargo.toml
**Forcer un écosystème spécifique :**```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
Analyser les listes génériques de paquets :```bash
orewatch --file packages.txt --ecosystem pypi
orewatch --file packages.json --ecosystem npm
orewatch --file packages.yaml --ecosystem npm
### Utilisation avancée
**Chemin de sortie personnalisé :**```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
Contrôle du scan IoC :```bash
orewatch /path/to/project
orewatch /path/to/project --no-ioc
orewatch /path/to/project --ioc-only
**Mode silencieux :**```bash
# Generate report without console summary (useful for scripts)
orewatch /path/to/project --no-summary
Contrôles des données de menaces:```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
**Analyse par lots :**```bash
# Scan multiple projects
for dir in ~/projects/*/; do
echo "Scanning $dir"
orewatch "$dir" --output "reports/$(basename $dir).json"
done
| Option | Court | Description | Valeur par défaut |
|---|---|---|---|
--file | -f | Chemin vers un fichier spécifique à analyser (ignore la détection de répertoire) | Aucun |
--ecosystem | -e | Forcer l'écosystème : npm, pypi, maven, rubygems, go, cargo | Détection automatique |
--output | -o | Chemin de sortie personnalisé pour le rapport JSON principal ; OreWatch écrit également un rapport HTML frère | scan-output/malicious_packages_report_{timestamp}.json |
--no-summary | Ne pas afficher le résumé du rapport dans la console | False | |
--no-ioc | Ignorer l'analyse des IoC (Indicateurs de compromission) | False | |
--ioc-only | Analyser uniquement les IoC, ignorer la vérification des paquets | False | |
--latest-data | Forcer une actualisation en direct par étapes et une promotion filtrée par anomalies avant l'analyse | False | |
--strict-data | Échouer si un écosystème demandé possède des données de menace partielles ou manquantes | False | |
--include-experimental-sources | Inclure les collecteurs expérimentaux lors de l'actualisation des données de menace | False | |
--list-supported-files | Afficher les noms exacts des fichiers manifestes de dépendances pris en charge et quitter | False | |
--verbose | -v | Afficher les journaux de niveau INFO (messages de progression) | False |
--debug | Afficher les journaux de niveau DEBUG (diagnostics détaillés) | False |
Le dépôt inclut désormais un moniteur d'arrière-plan local qui maintient les données de menace à jour, surveille les projets opt-in pour les modifications de manifestes et de workflows, exécute des analyses différées et enregistre des notifications pour les résultats nouveaux ou aggravés. La configuration et l'état appartenant au moniteur sont stockés en dehors du dépôt, dans des répertoires appartenant à l'utilisateur, de sorte qu'un dépôt cloné ne peut pas préinitialiser le comportement du moniteur.
OreWatch traite désormais le moniteur comme un singleton par utilisateur. Un seul démon peut surveiller de nombreux projets n'importe où sur le disque et servir de nombreux clients Claude Code, Codex, Cursor, VS Code, JetBrains / PyCharm et Xcode simultanément.
1. Installer et amorcer le moniteur singleton```bash
orewatch monitor quickstart /path/to/project --client claude_code
`monitor quickstart` est le flux recommandé pour la première exécution. Il :
- installe ou rafraîchit le service moniteur singleton
- démarre le moniteur si nécessaire
- ajoute le projet cible à la liste de surveillance
- affiche le bloc de démarrage pour le client sélectionné
Si vous préférez installer le moniteur d'abord et configurer les clients plus tard :```bash
orewatch monitor install
orewatch monitor install --ide-bootstrap
orewatch monitor install --service-manager launchd --no-start
2. Vérifier que le moniteur est en bon état```bash orewatch monitor status orewatch monitor connection-info orewatch monitor doctor
Utilisez ces commandes pour des tâches légèrement différentes :
- `monitor status` affiche si le démon singleton et l'API sont en cours d'exécution
- `monitor connection-info` affiche l'URL de l'API de bouclage, le chemin du jeton, le répertoire home du moniteur et les clients bootstrap supportés
- `monitor doctor` affiche les chemins exacts de la configuration, de la base de données d'état, des journaux et des données partagées sur les menaces
**3. Ajoutez chaque projet que vous souhaitez que le singleton surveille**```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 démon OreWatch peut surveiller tous ces projets à la fois. Vous n'avez pas besoin d'un moniteur distinct par dépôt ou par espace de travail IDE.
OreWatch prend en charge deux transports d'intégration :
| Client | Transport | Commande d'amorçage | Notes |
|---|---|---|---|
| Claude Code | MCP | orewatch monitor ide-bootstrap --client claude_code | Pont MCP de première classe |
| Codex | MCP | orewatch monitor ide-bootstrap --client codex | Pont MCP de première classe |
| Cursor | MCP | orewatch monitor ide-bootstrap --client cursor | Pont MCP de première classe |
| VS Code | Local API | orewatch monitor ide-bootstrap --client vscode | Aucune extension intégrée ; utilisez l'API localhost |
| JetBrains / PyCharm | Local API | orewatch monitor ide-bootstrap --client jetbrains | Aucun plugin intégré ; utilisez l'API localhost |
| Xcode | Local API | orewatch monitor ide-bootstrap --client xcode | Idéal pour les résultats/notifications et les dépôts multilingues |
Les commandes d'amorçage affichent l'une de ces formes :```json { "mcpServers": { "orewatch": { "command": "/absolute/path/to/orewatch", "args": [ "monitor", "mcp" ] } } }
Quand `orewatch monitor ide-bootstrap --client <client>` parvient à résoudre le script console local, il émet désormais ce chemin absolu au lieu de `orewatch` nu. Si vous avez une configuration MCP plus ancienne qui contient encore `"command": "orewatch"`, régénérez-la et remplacez l'ancienne entrée.```json
{
"orewatch": {
"baseUrl": "http://127.0.0.1:48736",
"tokenPath": "/path/to/api.token"
}
}
Ces clients utilisent tous le même pont MCP local :```bash orewatch monitor mcp
Configuration recommandée :
1. Exécutez `orewatch monitor quickstart /path/to/project --client <cursor|claude_code|codex>` une fois.
2. Copiez le bloc MCP imprimé dans le client MCP correspondant.
3. Ouvrez un projet surveillé dans ce client.
4. Laissez le client appeler OreWatch via MCP pour :
- `orewatch_health`
- `orewatch_check_dependency_add`
- `orewatch_check_manifest`
- `orewatch_override_dependency_add`
- `orewatch_list_active_findings`
- `orewatch_list_notifications`
Notes :
- `monitor mcp` est un serveur stdio. Si vous le lancez manuellement, il semblera inactif en attendant un client MCP.
- Le pont MCP vérifie l'API locale au démarrage et peut démarrer automatiquement le moniteur singleton lorsque `auto_start_on_client` est activé.
- Pour un démarrage fiable de l'IDE, installez le moniteur d'arrière-plan une fois avec `monitor install` pour que le démon soit déjà disponible avant que le pont MCP ne démarre.
##### VS Code
Les intégrations VS Code doivent utiliser l'API singleton localhost plutôt que le pont MCP.
Configuration recommandée :
1. Exécutez `orewatch monitor quickstart /path/to/project --client vscode`.
2. Copiez `baseUrl` et `tokenPath` depuis `orewatch monitor ide-bootstrap --client vscode`.
3. Intégrez ces valeurs dans votre extension, tâche ou assistant VS Code local.
4. Appelez l'API lors des événements dependency-add, manifest-save et alert-refresh.
Utilisation recommandée de l'API pour une intégration VS Code :
- appelez `POST /v1/check/dependency-add` avant les flux d'installation/ajout du gestionnaire de paquets
- appelez `POST /v1/check/manifest` lorsqu'un manifeste pris en charge est sauvegardé ou explicitement revérifié
- interrogez `GET /v1/findings/active` et `GET /v1/notifications` pour afficher les détections en arrière-plan
##### JetBrains / PyCharm
JetBrains et PyCharm utilisent le même contrat d'API localhost que VS Code.
Configuration recommandée :
1. Exécutez `orewatch monitor quickstart /path/to/project --client jetbrains`.
2. Copiez le bloc API depuis `orewatch monitor ide-bootstrap --client jetbrains`.
3. Utilisez `baseUrl` et `tokenPath` retournés dans un plugin JetBrains, un outil externe ou un assistant local.
4. Affichez à la fois les décisions synchrones de dépendances et les alertes d'arrière-plan stockées dans l'IDE.
Utilisation recommandée de l'API pour une intégration JetBrains :
- vérifiez les ajouts de dépendances avec `POST /v1/check/dependency-add`
- revérifiez `package.json`, `requirements.txt`, `pyproject.toml`, `pom.xml`, `Gemfile`, `go.mod`, `Cargo.toml`, et les manifestes pris en charge associés avec `POST /v1/check/manifest`
- récupérez `GET /v1/findings/active` et `GET /v1/notifications` pour des panneaux d'alerte ou fenêtres d'outils persistants
##### Xcode
Les intégrations Xcode doivent également utiliser l'API singleton localhost, mais il y a une limite importante : OreWatch ne parse pas encore les manifestes de dépendances Apple natifs comme `Package.resolved`, `Podfile.lock` ou `Cartfile`. Aujourd'hui, l'intégration Xcode est idéale pour :
- afficher les résultats d'arrière-plan et les notifications dans un assistant, un script ou une application compagnon
- les dépôts multi-langages ouverts dans Xcode qui contiennent également des manifestes pris en charge comme `package.json`, `pyproject.toml` ou `Cargo.toml`
- les équipes qui souhaitent l'application de la barre de menus macOS et les alertes du Centre de notifications tout en travaillant dans Xcode
Configuration recommandée :
1. Exécutez `orewatch monitor quickstart /path/to/project --client xcode`.
2. Copiez le bloc API depuis `orewatch monitor ide-bootstrap --client xcode`.
3. Utilisez `baseUrl` et `tokenPath` retournés depuis un script de phase de build, un processus assistant ou une intégration Xcode personnalisée.
4. Interrogez `GET /v1/findings/active` et `GET /v1/notifications` pour des alertes visibles par l'utilisateur.
5. Si l'espace de travail Xcode contient des manifestes non-Apple pris en charge, appelez `POST /v1/check/manifest` pour ces fichiers dans le cadre de votre flux de travail.
Statut actuel de l'intégration :
- Claude Code, Codex et Cursor : pont MCP de première qualité inclus dans ce dépôt
- VS Code : contrat d'API local documenté, mais aucune extension officielle fournie pour le moment
- JetBrains / PyCharm : contrat d'API local documenté, mais aucun plugin officiel fourni pour le moment
- Xcode : API locale et intégration barre de menus documentées, mais aucune extension Xcode officielle et aucun analyseur de manifeste Apple natif pour le moment
#### Quand OreWatch trouve quelque chose
Lorsque le moniteur d'arrière-plan détecte un paquet compromis ou un IoC dans un projet surveillé, OreWatch :
- écrit des rapports JSON et HTML gérés par le moniteur dans le répertoire `reports/` du moniteur singleton
- stocke le résultat actif dans la base de données d'état du moniteur
- stocke une entrée de notification avec un message actionnable
- émet un avertissement dans le terminal si les notifications terminal sont activées
- sur macOS, privilégie l'application de la barre de menus singleton comme canal de popup lorsqu'elle est en cours d'exécution
- garde l'alerte la plus récente digne d'attention épinglée en haut du menu déroulant de la barre de menus pour un examen rapide
- sinon, utilise une notification de bureau directe au mieux si les notifications de bureau sont activées
- peut envoyer une notification webhook optionnelle pour les environnements distants ou sans tête
Utilisez l'interface de revue CLI intégrée pour inspecter ces alertes :```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
L'API locale et le pont MCP exposent les mêmes données pour les IDE et les agents :
GET /v1/findings/activeGET /v1/notificationsGET /v1/package-updatesPOST /v1/package-updates/checkorewatch_list_active_findingsorewatch_list_notificationsorewatch_list_package_updatesorewatch_check_package_updatesC'est le chemin pris en charge pour que les IDE, les clients MCP et les agents de codage révèlent les détections en arrière-plan après la fin de l'analyse d'origine.
Les avis de mise à jour de paquets sont en mode notification uniquement. OreWatch signale les versions plus récentes des dépendances de projet surveillées et d'OreWatch lui-même, mais ne modifie pas les manifestes, les fichiers de verrouillage ou les paquets installés.
OreWatch inclut désormais une application native de barre de menus macOS pour les personnes souhaitant une interface utilisateur locale visible plutôt que de se fier uniquement aux commandes CLI, à l'interrogation MCP ou aux popups du Centre de notifications au mieux.
Installez les liaisons Cocoa optionnelles dans le même runtime qui fournit la commande orewatch. Choisissez la commande qui correspond à votre méthode d'installation :```bash
python3.14 -m pip install 'orewatch[mac-menubar]'
pipx inject orewatch pyobjc-framework-Cocoa
brew install rapticore/tap/orewatch
Ensuite, lancez l'application de la barre de menus :```bash
orewatch monitor menubar
Par défaut, monitor menubar relance l'application en arrière-plan et rend immédiatement la main à votre invite de shell. Utilisez orewatch monitor menubar --foreground seulement lorsque vous voulez explicitement la garder attachée au terminal pour le débogage.
L'application de la barre de menus se rattache au même moniteur singleton. Elle ne démarre pas une deuxième instance de moniteur. Si le moniteur n'est pas déjà installé et en cours d'exécution, l'application l'installera/démarrera lors du premier lancement.
Homebrew installe les liaisons Cocoa dans l'environnement isolé libexec d'OreWatch. Si orewatch monitor menubar signale No module named 'AppKit', rafraîchissez la formule avec brew update && brew reinstall rapticore/tap/orewatch. Pour les installations pip, pipx et source, les liaisons optionnelles doivent encore être ajoutées au même environnement Python qui fournit la commande orewatch.
Lorsque les notifications de bureau sont activées sur macOS, le watcher singleton maintient désormais une application de barre de menus singleton active et l'utilise comme surface de popup principale. Cela évite de dépendre uniquement d'un appel osascript détaché du démon et vous offre une interface native persistante pour les nouvelles découvertes.
La version actuelle de la barre de menus est prioritaire sur l'icône. L'abréviation OW et les anciens libellés d'icône OreWatch doivent être considérés comme des références héritées ; l'application privilégie désormais l'icône de marque incluse et ne revient au texte compact ou aux badges que lorsque macOS ne peut pas afficher l'image ou a besoin d'un compteur d'alertes.
Ce que l'application de la barre de menus macOS vous offre :
Add Workspace Folder... qui inscrit un projet dans le watcher singleton et lance un scan rapide initialFlux Mac recommandé :
orewatch monitor quickstart /path/to/project --client claude_code une fois.orewatch.orewatch monitor menubar.Pour un déploiement plus facile, utilisez la documentation ciblée au lieu de lire l'intégralité du README du début à la fin :
Ordre d'adoption recommandé :
monitor quickstart.orewatch monitor findings et orewatch monitor notifications.monitor menubar pour que les utilisateurs disposent d'une surface de révision persistante et d'une livraison par popup.Commandes opérationnelles courantes :```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
**Actions manuelles d'instantané et de signature :**```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
Comportement du moniteur :
~/.config/orewatch/singleton/ et l'état par défaut est ~/.local/state/orewatch/singleton/.~/Library/Application Support/OreWatch/singleton/ et l'état par défaut est ~/Library/Application Support/OreWatch/State/singleton/.threat-data/final-data/.monitor doctor affiche les chemins exacts config_path, state_db, log_file, final_data_dir et le répertoire des modèles de service pour le moniteur singleton..ore-monitor.yml à la racine du projet.monitor install installe désormais un service launchd ou systemd au niveau utilisateur lorsque disponible, et revient au mode arrière-plan local sinon.monitor quickstart /path/to/project --client claude_code est le flux de première exécution le plus simple pour une configuration d'agent LLM local.--workspace-root /path/to/workspace est toujours accepté pour une version comme alias de compatibilité obsolète, mais il ne modifie plus l'identité du moniteur, l'emplacement du jeton ou le nommage du service.auto, si la configuration native launchd ou systemd échoue, OreWatch revient désormais au mode arrière-plan local au lieu d'abandonner l'installation.monitor install --ide-bootstrap affiche des extraits d'amorçage copiables pour Claude Code, Codex, Cursor, VS Code, JetBrains / PyCharm et Xcode.monitor connection-info affiche l'URL de base de l'API loopback, le chemin du jeton, la portée/répertoire personnel du moniteur singleton et si le démon est déjà en cours d'exécution.monitor ide-bootstrap réaffiche les extraits d'amorçage MCP/API actuels sans rien réinstaller.monitor mcp exécute un pont MCP local qui expose les vérifications de dépendances d'OreWatch à Claude Code, Codex et Cursor.monitor findings, monitor notifications et monitor package-updates fournissent l'interface d'examen intégrée pour les détections en arrière-plan et les avis de mise à jour.monitor menubar lance une application native de la barre de menus macOS soutenue par le moniteur singleton et le magasin de résultats.monitor mcp est un serveur stdio, donc il attendra un client MCP après le démarrage. Il écrit désormais l'état de préparation et de démarrage automatique sur stderr, pas sur stdout.monitor install de sorte que le démon d'arrière-plan soit déjà disponible lorsque le client lance monitor mcp ou appelle l'API.make test-e2e-clients prépare l'espace de travail synthétique et exécute la matrice de clients MCP/API multi-écosystèmes pour Claude Code, Codex et Cursor.openssf et osv). Les données candidates sont mises en scène dans le répertoire d'état du moniteur appartenant à l'utilisateur, vérifiées pour des baisses/suppressions anormales, puis promues dans les bases de données actives.snapshots.channel_url ou snapshots.manifest_url, et le moniteur les vérifie avec snapshots.public_key_path.openssl sur la machine locale.Surface d'intégration locale :
127.0.0.1:48736 par défaut lorsque le démon moniteur est en cours d'exécution.api.token avec des permissions propriétaire uniquement.127.0.0.1:48736 sans Authorization: Bearer <token> retourneront correctement 401 Unauthorized.orewatch monitor connection-info plutôt que de deviner les chemins, et doivent envoyer le project_path réel sur lequel ils opèrent dans les requêtes de vérification de dépendances.orewatch_health, orewatch_check_dependency_add, orewatch_check_manifest, orewatch_override_dependency_add, orewatch_list_active_findings, orewatch_list_notifications, orewatch_list_package_updates et orewatch_check_package_updates.Configuration optionnelle de mise à jour en direct avec contrôle d'anomalies :```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
Comportement clé :
- Les candidats en direct sont d'abord construits dans une zone de préparation ; ils ne remplacent pas les bases de données actives pendant la collecte.
- Les chutes importantes, les régressions d'écosystème, les écosystèmes vides et les suppressions massives bloquent la promotion.
- Les pannes de source principale ne sont par défaut qu'un avertissement pour les mises à jour en direct open-source ; les chutes et suppressions au niveau de l'écosystème bloquent toujours les mauvaises promotions.
- Les anomalies avec avertissement uniquement sont enregistrées dans le statut et les rapports mais n'empêchent pas la promotion.
- Les candidats rejetés conservent le dernier jeu de données connu comme bon actif lorsqu'il en existe déjà un.
- Le bootstrap initial à partir des flux en direct est autorisé si au moins une source principale réussit et que le candidat produit des données d'écosystème utilisables.
**Configuration facultative du webhook de notification :**```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
Définissez webhook_format: slack lorsque vous ciblez un webhook entrant Slack. Dans ce mode, OreWatch envoie une charge utile text simple.
Le projet dispose désormais de deux surfaces de distribution distinctes :
Ils doivent être distribués séparément.
Meilleur défaut pour les développeurs : publiez le scanner comme un paquet Python normal sur PyPI et recommandez l'installation avec pipx.
Pourquoi c'est le meilleur choix :
pipx offre aux développeurs une installation isolée au niveau utilisateur sans polluer les environnements virtuels du projet.python3.14 -m pip install orewatch==<version>.Forme de publication recommandée :
sdist et la roue universelle sur PyPI.orewatch.ore-mal-pkg-inspector comme alias de compatibilité temporaire.pipx install --python python3.14 orewatch pour les installations locales des développeurs.python3.14 -m pip install orewatch==<version> pour le CI et l'automatisation verrouillée.Canal secondaire disponible : le tap Homebrew est maintenant actif pour les utilisateurs macOS qui préfèrent les installations gérées par Brew :```bash brew install rapticore/tap/orewatch
Homebrew reste une couche de commodité par dessus la version publiée sur PyPI, et non l'artefact de publication principal.
**Meilleure option pour les contributeurs :** gardez le flux actuel de source-checkout :```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 vous déployez OreWatch avec Kandji, Jamf Pro, Intune, Munki, ou un autre système de distribution de logiciels macOS, le modèle recommandé diffère du chemin pipx pour développeurs.
Réalité actuelle du produit :
.pkg plat signé construit autour de la roue OreWatch publiéeModèle de déploiement d'entreprise recommandé :
.pkg signé qui installe l'environnement d'exécution OreWatch et un shim CLI orewatch stablemac-menubar si vous voulez l'application native de la barre de menus sur les Mac gérésorewatch monitor quickstart /path/to/project --client <client> ou un bootstrap équivalent en contexte utilisateurPourquoi cette séparation est importante :
Forme de paquet recommandée pour macOS géré :
/Library/Application Support/OreWatch/runtime/usr/local/bin/orewatchConseils spécifiques aux fournisseurs :
.pkg).pkg à .dmg ou .zip pour OreWatch car le runtime n'est pas une application glisser-déposer.pkg en tant que paquet et le déployer avec une politique ou Self Service.pkg signé.pkg, signé avec un certificat Developer ID Installer, et le paquet doit contenir une charge utile.pkg ainsi que les métadonnées du paquet et traiter OreWatch comme tout autre logiciel macOS géréPour un guide de déploiement plus complet, voir docs/managed-rollout.md.
Les instantanés de données de menaces ne doivent pas être intégrés dans le paquet Python. Ils changent selon une cadence différente et sont déjà pris en charge en tant qu'artefacts hébergés signés.
Par défaut open-source/communautaire : consommer openssf et osv directement via le chemin de mise à jour en direct avec détection d'anomalies.
Par défaut entreprise : publier des instantanés signés versionnés sur un hébergement HTTPS statique et laisser les clients les rafraîchir indépendamment.
Cibles d'hébergement recommandées :
Structure d'instantané recommandée :
versions/<version>/manifest.jsonversions/<version>/*.dbchannels/stable.jsonModèle de confiance recommandé :
Pour une version de production, la configuration la plus propre est :
pipxpipPar défaut, le scanner n'affiche que les avertissements, les erreurs et le résumé final. Pour le dépannage ou le suivi détaillé de la progression, utilisez les indicateurs de journalisation :
Voir les messages de progression et les statistiques de collecte :```bash orewatch /path/to/project --verbose
**La sortie inclut:**
- Résultats de détection d'écosystèmes
- Progression de l'analyse des fichiers
- Comptes d'extraction de paquets
- Détails de requête de base de données
- Progression de l'analyse des IoC
**Exemple:**```
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
Consultez les informations de diagnostic détaillées pour le dépannage :```bash orewatch /path/to/project --debug
**Output includes :**
- Tous les messages de niveau INFO
- Les chemins de fichiers analysés
- Les détails d'exécution des requêtes SQL
- Les calculs de hachage
- Les résultats de correspondance de motifs
- Les informations d'état interne
**Cas d'utilisation :**
- Enquêter sur les raisons pour lesquelles un paquet n'a pas été détecté
- Déboguer les problèmes de détection automatique d'écosystème
- Signaler des problèmes avec un contexte détaillé
- Auditer le comportement du scanner
### Journalisation pour les collecteurs
Les collecteurs de renseignements sur les menaces prennent également en charge les modes verbeux et de débogage :```bash
cd collectors
# See collection progress
python3 orchestrator.py --verbose
# Debug data source issues
python3 orchestrator.py --debug
Remarque : Tous les journaux vont vers stderr, gardant stdout propre pour la sortie du rapport JSON. Cela permet de rediriger les résultats du scanner vers d'autres outils sans interférence des messages de journal.
Les rapports sont enregistrés dans le répertoire scan-output/ par défaut (ou un chemin personnalisé avec --output). OreWatch écrit un rapport JSON lisible par machine et un rapport HTML associé stylisé avec le même nom de base. L'artefact JSON inclut des métadonnées de disponibilité des données de menace et utilise des objets physicalLocation de style SARIF pour les résultats de packages, mais ce n'est pas un document SARIF 2.1.0 complet.
Exemple de rapport :
{
"_type": "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"
}
]
}
Champs de données de menace :
data_status : complete, partial, failed ou not_applicablesources_used : sources qui ont contribué des données de menace utilisables pour les écosystèmes demandésexperimental_sources_used : sources expérimentales incluses dans les données d'analysemissing_ecosystems : écosystèmes demandés pour lesquels aucune base de données de menace de paquet utilisable n'était disponiblepromotion_decision : vide pour les analyses de données existantes, sinon promoted, bootstrapped ou rejectedkept_last_known_good : true lorsqu'un candidat en direct a été rejeté mais que l'ensemble de données actif précédent est resté utilisableanomalies : anomalies d'avertissement/bloc déclenchées lors d'une tentative de rafraîchissement en directNiveaux de sévérité :
Actions recommandées :
Analyse de sécurité de base :```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/
**Avancé avec échec à la détection :**```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
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
### Jenkins Pipeline```groovy
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
}
}
}
Ajouter dans .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"
---
## Dépannage
### Problèmes Courants
#### Erreur « Base de données introuvable »
**Symptôme :**```
ERROR: No usable threat data available for requested ecosystems: npm
Cause: La collecte de données de menace a échoué, les métadonnées sont incomplètes, ou les écosystèmes demandés n'ont pas encore de bases de données locales utilisables.
Solution:```bash
orewatch /path/to/project --latest-data --strict-data
**Remarque :** Si cela persiste, vérifiez la connectivité réseau, les permissions du système de fichiers, et si vous avez intentionnellement demandé des sources expérimentales.
#### "Aucun paquet détecté" Avertissement
**Symptôme :**```
WARNING: No packages detected in /path/to/project
Causes et solutions possibles :
Symptôme:``` ERROR: Error downloading npm: <urlopen error [Errno -3] Temporary failure in name resolution>
**Solutions:**
1. **Vérifier la connexion internet:** ```bash
ping google.com
collectors/config.yaml: ```yaml
osv:
timeout: 600 # Increase from default 300
Symptôme:``` ERROR: Error creating directory collectors/raw-data: Permission denied
**Solution:**```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
Symptôme : ~/Library/Application Support/OreWatch (macOS) ou
$XDG_STATE_HOME/orewatch (Linux) a atteint des dizaines de gigaoctets.
Cause (avant 1.2.3) : Chaque promotion de mise à jour en direct archivait une copie complète des bases de données de données de menace précédentes (~300 Mo) sans rétention. Un moniteur de longue durée accumulait un instantané par cycle indéfiniment.
Correctif : Mettez à niveau vers 1.2.3 ou ultérieur. Les sauvegardes sont maintenant des manifests SHA-256 d'environ 1 Ko, la rétention par défaut est de 30 sauvegardes les plus récentes, et une commande de nettoyage explicite est disponible :```bash
orewatch monitor cleanup
orewatch monitor cleanup --keep-backups 5 --staging-max-age-seconds 0
#### Faux positifs
**Symptôme :** Paquet légitime signalé comme malveillant.
**Étapes :**
1. **Vérifier la constatation :** Examiner les détails du rapport, y compris la gravité et la description
2. **Vérifier la version :** La version signalée peut être spécifique : ```bash
orewatch /path/to/project --verbose
Activer la journalisation détaillée :```bash
orewatch /path/to/project --debug 2> debug.log
cd collectors python3 orchestrator.py --debug 2> collector-debug.log
**Consultez les logs :** Vérifiez `debug.log` pour la trace d'exécution détaillée incluant :
- Chemins de fichiers scannés
- Requêtes SQL exécutées
- Résultats de correspondance de motifs
- Traces de pile d'erreurs
---
## FAQ
### À quelle fréquence dois-je mettre à jour les renseignements sur les menaces ?
**Recommandation :**
- **Environnements de production/CI :** Mises à jour automatisées quotidiennes
- **Postes de développement :** Mises à jour hebdomadaires au minimum
- **Après des actualités de sécurité :** Mise à jour immédiate lorsque de nouvelles menaces sont annoncées
Les paquets malveillants sont publiés en continu. Les mises à jour quotidiennes garantissent les dernières protections.
### Comment mettre à jour les données de renseignement sur les menaces ?
Exécutez le scanner avec l'option `--latest-data` pour forcer une mise à jour :```bash
orewatch /path/to/project --latest-data
Pour les mises à jour automatisées dans les CI/CD, planifiez des analyses périodiques avec le drapeau --latest-data (par exemple, quotidiennement). Ajoutez --include-experimental-sources uniquement si vous souhaitez explicitement inclure les données dérivées de Phylum dans la reconstruction.
Remarque : Les premières analyses collectent automatiquement les données, donc les mises à jour manuelles ne sont nécessaires que pour rafraîchir les bases de données existantes.
Les bases de données par défaut sont construites à partir des sources de menaces principales du projet :
openssfosvLe scanneur peut également inclure l'ensemble des sources expérimentales du projet :
phylum avec --include-experimental-sourcessocketdev est présent dans le dépôt en tant qu'espace réservé désactivé et ne fait pas partie du chemin de collecte par défaut.
Pour les détails techniques sur les sources de données, la collecte et le traitement, voir ARCHITECTURE.md.
Non. OreWatch effectue des opérations en lecture seule. Il :
Il ne jamais :
Mesures à prendre :
Partiellement.
Analyse hors ligne : ✅ Oui, une fois les bases de données initialisées```bash
orewatch /path/to/project
orewatch /path/to/project
**Mises à jour hors ligne :** ❌ Non, la collecte de renseignements sur les menaces nécessite un accès à Internet pour récupérer les données des sources de sécurité.
**Environnements isolés (airgap) :** Vous pouvez :
1. Télécharger les bases de données sur une machine connectée à Internet
2. Transférer les fichiers SQLite dans le répertoire `final_data_dir` singleton affiché par `orewatch monitor doctor`
3. Exécuter des analyses hors ligne avec des données potentiellement obsolètes
### En quoi cela se compare-t-il à npm audit ou pip-audit ?
**Objectifs différents :**
**npm audit / pip-audit :**
- Se concentrent sur les vulnérabilités CVE connues
- Vérifient les versions de paquets par rapport aux bases de données d'avis
- Maintenus par les équipes des registres de paquets
**OreWatch :**
- Se concentre sur les paquets malveillants (pas seulement les vulnérables)
- Détecte le typosquatting, les malwares, les attaques sur la chaîne d'approvisionnement
- Couverture multi-écosystèmes
- Détection d'IoC pour les menaces actives
**Meilleure pratique :** Utilisez les **deux** :```bash
# Check for vulnerabilities
npm audit
pip-audit
# Check for malicious packages
orewatch /path/to/project
Analyse des dépendances : ✅ Oui, l'analyseur lit vos fichiers de dépendances, quelle que soit la provenance des paquets.
Renseignement sur les menaces : ⚠️ Limité. Nos bases de données couvrent les registres publics (npmjs.com, pypi.org, etc.). Les paquets malveillants sur les registres privés ne seront pas détectés, sauf si vous ajoutez des données de menaces personnalisées.
Données de menaces personnalisées : Vous pouvez étendre les bases de données avec vos propres listes de paquets malveillants. Contactez-nous pour obtenir des conseils sur ce cas d'utilisation avancé.
Temps d'analyse :
Facteurs :
--no-ioc si inutile)Conseils d'optimisation :```bash
orewatch --file package.json
---
## Contribuer
Nous accueillons volontiers les contributions ! Que vous signaliez des bogues, suggériez des fonctionnalités ou contribuiez du code, votre aide améliore OreWatch pour tout le monde.
**Signaler des bogues ou demander des fonctionnalités :**
- GitHub Issues : https://github.com/rapticore/ore-mal-pkg-inspector/issues
**Contribuer du code :**
- Voir [CONTRIBUTING.md](https://github.com/rapticore/ore-mal-pkg-inspector/blob/main/CONTRIBUTING.md) pour des directives détaillées sur la configuration de développement, le style de code, les tests et le processus de pull request
**Questions ou discussions :**
- GitHub Discussions : https://github.com/rapticore/ore-mal-pkg-inspector/discussions
---
## Politique de sécurité
La sécurité est notre priorité absolue. OreWatch est un outil de sécurité, et nous prenons les vulnérabilités au sérieux.
### Signaler des vulnérabilités de sécurité
**N'ouvrez PAS de GitHub Issues publiques pour les vulnérabilités de sécurité.**
Signalez plutôt en privé :
**E-mail :** [email protected]
**Inclure :**
- Description de la vulnérabilité
- Étapes pour reproduire
- Impact potentiel
- Correctif suggéré (le cas échéant)
- Vos coordonnées pour le suivi
### Calendrier de réponse
- **Accusé de réception :** Sous 48 heures
- **Évaluation initiale :** Sous 7 jours
- **Délai de correction :** Varie selon la gravité
- Critique : 7 à 14 jours
- Élevé : 14 à 30 jours
- Moyen/Faible : 30 à 60 jours
### Bonnes pratiques de sécurité
Lorsque vous utilisez OreWatch :
**À faire :**
- ✅ Exécuter avec le moindre privilège (pas de root/admin requis)
- ✅ Mettre à jour régulièrement les renseignements sur les menaces
- ✅ Examiner rapidement les rapports d'analyse
- ✅ Intégrer dans CI/CD pour une protection continue
- ✅ Maintenir l'outil à jour vers la dernière version
**À ne pas faire :**
- ❌ Ignorer les résultats d'analyse sans investigation
- ❌ Désactiver l'analyse des IoC dans les environnements de production
- ❌ Partager des fichiers de base de données provenant de sources non fiables
- ❌ Exécuter avec des privilèges élevés inutilement
### Divulgation des vulnérabilités
Nous suivons une divulgation coordonnée :
1. Vulnérabilité signalée en privé
2. Correctif développé et testé
3. Avis de sécurité publié
4. Divulgation publique après la disponibilité du correctif
### Tableau d'honneur de la sécurité
Nous reconnaissons les chercheurs en sécurité qui divulguent de manière responsable les vulnérabilités :
*La liste sera tenue à jour à mesure que les rapports seront reçus*
---
### Demandes de la communauté
Votez ou suggérez des fonctionnalités :
- **GitHub Discussions :** https://github.com/rapticore/ore-mal-pkg-inspector/discussions
- **Demandes de fonctionnalités :** https://github.com/rapticore/ore-mal-pkg-inspector/issues
### Contribuer à la feuille de route
Nous priorisons les fonctionnalités en fonction de :
- L'impact sur la sécurité
- La demande de la communauté
- La pérennité de la maintenance
- L'alignement avec les objectifs du projet
Pour influencer la feuille de route :
1. Ouvrir une demande de fonctionnalité avec un cas d'utilisation détaillé
2. Participer aux discussions
3. Contribuer des implémentations (les PR sont les bienvenues !)
---
## Feuille de route
OreWatch est utilisable aujourd'hui pour :
- analyses CLI locales dans npm, PyPI, Maven, RubyGems, Go et Cargo
- un moniteur d'arrière-plan par utilisateur pour de nombreux projets
- intégrations MCP pour Cursor, Claude Code et Codex
- intégrations API localhost pour VS Code, JetBrains / PyCharm et les assistants Xcode
- barre de menus macOS avec revue et notifications contextuelles
Priorités à court terme :
- premiers exemples d'intégration ou plugins légers pour VS Code et JetBrains / PyCharm
- workflows de notification utilisateur plus solides au‑delà des popups locales
- gestion de politique de projet plus claire depuis la CLI et l'interface utilisateur
- documentation enrichie sur les rapports d'analyse et l'adoption
Priorités à moyen terme :
- workflows d'analyse de projet plus étendus depuis le moniteur et la surface MCP
- meilleures directives de déploiement au niveau organisationnel
- canaux de livraison et d'escalade d'alertes externes plus robustes
- expérience utilisateur IDE plus approfondie au lieu d'une simple guidance d'intégration via API
Limite actuelle connue :
- L'intégration Xcode est actuellement la meilleure pour la visibilité des alertes et les dépôts multilingues. OreWatch n'analyse pas encore les manifests natifs Apple tels que `Package.resolved`, `Podfile.lock` ou `Cartfile`.
Direction à plus long terme :
- prise en charge native des manifests de l'écosystème Apple
- intégrations éditeur propriétaires plus solides
- parité d'expérience utilisateur système d'exploitation plus large au‑delà du chemin actuel de la barre de menus macOS
Voir [docs/roadmap.md](https://github.com/rapticore/ore-mal-pkg-inspector/blob/main/docs/roadmap.md) pour la vue plus axée sur l'adoption.
---
## Licence
Licence MIT
Copyright (c) 2025 Rapticore
Permission est accordée, gratuitement, à toute personne obtenant une copie
de ce logiciel et des fichiers de documentation associés (le "Logiciel"), de traiter
le Logiciel sans restriction, y compris sans limitation les droits
d'utiliser, copier, modifier, fusionner, publier, distribuer, sous‑licencier et/ou vendre
des copies du Logiciel, et de permettre aux personnes à qui le Logiciel est
fourni de le faire, sous réserve des conditions suivantes :
L'avis de copyright ci‑dessus et cet avis d'autorisation doivent être inclus dans toutes
les copies ou parties substantielles du Logiciel.
LE LOGICIEL EST FOURNI "EN L'ÉTAT", SANS GARANTIE D'AUCUNE SORTE, EXPRESSE OU
IMPLICITE, Y COMPRIS MAIS SANS S'Y LIMITER LES GARANTIES DE QUALITÉ MARCHANDE,
D'ADÉQUATION À UN USAGE PARTICULIER ET D'ABSENCE DE CONTREFAÇON. EN AUCUN CAS LES
AUTEURS OU TITULAIRES DU DROIT D'AUTEUR NE POURRONT ÊTRE TENUS RESPONSABLES DE TOUTE
RÉCLAMATION, DOMMAGE OU AUTRE RESPONSABILITÉ, QUE CE SOIT DANS LE CADRE D'UNE ACTION
CONTRACTUELLE, DÉLICTUELLE OU AUTRE, DÉCOULANT DE, OU EN LIEN AVEC LE LOGICIEL OU SON
UTILISATION, OU D'AUTRES INTERACTIONS AVEC LE LOGICIEL.
---
## Support
### Obtenir de l'aide
**Documentation :** Vous la lisez ! Commencez ici pour la plupart des questions.
**GitHub Discussions :** Pour les questions, idées et interactions avec la communauté :
- https://github.com/rapticore/ore-mal-pkg-inspector/discussions
**GitHub Issues :** Pour les rapports de bogues et demandes de fonctionnalités :
- https://github.com/rapticore/ore-mal-pkg-inspector/issues
**E-mail :** Pour les vulnérabilités de sécurité et demandes privées :
- [email protected]
### Support professionnel
Pour les organisations nécessitant :
- Intégrations personnalisées
- Support avec SLA
- Assistance pour déploiement privé
- Flux de renseignements sur les menaces personnalisés
Contact : [email protected]
---
## Remerciements
### Origine du projet
Ce projet a été extrait du dépôt [OreNPMGuard](https://github.com/rapticore/OreNPMGuard) pour maintenir une orientation claire du projet tout en élargissant les capacités.
**OreNPMGuard** (décembre 2025) se spécialise dans la détection des attaques npm Shai‑Hulud avec plus de 738 paquets affectés et une analyse approfondie des IoC. Au cours de son développement, nous avons reconnu le besoin d'une protection plus large multi‑écosystème, ce qui a conduit à la création d'OreWatch en tant qu'outil autonome au service de la communauté des développeurs dans tous les grands écosystèmes de paquets.
### Projets connexes
- **[OreNPMGuard](https://github.com/rapticore/OreNPMGuard)** - Scanner npm spécialisé pour Shai‑Hulud
---
**Construit par l'équipe de recherche en sécurité de Rapticore**
*Protéger les chaînes d'approvisionnement logicielles, une analyse à la fois.*