Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
ore-mal-pkg-inspector — 多生态系统恶意包检测与供应链安全扫描器 | Kitploit
工具/GitHubGitHub/rapticore/ore-mal-pkg-inspector
静态分析漏洞扫描器代码分析信息收集恶意软件分析DevSecOps威胁情报供应链安全学习与教育
GitHubrapticore/ore-mal-pkg-inspector

ore-mal-pkg-inspector

多生态系统恶意包检测与供应链安全扫描器

查看仓库
813个月前尚未审核

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

OreWatch

多生态恶意包检测与供应链安全扫描器

Python Version License Status Ecosystems

一款生产级安全工具,用于检测 npm、PyPI、Maven、RubyGems、Go 和 Cargo 生态系统中的恶意包与供应链威胁。利用从可信安全来源自动收集的威胁情报,识别项目中受感染的依赖项。

OreWatch 是产品及 PyPI 包名。当前源代码仓库路径仍使用 ore-mal-pkg-inspector。

视频

安装

https://github.com/rapticore/ore-mal-pkg-inspector/issues/2#issue-4215016110

OreWatch 与 Cursor

https://github.com/rapticore/ore-mal-pkg-inspector/issues/3#issue-4215017945

OreWatch 与 CodeX

https://github.com/rapticore/ore-mal-pkg-inspector/issues/4#issue-4215019385

OreWatch 与 Claude-Code

https://github.com/rapticore/ore-mal-pkg-inspector/issues/5#issue-4215021599


目录

  • 问题
  • 解决方案
  • 主要特性
  • 为什么选择 OreWatch?
  • 从这里开始
  • 快速入门
    • 前提条件
    • 安装
    • 首次扫描
  • 用法
    • 基本命令
    • 高级用法
    • 命令行参考
    • 后台监控
  • 采用指南
  • 分发
    • macOS 受管部署
  • 日志与调试
  • 输出与报告
  • CI/CD 集成
  • 故障排除
  • 常见问题
  • 贡献
  • 安全策略
  • 路线图
  • 许可证
  • 支持
  • 致谢

问题

供应链攻击已成为软件入侵的首要威胁向量。 仅 2024 年,就有数千个恶意包被发布到 npm、PyPI 及其他包注册表,通过拼写域名欺骗、依赖混淆以及 Shai-Hulud 等复杂恶意软件活动针对开发者。

挑战: 组织与开发者需要:

  • 扫描跨多个编程生态系统的依赖项
  • 持续跟进来自多个来源的快速演变的威胁情报
  • 不仅检测已知恶意包,还要检测入侵指标(IoC)
  • 将安全扫描集成到现有开发工作流中
  • 快速响应新发现的威胁

缺口: 现有方案通常:

  • 局限于单一生态系统(仅 npm、仅 PyPI 等)
  • 依赖人工维护的威胁列表
  • 缺乏 IoC 检测能力
  • 难以集成到自动化管道
  • 属于不透明的专有黑盒工具

解决方案

OreWatch 通过以下方式解决这些挑战:

全面的多生态系统覆盖: 单一工具支持 npm、PyPI、Maven、RubyGems、Go 和 Cargo 包

自动化威胁情报: 动态收集并合并来自可信安全研究来源的数据

主动 IoC 检测: 识别 Shai-Hulud 攻击模式及其他恶意代码指标,超越简单的包名匹配

CI/CD 就绪: 设计用于无缝集成到 GitHub Actions、GitLab CI、Jenkins 及其他自动化平台

开源透明: 检测逻辑、数据源和扫描方法完全可见


主要特性

多生态系统支持 扫描 npm、PyPI、Maven、RubyGems、Go 和 Cargo 包,并根据项目结构自动检测生态系统。

统一威胁情报数据库 根据动态收集的可信安全研究来源的恶意包数据库进行检查。

自动生态系统检测 根据目录结构、文件名智能识别生态系统,并可在单次运行中扫描多个生态系统。

入侵指标(IoC)检测 扫描 Shai-Hulud 攻击模式(原始及 2.0 变种)、恶意钩子、可疑工作流及已知载荷文件。

Shai-Hulud 集成 针对 OreNPMGuard 提供的全面 Shai-Hulud 受影响包列表交叉引用 npm 包。

结构化 JSON 报告 生成机器可读的 JSON 报告,包含显式的威胁数据元数据及 SARIF 风格的文件位置信息。

灵活输入格式 支持标准依赖文件(package.json、requirements.txt 等)及通用包列表(文本、JSON、YAML)。

生产级日志 通过 --verbose 和 --debug 标志可配置详细级别,用于故障排除和审计追踪。

安全且快速 只读操作,不修改代码,针对大型代码库高效扫描进行优化。


为什么选择 OreWatch?

对比单一生态系统工具 大多数安全扫描器专注于一个包管理器。OreWatch 为六个主要生态系统提供统一保护,对于现代多语言开发环境至关重要。

对比人工威胁列表 静态恶意包列表会迅速过时。我们的自动收集器每天从多个权威来源获取最新威胁情报。

对比仅包名检测 仅检查包名会遗漏复杂攻击。IoC 检测能够识别尚未列入黑名单的包中的恶意代码模式。

对比人工安全审计 人工依赖项审查耗时且易出错。自动化扫描可在每次构建中实现持续安全验证。

对比商业黑盒工具 专有工具缺乏检测逻辑的透明度。作为开源项目,每条检测规则和数据源均可审计。

诞生故事 OreWatch 源自 OreNPMGuard 的开发,后者是一款专门针对 Shai-Hulud npm 攻击的扫描器。在该项目期间,我们认识到需要更广泛的多生态系统覆盖能力。2025 年 12 月,我们将多生态系统检测能力提取并增强为独立的工具,保留了 OreNPMGuard 对 npm 的关注,同时使 OreWatch 能够服务于所有主要包生态系统的更广泛的开发者社区。


从这里开始

如果你是首次采用 OreWatch,请选择与你的工作流最匹配的最简路径:

大多数开发者推荐的首运行序列:

  1. 使用 pip install . 或已发布的包安装 OreWatch。
  2. 运行 orewatch monitor quickstart /path/to/project --client <你的客户端>。
  3. 使用 orewatch monitor status 验证守护进程。
  4. 如果你在 macOS 上,启动 orewatch monitor menubar 以获取通知和本地界面。

如果你想要更短的设置指南及可复制粘贴的命令,请使用 docs/adoption-guide.md。


快速入门

前提条件

  • Python 3.14 或更高版本
  • pip 用于安装依赖项
  • Git 用于克隆仓库
  • 互联网连接 用于初始威胁情报设置
  • OpenSSL 用于监控快照工作流中的签名快照密钥生成、发布和验证

安装

OreWatch 可通过 pipx(推荐)、Homebrew(macOS)、pip 或 源码 安装。所有方法均生成 orewatch CLI 命令。

选项 1 — pipx(推荐)

pipx 将 OreWatch 安装到其隔离环境中,同时使 orewatch 命令全局可用。这是大多数开发者的最佳选择。```bash

Install pipx if you don't have it

python3.14 -m pip install --user pipx python3.14 -m pipx ensurepath

Install OreWatch

pipx install --python python3.14 orewatch

If you want the macOS menu bar app on a fresh install, use this instead:

pipx install --python python3.14 'orewatch[mac-menubar]'

Verify

orewatch --help

Optional macOS menu bar app

orewatch monitor menubar

root@kitploit:~
如果你已经通过 pipx 安装了 `orewatch`,并且之后想添加 macOS 菜单栏应用,请将 Cocoa 绑定注入到同一个 pipx 环境中:```bash
pipx inject orewatch pyobjc-framework-Cocoa

升级:```bash pipx upgrade orewatch

root@kitploit:~
**卸载:**```bash
pipx uninstall orewatch

选项 2 — Homebrew (macOS)

对于偏好 Homebrew 管理的安装的 macOS 用户:```bash

Add the OreWatch tap

brew tap rapticore/tap

Install

brew install rapticore/tap/orewatch

Verify

orewatch --help

Optional macOS menu bar app

orewatch monitor menubar

root@kitploit:~
**升级:**```bash
brew update && brew upgrade orewatch

卸载:```bash brew uninstall orewatch brew untap rapticore/tap # optional — removes the tap

root@kitploit:~
> **注意:** Homebrew 配方包含了 `orewatch monitor menubar` 所需的 Cocoa 绑定。如果较旧的 Homebrew 安装报告 `ModuleNotFoundError: No module named 'AppKit'`,请运行 `brew update && brew reinstall rapticore/tap/orewatch`,以便配方重建其隔离的 Python 环境并支持菜单栏。

#### 选项 3 — pip

对于 CI 管道、Docker 镜像或自行管理虚拟环境(virtualenv)的情况,请使用 `pip`:```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

升级:```bash python3.14 -m pip install --upgrade orewatch

root@kitploit:~
#### 选项 4 — 源码检出(贡献者)```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

安装后验证

使用任意方法安装后,确认 OreWatch 正在运行:```bash

Check the CLI is accessible

orewatch --help

List supported manifest filenames

orewatch --list-supported-files

Run a quick scan on the current directory

orewatch .

root@kitploit:~
#### 平台说明

| 平台 | Python 来源 | 备注 |
|---|---|---|
| **macOS** (Homebrew Python) | `brew install [email protected]` | 推荐 Homebrew 用户使用 |
| **macOS** (pyenv) | `pyenv install 3.14` | 适合多版本管理 |
| **Ubuntu / Debian** | `sudo apt install python3.14` 或 pyenv | 请确认你的发行版提供了 3.14+ |
| **Fedora / RHEL** | `sudo dnf install python3.14` 或 pyenv | — |
| **Windows (WSL)** | pyenv 或系统包 | 原生 Windows 未经测试 |

> **需要 Python 3.14。** OreWatch 使用了 Python 3.14 引入的语言特性。旧版本在导入时会失败。

#### 安装故障排除

| 症状 | 修复方法 |
|---|---|
| `command not found: orewatch` | 确保安装位置在你的 `PATH` 中。对于 pipx:运行 `pipx ensurepath` 并重启 shell。 |
| 导入时出现 `ModuleNotFoundError` | 可能存在多个 Python 版本。确认 `orewatch` 运行环境为 Python 3.14+,并使用对应的解释器重新安装。 |
| pipx 安装因解析器错误失败 | 升级 pipx:`python3.14 -m pip install --upgrade pipx` |
| Homebrew 安装后找不到 `orewatch` | 先运行 `brew tap rapticore/tap`,然后重试安装。 |
| pip 安装时权限被拒绝 | 使用 `pip install --user orewatch` 或在虚拟环境中安装。 |

_注意:如果本地威胁数据缺失或过期,包扫描会暂存一个实时更新候选,并仅在异常检测通过后才将其激活。如果候选数据看起来可疑,OreWatch 会保持最近已知良好的数据集有效。_

_已安装 CLI:_ `orewatch`
_兼容别名:_ `ore-mal-pkg-inspector`

### 首次扫描

**扫描一个项目目录:**```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

预期输出:``` 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...

============================================================ SCAN REPORT SUMMARY

Ecosystem: npm, pypi Total Packages Scanned: 45 Malicious Packages Found: 0 IoCs Found: 0

✅ No malicious packages or IoCs detected

HTML report saved to: scan-output/malicious_packages_report_20251231_120000.html JSON report saved to: scan-output/malicious_packages_report_20251231_120000.json

root@kitploit:~
如果你希望 OreWatch 在初次扫描后持续监控该项目,请继续阅读[后台监控](#background-monitoring)或直接跳转到 [docs/adoption-guide.md](https://github.com/rapticore/ore-mal-pkg-inspector/blob/HEAD/docs/adoption-guide.md)。

---

## 使用方法

### 基本命令

**扫描目录(自动检测生态系统):**```bash
# Current directory
orewatch .

# Specific directory
orewatch /home/user/projects/my-app

# With an absolute path
orewatch /home/user/projects/backend-api

扫描特定依赖文件:```bash

Ecosystem auto-detected from filename

orewatch --file package.json orewatch --file requirements.txt orewatch --file pom.xml orewatch --file Gemfile orewatch --file go.mod orewatch --file Cargo.toml

root@kitploit:~
**强制特定生态系统:**```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

扫描通用包列表:```bash

Text file (one package per line) - must specify ecosystem

orewatch --file packages.txt --ecosystem pypi

JSON file with package array

orewatch --file packages.json --ecosystem npm

YAML file

orewatch --file packages.yaml --ecosystem npm

root@kitploit:~
### 高级用法

**自定义输出路径:**```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

IoC 扫描控制:```bash

Full scan (packages + IoCs) - default behavior

orewatch /path/to/project

Skip IoC scanning for faster package-only checks

orewatch /path/to/project --no-ioc

Only scan for IoCs, skip package database checking

orewatch /path/to/project --ioc-only

root@kitploit:~
**静默模式:**```bash
# Generate report without console summary (useful for scripts)
orewatch /path/to/project --no-summary

威胁数据控制:```bash

Force a staged live refresh of the default core sources before scanning

orewatch /path/to/project --latest-data

Fail if any requested ecosystem only has partial or missing threat data

orewatch /path/to/project --strict-data

Include experimental sources during collection

orewatch /path/to/project --latest-data --include-experimental-sources

Print the exact dependency filenames the scanner recognizes

orewatch --list-supported-files

root@kitploit:~
**批量扫描:**```bash
# Scan multiple projects
for dir in ~/projects/*/; do
    echo "Scanning $dir"
    orewatch "$dir" --output "reports/$(basename $dir).json"
done

命令行参考

扫描器选项

后台监控

该仓库现在包含一个本地后台监控器,用于保持威胁数据的新鲜度,监视已加入项目的清单和工作流变更,运行延迟扫描,并记录新发现或升级的发现结果。监控器拥有的配置和状态存储在仓库之外的用户自有目录中,因此克隆的仓库无法预植监控器行为。

OreWatch 现在将监控器视为每个用户的单例。一个守护进程可以监视磁盘上任意位置的多个项目,并为多个并发的 Claude Code、Codex、Cursor、VS Code、JetBrains / PyCharm 和 Xcode 客户端提供服务。

端到端监控器设置

1. 安装并引导单例监控器```bash

First project + first client

orewatch monitor quickstart /path/to/project --client claude_code

root@kitploit:~
`monitor quickstart` 是推荐的首运行流程。它将:

- 安装或刷新单例监控服务
- 在需要时启动监控
- 将目标项目添加到监视列表
- 打印所选客户端的引导块

如果您倾向于先安装监控,之后再连接客户端:```bash
orewatch monitor install
orewatch monitor install --ide-bootstrap
orewatch monitor install --service-manager launchd --no-start

2. 验证监控器是否健康```bash orewatch monitor status orewatch monitor connection-info orewatch monitor doctor

root@kitploit:~
用这些命令处理略微不同的任务:

- `monitor status` 显示单例守护进程和 API 是否在运行
- `monitor connection-info` 打印回环 API URL、令牌路径、监视器主目录和支持的引导客户端
- `monitor doctor` 打印确切的配置、状态数据库、日志和共享威胁数据路径

**3. 添加你想要单例监视的每个项目**```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

一个 OreWatch 守护进程可以同时监控所有这些项目。你不需要为每个仓库或每个 IDE 工作区单独设置监控器。

客户端集成方案

OreWatch 支持两种集成传输方式:

引导命令会输出以下其中一种格式:```json { "mcpServers": { "orewatch": { "command": "/absolute/path/to/orewatch", "args": [ "monitor", "mcp" ] } } }

root@kitploit:~
当 `orewatch monitor ide-bootstrap --client <client>` 可以解析本地控制台脚本时,现在会输出该绝对路径,而不是裸的 `orewatch`。如果你有旧的 MCP 配置仍然写着 `"command": "orewatch"`,请重新生成并替换旧条目。```json
{
  "orewatch": {
    "baseUrl": "http://127.0.0.1:48736",
    "tokenPath": "/path/to/api.token"
  }
}
Cursor, Claude Code, and Codex

这些客户端都使用相同的本地 MCP 桥接:```bash orewatch monitor mcp

root@kitploit:~
推荐设置:

1. 运行 `orewatch monitor quickstart /path/to/project --client <cursor|claude_code|codex>` 一次。
2. 将打印出的 MCP 块复制到相应的 MCP 客户端中。
3. 在该客户端中打开一个受监控的项目。
4. 让客户端通过 MCP 调用 OreWatch:
   - `orewatch_health`
   - `orewatch_check_dependency_add`
   - `orewatch_check_manifest`
   - `orewatch_override_dependency_add`
   - `orewatch_list_active_findings`
   - `orewatch_list_notifications`

注意:

- `monitor mcp` 是一个 stdio 服务器。如果你手动启动它,它在等待 MCP 客户端时会显示为空闲状态。
- MCP 桥接在启动时检查本地 API,并且在启用 `auto_start_on_client` 时可以自动启动单例监视器一次。
- 为了可靠的 IDE 启动,请使用 `monitor install` 安装后台监视器一次,这样在 MCP 桥接启动之前守护进程就已经可用。

##### VS Code

VS Code 集成应使用单例 localhost API,而不是 MCP 桥接。

推荐设置:

1. 运行 `orewatch monitor quickstart /path/to/project --client vscode`。
2. 从 `orewatch monitor ide-bootstrap --client vscode` 复制 `baseUrl` 和 `tokenPath`。
3. 将这些值接入你的本地 VS Code 扩展、任务或辅助工具中。
4. 在依赖添加、清单保存和警报刷新事件时调用 API。

VS Code 集成的推荐 API 用法:

- 在包管理器安装/添加流程之前调用 `POST /v1/check/dependency-add`
- 当支持的清单文件被保存或显式重新检查时调用 `POST /v1/check/manifest`
- 轮询 `GET /v1/findings/active` 和 `GET /v1/notifications` 以显示后台检测结果

##### JetBrains / PyCharm

JetBrains 和 PyCharm 使用与 VS Code 相同的 localhost API 约定。

推荐设置:

1. 运行 `orewatch monitor quickstart /path/to/project --client jetbrains`。
2. 从 `orewatch monitor ide-bootstrap --client jetbrains` 复制 API 块。
3. 在 JetBrains 插件、外部工具或本地辅助工具中使用返回的 `baseUrl` 和 `tokenPath`。
4. 在 IDE 中显示同步的依赖决策和存储的后台警报。

JetBrains 集成的推荐 API 用法:

- 使用 `POST /v1/check/dependency-add` 检查依赖添加
- 使用 `POST /v1/check/manifest` 重新检查 `package.json`、`requirements.txt`、`pyproject.toml`、`pom.xml`、`Gemfile`、`go.mod`、`Cargo.toml` 及相关支持的清单文件
- 获取 `GET /v1/findings/active` 和 `GET /v1/notifications` 用于持久警报面板或工具窗口

##### Xcode

Xcode 集成也应使用单例 localhost API,但有一个重要的范围边界:OreWatch 尚不解析原生的 Apple 依赖清单文件,如 `Package.resolved`、`Podfile.lock` 或 `Cartfile`。目前,Xcode 集成最适合用于:

- 在辅助工具、脚本或配套应用中显示后台发现和通知
- 在 Xcode 中打开的多语言仓库,其中也包含支持的清单文件,如 `package.json`、`pyproject.toml` 或 `Cargo.toml`
- 希望在 Xcode 工作时使用 macOS 菜单栏应用和通知中心警报的团队

推荐设置:

1. 运行 `orewatch monitor quickstart /path/to/project --client xcode`。
2. 从 `orewatch monitor ide-bootstrap --client xcode` 复制 API 块。
3. 在构建阶段脚本、辅助进程或自定义 Xcode 集成中使用返回的 `baseUrl` 和 `tokenPath`。
4. 轮询 `GET /v1/findings/active` 和 `GET /v1/notifications` 以获取用户可见的警报。
5. 如果 Xcode 工作区包含支持的非 Apple 清单文件,请在工作流程中调用 `POST /v1/check/manifest` 检查这些文件。

当前集成状态:

- Claude Code、Codex 和 Cursor:本仓库中包含一流的 MCP 桥接
- VS Code:本地 API 约定已有文档,但尚未提供第一方扩展
- JetBrains / PyCharm:本地 API 约定已有文档,但尚未提供第一方插件
- Xcode:本地 API 和菜单栏集成已有文档,但尚未提供第一方 Xcode 扩展,也没有原生的 Apple 清单文件解析器

#### 当 OreWatch 发现异常时

当后台监视器在受监控的项目中检测到受损包或 IoC 时,OreWatch:

- 在单例监视器的 `reports/` 目录下写入由监视器管理的 JSON 和 HTML 报告
- 将当前发现结果存储在监视器状态数据库中
- 存储带有可操作消息的通知条目
- 如果启用了终端通知,则发出终端警告
- 在 macOS 上,优先使用正在运行的单例菜单栏应用作为弹出通道
- 将最新的值得关注的警报固定在菜单栏下拉菜单顶部,以便快速查看
- 否则,如果启用了桌面通知,则回退到尽力而为的直接桌面通知
- 可以为远程或无头环境发送可选的 webhook 通知

使用内置的 CLI 审查界面来检查这些警报:```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

本地API和MCP桥接为IDE和代理提供相同的数据:

  • API:
    • GET /v1/findings/active
    • GET /v1/notifications
    • GET /v1/package-updates
    • POST /v1/package-updates/check
  • MCP:
    • orewatch_list_active_findings
    • orewatch_list_notifications
    • orewatch_list_package_updates
    • orewatch_check_package_updates

这是IDE、MCP客户端和编码代理在原始扫描完成后显示后台检测所支持的路径。

包更新建议仅用于通知。OreWatch为受监控的项目依赖项和OreWatch自身报告更新的版本,但不会修改清单、锁定文件或已安装的包。

原生macOS菜单栏应用

OreWatch现在包含一个原生macOS菜单栏应用,适用于希望拥有可视本地界面而不仅仅依赖CLI命令、MCP轮询或尽力而为的通知中心弹窗的用户。

将可选的Cocoa绑定安装到提供orewatch命令的同一运行时中。选择与您的安装方法匹配的命令:```bash

pip / source-checkout install

python3.14 -m pip install 'orewatch[mac-menubar]'

existing pipx install

pipx inject orewatch pyobjc-framework-Cocoa

Homebrew install

brew install rapticore/tap/orewatch

root@kitploit:~
然后启动菜单栏应用:```bash
orewatch monitor menubar

默认情况下,monitor menubar 会在后台重新启动应用并立即返回 shell 提示符。仅当您明确希望将其保持在终端中以便调试时,才使用 orewatch monitor menubar --foreground。

菜单栏应用会附加到同一个单例监视器上。它不会启动第二个监视器实例。如果监视器尚未安装或运行,应用将在首次启动时安装/启动它。

Homebrew 会将 Cocoa 绑定安装到 OreWatch 的隔离 libexec 环境中。如果 orewatch monitor menubar 报告 No module named 'AppKit',请使用 brew update && brew reinstall rapticore/tap/orewatch 刷新公式。对于 pip、pipx 和源码安装,仍需要将可选绑定添加到提供 orewatch 命令的同一个 Python 环境中。

在 macOS 上启用桌面通知时,单例监视器现在会保持一个单例菜单栏应用存活,并将其用作主要的弹窗界面。这避免了仅依赖来自守护进程的分离 osascript 调用,并为您提供持久的原生 UI 来显示新的发现结果。

当前的菜单栏构建以图标为先。旧的 OW 缩写和早期的 OreWatch 图标文字应视为遗留引用;应用现在更倾向于使用捆绑的品牌图标,仅在 macOS 无法渲染图像或需要显示警报计数时才回退到紧凑文本或徽章。

macOS 菜单栏应用为您提供以下功能:

  • 一个持久的菜单栏状态项,优先使用捆绑的品牌图标,必要时回退到紧凑文本或警报徽章
  • 一个紧凑的红色/粗体警报状态,用于新检测到的警报,保持可见直到您打开菜单
  • 一个活动发现和最高严重性的实时摘要
  • 一个头等的包更新部分,包含项目依赖更新、OreWatch 自更新状态、上次检查状态以及可复制的建议命令
  • 原生下拉菜单中的最近通知
  • 用于新存储的监视器警报的原生通知中心弹窗
  • 一个 添加工作区文件夹... 操作,用于将项目注册到单例监视器并运行初始快速扫描
  • 内置配置开关,用于桌面通知、终端通知、菜单栏保持活跃以及菜单栏驱动的弹窗
  • 一键操作,打开报告、监视器首页和监视器日志
  • 一键操作,打开监视器配置文件和配置文件夹
  • 菜单操作,检查包更新、刷新威胁情报、运行快速/完全扫描,以及启动/重启/停止单例监视器

推荐的 Mac 流程:

  1. 运行一次 orewatch monitor quickstart /path/to/project --client claude_code。
  2. 将可选绑定安装到与 orewatch 相同的环境中。
  3. 启动 orewatch monitor menubar。
  4. 保持菜单栏应用运行,以获得持久的原生审查界面,同时您的 IDE 和编码代理继续使用 MCP 或本地 API。

采用指南

为便于推广,请使用重点文档,而不是从头到尾阅读完整的 README:

  • docs/adoption-guide.md:本地开发者采用的最短路径
  • docs/local-api.md:精确的 localhost API 和 MCP 合约
  • docs/e2e-testing.md:贡献者和验证工作流程

推荐的采用顺序:

  1. 从单个仓库和单个用户开始。
  2. 使用 monitor quickstart 启用单例监视器。
  3. 连接一个客户端:Cursor、Claude Code、Codex、VS Code、PyCharm 或 Xcode。
  4. 确认发现结果出现在 orewatch monitor findings 和 orewatch monitor notifications 中。
  5. 在 macOS 上,添加 monitor menubar,以便用户获得持久的审查界面和弹窗传递。
  6. 在本地采用稳定后,添加 CI 扫描和可选的 webhook。

日常操作

常用操作命令:```bash

Background service lifecycle

orewatch monitor start orewatch monitor restart orewatch monitor stop orewatch monitor uninstall

Run the daemon in the foreground

orewatch monitor run

Launch the native macOS menu bar UI

orewatch monitor menubar

Trigger immediate scans

orewatch monitor scan-now orewatch monitor scan-now /path/to/project

Review detections and alerts

orewatch monitor findings orewatch monitor notifications

Reclaim disk space — prune accumulated backup manifests and orphaned staging

orewatch monitor cleanup orewatch monitor cleanup --keep-backups 5 --staging-max-age-seconds 3600

root@kitploit:~
**手动快照与签名操作:**```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

监控行为:

  • 快速扫描以包为中心,按计划执行并在通用清单更改后运行。
  • 完整扫描包含IoC检测,每晚、手动请求以及工作流或有效载荷文件更改后运行。
  • 在Linux上,配置默认位于~/.config/orewatch/singleton/,状态默认位于~/.local/state/orewatch/singleton/。
  • 在macOS上,配置默认位于~/Library/Application Support/OreWatch/singleton/,状态默认位于~/Library/Application Support/OreWatch/State/singleton/。
  • 共享威胁数据现在位于单例状态目录下的threat-data/final-data/。
  • monitor doctor会打印出单例监控器的确切config_path、state_db、log_file、final_data_dir以及服务模板目录。
  • 每个项目的策略覆盖可以存储在项目根目录的.ore-monitor.yml中。
  • monitor install现在会在可用时安装用户级的launchd或服务,否则回退到本地后台模式。

本地集成界面:

  • 当监控器守护进程运行时,OreWatch现在默认在127.0.0.1:48736上暴露一个仅限本地主机的API。
  • 该API使用一个每用户持有的bearer令牌,存储在监控器配置目录的api.token中,权限仅为所有者。
  • 对127.0.0.1:48736的直接请求如果没有Authorization: Bearer <token>将正确返回401 Unauthorized。
  • 代理和IDE客户端应通过orewatch monitor connection-info发现监控器,而不是猜测路径,并应在依赖检查请求中发送它们正在操作的project_path。
  • Claude Code、Codex和Cursor可以使用捆绑的MCP桥接器,它暴露了orewatch_health、orewatch_check_dependency_add、orewatch_check_manifest、orewatch_override_dependency_add、orewatch_list_active_findings、orewatch_list_notifications、和。

可选的异常门控实时更新配置:```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

root@kitploit:~
关键行为:
- 实时候选数据首先在暂存区构建;它们在收集期间不会覆盖活跃数据库。
- 大规模数据丢失、生态系统回归、空生态系统以及批量移除会阻止推广。
- 核心数据源中断在开源实时刷新中默认仅作为警告;生态系统级的数据丢失和移除仍会阻止不良推广。
- 仅警告的异常会被记录在状态和报告中,但不会阻止推广。
- 当已存在最后已知良好的数据集时,被拒绝的候选数据会保持该数据集活跃。
- 如果至少一个核心数据源成功,并且候选数据产生可用的生态系统数据,则允许首次运行从实时数据源引导。

**可选的通知Webhook配置:**```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

设置 webhook_format: slack 以针对 Slack 传入 Webhook。在此模式下,OreWatch 发送一个简单的 text 负载。


分发方案

该项目现在有两个不同的分发面:

  1. CLI 与监控器代码
  2. 监控器消费的威胁数据快照

它们应分开分发。

推荐的包分发方式

开发者最佳默认方案: 将扫描器作为普通 Python 包发布至 PyPI,并推荐使用 pipx 安装。

选择此方案的原因:

  • 该项目是一个 Python CLI 和后台监控器,因此通用 wheel 加源码分发包是最直接的分发产物。
  • pipx 为开发者提供了隔离的用户级安装,不会污染项目的虚拟环境。
  • CI 仍可通过 python3.14 -m pip install orewatch==<版本号> 安装相同版本。
  • 这样既保持了 CLI 升级路径简单,又让威胁数据更新可通过签名快照通道独立进行。

推荐的发包形态:

  • 将 sdist 和通用 wheel 构件发布至 PyPI。
  • 暴露 orewatch 控制台入口点。
  • 保留 ore-mal-pkg-inspector 作为临时兼容别名。
  • 为本地开发者安装提供文档:pipx install --python python3.14 orewatch
  • 为 CI 和固定版本自动化提供文档:python3.14 -m pip install orewatch==<版本号>

可用的辅助渠道: Homebrew tap 现已上线,适用于偏好 Brew 管理安装的 macOS 用户:```bash brew install rapticore/tap/orewatch

root@kitploit:~
Homebrew 依然是已发布的 PyPI 版本的便捷层,而非主要发布工件。

**对贡献者的最佳建议:** 保持当前的源码检出流程:```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 .

托管 macOS 部署

如果你正在通过 Kandji、Jamf Pro、Intune、Munki 或其他 macOS 软件分发系统部署 OreWatch,建议采用的模型与开发者 pipx 路径不同。

当前产品实际情况:

  • 目前仓库提供的是 Python 包,而不是经过公证的 macOS 安装程序包
  • 对于托管设备群,推荐的制品是基于已发布的 OreWatch wheel 构建的签名的扁平 .pkg
  • 威胁数据快照应继续与应用/运行时包分开分发

推荐的企业部署模型:

  1. 设备安装
    • 部署一个签名的 .pkg,用于安装 OreWatch 运行时和稳定的 orewatch CLI 占位程序
    • 如果需要在受管理的 Mac 上使用原生菜单栏应用,可选择性包含 mac-menubar 扩展
  2. 用户激活
    • 运行 orewatch monitor quickstart /path/to/project --client <client> 或等效的用户上下文引导程序
    • 此步骤独立执行,因为 OreWatch 的 monitor 有意设计为 每用户 模式,并会使用用户级别的 LaunchAgent 以及用户拥有的配置/令牌/状态
  3. 持续更新
    • 按照正常的软件生命周期更新运行时包
    • 通过签名的快照渠道或实时更新路径独立更新威胁数据快照

为何这种拆分很重要:

  • MDM 工具擅长在设备上安装代码
  • OreWatch 的 monitor、API 令牌和 launchd 服务是用户作用域的,因此应在已登录用户上下文中创建,而不是从机器作用域的包安装中强制注入

适用于托管 macOS 的推荐包结构:

  • 将专用运行时安装在稳定路径下,例如 /Library/Application Support/OreWatch/runtime
  • 放置稳定的占位程序,例如 /usr/local/bin/orewatch
  • 包含版本化包元数据,以便 MDM 平台能够干净地检测升级
  • 进行代码签名,并根据设备策略要求进行公证

特定厂商指南:

  • Kandji
    • 使用带有 安装程序包 (.pkg) 的自定义应用
    • 对于 OreWatch,优先选用 .pkg 而非 .dmg 或 .zip,因为运行时并非拖拽式应用
    • 使用 Self Service 或面向用户的上手步骤进行首次 monitor 激活
  • Jamf Pro
    • 将 .pkg 作为包上传,并通过策略或 Self Service 部署
    • 将用户激活与设备包部署分开,除非你有精心设计的用户上下文引导步骤
  • Microsoft Intune
    • 使用带有签名 .pkg 的 macOS LOB 应用
    • Intune 比其他渠道更严格:它期望一个真实的 .pkg,使用 Developer ID Installer 证书签名,并且包必须包含有效载荷
  • Munki
    • 发布 .pkg 以及 pkg 元数据,将 OreWatch 视为其他受管理的 macOS 软件一样处理
    • 当你希望拥有包仓库和可选的 Self Service 风格采用时,Munki 是一个很好的选择
  • 其他系统
    • 任何能够部署普通 macOS 扁平包并可选择性运行用户引导步骤的包分发系统都可以承载 OreWatch

有关更全面的部署手册,请参见 docs/managed-rollout.md。

推荐快照分发方式

威胁数据快照不应打包在 Python 包内部。它们的更新节奏不同,且已作为签名的托管制品得到支持。

开源/社区默认值: 通过异常门控的实时更新路径直接使用 openssf 和 osv。 企业默认值: 将版本化的签名快照发布到静态 HTTPS 托管服务,让客户端独立刷新。

推荐的托管目标:

  • GitHub Releases 资源
  • 支持 HTTPS 的 S3 或 Cloudflare R2
  • 任何提供不可变版本文件服务的静态 CDN 支持的存储桶

推荐的快照布局:

  • versions/<version>/manifest.json
  • versions/<version>/*.db
  • channels/stable.json

推荐的信任模型:

  • 将私有签名密钥离线保存
  • 仅将公钥验证密钥随客户端配置或包一起分发
  • 在下载/应用前,验证每个频道描述符和清单

推荐总体模型

对于生产版本,最清晰的设置是:

  • 将应用作为 PyPI 包分发
  • 使用 pipx 本地安装
  • 在 CI 中使用 pip 安装
  • 通过 HTTPS 将威胁数据作为已签名快照频道分发
  • 将源码检出视为开发路径,而非最终用户的安装方式

日志与调试

默认情况下,扫描器仅显示警告、错误和最终摘要。如需进行故障排除或详细的进度跟踪,请使用日志标志:

详细模式

查看进度消息和收集统计信息:```bash orewatch /path/to/project --verbose

root@kitploit:~
**输出包括:**
- 生态系统检测结果
- 文件解析进度
- 包提取计数
- 数据库查询详情
- IoC 扫描进度

**示例:**```
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

调试模式

查看详细的诊断信息以便进行故障排除:```bash orewatch /path/to/project --debug

root@kitploit:~
**Output includes:**
- 所有 INFO 级别消息
- 扫描中的文件路径
- SQL 查询执行详情
- 哈希计算
- 模式匹配结果
- 内部状态信息

**Use cases:**
- 调查为什么未检测到某个包
- 调试生态系统自动检测问题
- 报告带有详细上下文的问题
- 审计扫描器行为

### 收集器的日志记录

威胁情报收集器也支持 verbose 和 debug 模式:```bash
cd collectors

# See collection progress
python3 orchestrator.py --verbose

# Debug data source issues
python3 orchestrator.py --debug

注意: 所有日志输出到 stderr,保持 stdout 清洁以便输出 JSON 报告。这使得可以将扫描结果通过管道传递给其他工具,而不会被日志消息干扰。


输出与报告

报告结构

报告默认保存在 scan-output/ 目录中(或使用 --output 指定自定义路径)。OreWatch 会写入一个机器可读的 JSON 报告和一个带样式的 HTML 伴生报告,两者具有相同的基本文件名。JSON 产物包含威胁数据可用性元数据,并使用 SARIF 风格的 physicalLocation 对象来描述包发现结果,但这不是一个完整的 SARIF 2.1.0 文档。

示例报告:```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" } ] }

root@kitploit:~
**威胁数据字段:**
- `data_status`:`complete`、`partial`、`failed` 或 `not_applicable`
- `sources_used`:为请求的生态系统贡献了可用威胁数据的来源
- `experimental_sources_used`:扫描数据中包含的实验性来源
- `missing_ecosystems`:没有可用包威胁数据库的请求生态系统
- `promotion_decision`:对于现有数据扫描为空,否则为 `promoted`、`bootstrapped` 或 `rejected`
- `kept_last_known_good`:当实时候选被拒绝但先前的活动数据集仍然可用时为 `true`
- `anomalies`:实时刷新尝试期间引发的警告/阻止异常

---

### 理解结果

**严重性级别:**
- **CRITICAL:** 已知的恶意代码,带有活跃的漏洞利用或数据泄露
- **HIGH:** 恶意意图或域名抢注的强烈指标
- **MEDIUM:** 可疑模式或潜在漏洞
- **LOW:** 次要问题或信息性发现

**推荐操作:**
1. **严重/高危发现:** 立即移除受影响的包并调查影响
2. **查看IoC:** 检查恶意代码是否已执行(日志、网络活动)
3. **更新依赖项:** 用合法的替代品替换恶意包
4. **重新扫描:** 通过后续扫描验证修复
5. **报告:** 考虑向包注册表维护者报告

---

## CI/CD 集成

### GitHub Actions

**基本安全扫描:**```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/

高级检测失败模式:```yaml - name: Scan and fail on malicious packages run: | cd scanner orewatch ${{ github.workspace }} --latest-data --output report.json

root@kitploit:~
      # 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
root@kitploit:~
### 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

Jenkins Pipeline```groovy

pipeline { agent any

root@kitploit:~
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
    }
}

}

root@kitploit:~
### 预提交钩子

添加到 `.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"

故障排除

常见问题

“数据库未找到”错误

症状:``` ERROR: No usable threat data available for requested ecosystems: npm

root@kitploit:~
**原因:** 威胁数据收集失败,元数据不完整,或者请求的生态系统尚无可用的本地数据库。

**解决方案:**```bash
# Force recollection and require a complete result for the requested ecosystems
orewatch /path/to/project --latest-data --strict-data

注意: 如果此问题持续存在,请检查网络连接、文件系统权限,以及您是否故意请求了实验性源。

“未检测到软件包”警告

症状:``` WARNING: No packages detected in /path/to/project

root@kitploit:~
**可能的原因和解决方案:**

1. **错误的目录:** 确保你扫描的是正确的项目目录   ```bash
   ls /path/to/project  # Verify package.json or requirements.txt exists
  1. 不受支持或意外的清单: 打印确切支持的文档名 ```bash orewatch --list-supported-files
    root@kitploit:~
  2. 文件权限: 确保文件可读 ```bash ls -la /path/to/project/package.json
    root@kitploit:~

更新期间的连接错误

症状:``` ERROR: Error downloading npm: <urlopen error [Errno -3] Temporary failure in name resolution>

root@kitploit:~
**解决方案:**

1. **检查互联网连接:**   ```bash
   ping google.com
  1. 重试并增加超时时间: 编辑 collectors/config.yaml: ```yaml osv: timeout: 600 # Increase from default 300
    root@kitploit:~
  2. 使用缓存数据: 如果您之前已下载过数据: ```bash python3 orchestrator.py --skip-build # Skip download, rebuild from cache
    root@kitploit:~

权限拒绝错误

症状:``` ERROR: Error creating directory collectors/raw-data: Permission denied

root@kitploit:~
**解决方案:**```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

OreWatch 磁盘占用过高

症状: ~/Library/Application Support/OreWatch(macOS)或 $XDG_STATE_HOME/orewatch(Linux)增长到数十 GB。

原因(1.2.3 之前): 每次实时更新推送都会存档一份完整的威胁数据数据库副本(约 300 MB),且无保留策略。长期运行的监控器会在每个周期累积一份快照,无限增长。

修复: 升级至 1.2.3 或更高版本。备份现在仅为约 1 KB 的 SHA-256 清单,默认保留最近 30 个,并提供显式清理命令:

root@kitploit:~
orewatch clean```bash

Apply the configured retention policy now (default: keep 30 manifests,

remove staging entries older than 1 hour).

orewatch monitor cleanup

Reclaim everything except the most recent 5 backups and purge staging.

orewatch monitor cleanup --keep-backups 5 --staging-max-age-seconds 0

Tune retention in monitor config (live_updates section):

retain_backups: # how many backup manifests to keep

staging_max_age_seconds: # stale candidate-* staging cutoff

root@kitploit:~
#### 误报

**症状:** 合法软件包被标记为恶意。

**步骤:**

1. **验证发现:** 查看报告详情,包括严重性和描述

2. **检查版本:** 被标记的版本可能特定:   ```bash
   orewatch /path/to/project --verbose
  1. 报告误报: 如果确认错误:
    • 在 https://github.com/rapticore/ore-mal-pkg-inspector/issues 提交问题并附上详情

调试模式用于调查

启用详细日志记录:```bash

Scanner debug mode

orewatch /path/to/project --debug 2> debug.log

Collector debug mode

cd collectors python3 orchestrator.py --debug 2> collector-debug.log

root@kitploit:~
**审查日志:** 检查 `debug.log` 以获取详细的执行跟踪,包括:
- 扫描的文件路径
- 执行的 SQL 查询
- 模式匹配结果
- 错误堆栈跟踪

---

## 常见问题解答

### 我应该多久更新一次威胁情报?

**建议:**
- **生产/CI 环境:** 每日自动更新
- **开发工作站:** 至少每周更新
- **安全新闻发布后:** 当新威胁被宣布时立即更新

恶意软件包持续发布。每日更新确保最新的防护。

### 如何更新威胁情报数据?

使用 `--latest-data` 标志运行扫描器以强制更新:```bash
orewatch /path/to/project --latest-data

对于在CI/CD中的自动更新,使用--latest-data标志(例如每天)安排定期扫描。仅当您明确希望将Phylum衍生的数据包含在重建中时,才添加--include-experimental-sources。

注: 首次扫描会自动收集数据,因此手动更新仅用于刷新现有数据库。

威胁数据来自哪里?

默认数据库是从项目的核心威胁源构建的:

  • openssf
  • osv

扫描器还可以包含项目的实验性源集:

  • phylum 配合 --include-experimental-sources

socketdev 在仓库中作为禁用的占位符存在,不是默认收集路径的一部分。

关于数据源、收集和处理的技术细节,请参见 ARCHITECTURE.md。

此工具是否会修改我的代码或依赖项?

不会。 OreWatch执行只读操作。它:

  • ✅ 读取依赖文件
  • ✅ 查询威胁数据库
  • ✅ 扫描文件模式
  • ✅ 生成报告

它从不:

  • ❌ 修改包文件
  • ❌ 安装或删除包
  • ❌ 更改项目配置
  • ❌ 执行包代码

如果我的软件包被标记为恶意怎么办?

采取以下步骤:

  1. 验证发现: 检查报告的详细信息和严重性
  2. 审查证据: 检查描述和检测到的行为
  3. 检查版本: 确定是否影响特定版本
  4. 如果是误报:
    • 向数据源维护者报告误报
    • 在我们的GitHub上提交带有详细信息的issue
  5. 如果确实为恶意:
    • 立即移除该包
    • 审查最近的代码提交以查找损害
    • 检查日志中是否有可疑活动
    • 更新到安全的替代品

我可以在离线时使用吗?

部分可以。

离线扫描: ✅ 是的,一旦数据库初始化完成```bash

Online: Initial setup (one-time - runs automatically on first scan)

orewatch /path/to/project

Offline: Subsequent scans work with local databases

orewatch /path/to/project

root@kitploit:~
**离线更新:** ❌ 否,威胁情报收集需要互联网访问以从安全来源获取数据。

**隔离环境:** 您可以:
1. 在联网机器上下载数据库
2. 将SQLite文件传输到由 `orewatch monitor doctor` 显示的单个 `final_data_dir` 中
3. 使用可能过时的数据离线运行扫描

### 与 npm audit 或 pip-audit 相比如何?

**不同目的:**

**npm audit / pip-audit:**
- 专注于已知的CVE漏洞
- 根据公告数据库检查包版本
- 由包注册表团队维护

**OreWatch:**
- 专注于恶意包(不仅仅是存在漏洞的包)
- 检测域名抢注、恶意软件、供应链攻击
- 跨生态系统的覆盖
- 针对活跃威胁的IoC检测

**最佳实践:** 同时使用**两者**:```bash
# Check for vulnerabilities
npm audit
pip-audit

# Check for malicious packages
orewatch /path/to/project

这与私有包注册表兼容吗?

依赖项扫描: ✅ 是的,扫描器会读取你的依赖文件,无论包来自何处。

威胁情报: ⚠️ 有限。我们的数据库覆盖公共注册表(如 npmjs.com、pypi.org 等)。除非你添加自定义威胁数据,否则私有注册表上的恶意包将不会被检测到。

自定义威胁数据: 你可以使用自己的恶意包列表扩展数据库。请联系我们获取此高级用例的指导。

性能影响如何?

扫描时间:

  • 小型项目(< 50 个包):< 5 秒
  • 中型项目(50-500 个包):5-30 秒
  • 大型项目(500+ 个包):30-120 秒

影响因素:

  • IoC 扫描会增加 10-50% 的开销(如果不需要,可以使用 --no-ioc 禁用)
  • 首次运行可能较慢,因为数据库需要加载到内存中

优化建议:```bash

Scan specific files instead of entire directory

orewatch --file package.json

root@kitploit:~
---

## 贡献

我们欢迎各类贡献!无论是报告错误、提出功能建议还是贡献代码,您的帮助都能让 OreWatch 变得更好。

**报告错误或请求功能:**
- GitHub Issues:https://github.com/rapticore/ore-mal-pkg-inspector/issues

**贡献代码:**
- 有关开发环境搭建、代码风格、测试及拉取请求流程的详细指南,请参阅 [CONTRIBUTING.md](https://github.com/rapticore/ore-mal-pkg-inspector/blob/HEAD/CONTRIBUTING.md)

**问题或讨论:**
- GitHub Discussions:https://github.com/rapticore/ore-mal-pkg-inspector/discussions

---

## 安全策略

安全是我们的首要任务。OreWatch 是一款安全工具,我们非常重视漏洞。

### 报告安全漏洞

**请勿为安全漏洞公开创建 GitHub Issue。**

请私下报告:

**电子邮件:** [email protected]

**请包含:**
- 漏洞描述
- 复现步骤
- 潜在影响
- 建议修复方案(如适用)
- 您的联系方式以便跟进

### 响应时间线

- **确认:** 48 小时内
- **初步评估:** 7 天内
- **修复时间线:** 视严重性而定
  - 严重:7-14 天
  - 高:14-30 天
  - 中/低:30-60 天

### 安全最佳实践

使用 OreWatch 时:

**应当:**
- ✅ 以最小权限运行(无需 root/管理员)
- ✅ 定期更新威胁情报
- ✅ 及时审查扫描报告
- ✅ 集成到 CI/CD 中以实现持续保护
- ✅ 保持工具更新至最新版本

**不应:**
- ❌ 未经调查就忽略扫描结果
- ❌ 在生产环境中禁用 IoC 扫描
- ❌ 共享来自不受信任源的数据库文件
- ❌ 不必要地使用提升的权限运行

### 漏洞披露

我们遵循协调披露流程:
1. 漏洞私下报告
2. 开发并测试修复方案
3. 发布安全公告
4. 修复方案可用后公开披露

### 安全名人堂

我们感谢负责任披露漏洞的安全研究人员:

*名单将在收到报告后持续维护*

---

### 社区请求

对功能进行投票或提出建议:
- **GitHub Discussions:** https://github.com/rapticore/ore-mal-pkg-inspector/discussions
- **功能请求:** https://github.com/rapticore/ore-mal-pkg-inspector/issues

### 贡献路线图

我们根据以下因素确定功能优先级:
- 安全影响
- 社区需求
- 维护可持续性
- 与项目目标一致

要影响路线图:
1. 提出包含详细用例的功能请求
2. 参与讨论
3. 贡献实现代码(欢迎 PR!)

---

## 路线图

OreWatch 当前可用于:

- 在 npm、PyPI、Maven、RubyGems、Go 及 Cargo 上执行本地 CLI 扫描
- 为多个项目运行一个每用户后台监控器
- 支持 Cursor、Claude Code 和 Codex 的 MCP 集成
- 支持 VS Code、JetBrains / PyCharm 和 Xcode 辅助工具的 localhost API 集成
- macOS 菜单栏审查和弹窗通知

近期优先事项:

- 第一方 VS Code 和 JetBrains / PyCharm 集成示例或轻量插件
- 比本地弹窗更强的面向用户的通知工作流
- 通过 CLI 和 UI 实现更清晰的项目策略管理
- 更丰富的监控器报告和采用文档

中期优先事项:

- 从监控器和 MCP 界面实现更广泛的项目扫描工作流
- 更好的组织级推广指南
- 更稳健的外部告警传递和升级渠道
- 更深入的 IDE 专属用户体验,而非仅提供 API 集成指南

当前已知边界:

- Xcode 集成目前最适合告警可见性和多语言仓库。OreWatch 尚不支持解析 Apple 原生命清单,例如 `Package.resolved`、`Podfile.lock` 或 `Cartfile`。

长期方向:

- 原生 Apple 生态系统清单支持
- 更强的第一方编辑器集成
- 在现有 macOS 菜单栏路径之外,实现更广泛的操作系统用户体验一致性

请参阅 [docs/roadmap.md](https://github.com/rapticore/ore-mal-pkg-inspector/blob/HEAD/docs/roadmap.md) 获取更偏重采用的路线图视图。

---

## 许可证

MIT 许可证

版权所有 (c) 2025 Rapticore

特此免费授予任何获得本软件副本及相关文档文件(以下简称“软件”)的人不受限制地处理本软件的权利,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售本软件副本的权利,并允许获得本软件的人在满足以下条件的情况下这样做:

上述版权声明和本许可声明应包含在本软件的所有副本或实质部分中。

本软件按“原样”提供,不做任何形式的明示或默示保证,包括但不限于对适销性、特定用途的适用性和非侵权的保证。在任何情况下,作者或版权持有人均不对任何索赔、损害或其他责任负责,无论这些责任是基于合同、侵权或其他原因,均与本软件或其使用或其他交易有关。

---

## 支持

### 获取帮助

**文档:** 您正在阅读它!大多数问题都可以从这里开始。

**GitHub Discussions:** 用于提问、想法和社区互动:
- https://github.com/rapticore/ore-mal-pkg-inspector/discussions

**GitHub Issues:** 用于错误报告和功能请求:
- https://github.com/rapticore/ore-mal-pkg-inspector/issues

**电子邮件:** 用于安全漏洞和私人咨询:
- [email protected]

### 专业支持

对于需要以下服务的组织:
- 自定义集成
- 基于 SLA 的支持
- 私有部署协助
- 自定义威胁情报源

联系:[email protected]

---

## 致谢

### 项目起源

本项目是从 [OreNPMGuard](https://github.com/rapticore/OreNPMGuard) 仓库中提取出来的,以在扩展能力的同时保持项目聚焦。

**OreNPMGuard**(2025年12月)专注于 Shai-Hulud npm 攻击检测,涵盖 738 多个受影响包及深度 IoC 分析。在其开发过程中,我们认识到需要更广泛的多生态系统保护,因此创建了 OreWatch 作为一个独立工具,为所有主要包生态系统的更广泛开发者社区服务。

### 相关项目

- **[OreNPMGuard](https://github.com/rapticore/OreNPMGuard)** - 专门的 Shai-Hulud npm 扫描器
---

**由 Rapticore 安全研究团队构建**

*保护软件供应链,一次扫描一步。*
下载工具
我想...使用此路径从这开始
立即扫描一个仓库CLI 扫描orewatch /path/to/project
在后台保护本地开发单例监控orewatch monitor quickstart /path/to/project --client claude_code
从 Cursor、Claude Code 或 Codex 使用 OreWatchMCP 桥接`orewatch monitor quickstart /path/to/project --client <cursor
集成到 VS Code、PyCharm 或 Xcode本地主机 APIorewatch monitor quickstart /path/to/project --client vscode
获取可见的 macOS 提醒和原生审查界面菜单栏应用orewatch monitor menubar
在 CI 中验证构建一次性 CLI 扫描orewatch . --strict-data
选项短选项描述默认值
--file-f要扫描的特定文件路径(跳过目录检测)无
--ecosystem-e强制指定生态系统:npm、pypi、maven、rubygems、go、cargo自动检测
--output-o主要 JSON 报告的自定义输出路径;OreWatch 还会写入同名的 HTML 报告scan-output/malicious_packages_report_{timestamp}.json
--no-summary跳过将报告摘要打印到控制台否
--no-ioc跳过 IoC(折中指标)扫描否
--ioc-only仅扫描 IoC,跳过软件包检查否
--latest-data在扫描前强制进行分段实时刷新和异常门控升级否
--strict-data如果任何请求的生态系统存在部分或缺失的威胁数据,则失败否
--include-experimental-sources在威胁数据刷新期间包含实验性收集器否
--list-supported-files打印所有支持的依赖清单文件名并退出否
--verbose-v显示 INFO 级别日志(进度消息)否
--debug显示 DEBUG 级别日志(详细诊断信息)否
客户端传输方式引导命令备注
Claude CodeMCPorewatch monitor ide-bootstrap --client claude_code一级 MCP 桥接
CodexMCPorewatch monitor ide-bootstrap --client codex一级 MCP 桥接
CursorMCPorewatch monitor ide-bootstrap --client cursor一级 MCP 桥接
VS Code本地 APIorewatch monitor ide-bootstrap --client vscode未捆绑扩展;使用 localhost API
JetBrains / PyCharm本地 APIorewatch monitor ide-bootstrap --client jetbrains未捆绑插件;使用 localhost API
Xcode本地 APIorewatch monitor ide-bootstrap --client xcode最适合发现/通知和多语言仓库
systemd
  • monitor quickstart /path/to/project --client claude_code是本地LLM代理设置中最简单的首次运行流程。
  • --workspace-root /path/to/workspace仍然在一个版本中作为已弃用的兼容别名被接受,但不再改变监控器身份、令牌位置或服务命名。
  • 在auto模式下,如果原生的launchd或systemd设置失败,OreWatch现在会回退到本地后台模式,而不是中止设置。
  • monitor install --ide-bootstrap会打印出针对Claude Code、Codex、Cursor、VS Code、JetBrains / PyCharm和Xcode的复制粘贴引导代码段。
  • monitor connection-info会打印回环API基础URL、令牌路径、单例监控器作用域/主目录以及守护进程是否已在运行。
  • monitor ide-bootstrap会再次打印当前的MCP/API引导代码段,无需重新安装任何内容。
  • monitor mcp运行一个本地MCP桥接器,将OreWatch依赖检查暴露给Claude Code、Codex和Cursor。
  • monitor findings、monitor notifications和monitor package-updates提供了用于后台检测和更新建议的内置审查界面。
  • monitor menubar启动一个原生的macOS菜单栏应用,由单例监控器和发现存储支持。
  • monitor mcp是一个stdio服务器,因此它会在启动后等待一个MCP客户端。它现在将就绪和自动启动状态写入stderr,而不是stdout。
  • 对于IDE或MCP客户端启动,请使用monitor install,这样当客户端启动monitor mcp或调用API时,后台守护进程已经可用。
  • make test-e2e-clients引导合成工作区,并运行跨生态系统的MCP/API客户端矩阵(针对Claude Code、Codex和Cursor)。
  • 开源/社区安装默认从上游核心源(openssf和osv)进行异常门控的实时更新。候选数据暂存在用户拥有的监控器状态目录中,检查是否有异常下降/删除,然后才被提升到活动数据库中。
  • 托管/企业安装可以改用用户在监控器配置文件中通过snapshots.channel_url或snapshots.manifest_url配置的签名通道描述符或清单,监控器使用snapshots.public_key_path验证它们。
  • 签名的快照工作流当前要求本地机器上安装openssl。
  • 跨生态系统客户端集成测试指南记录在docs/e2e-testing.md中。
  • orewatch_list_package_updates
    orewatch_check_package_updates
  • VS Code、JetBrains / PyCharm和Xcode集成应调用相同的本地主机API进行依赖添加检查、清单重新检查、活动发现、最近通知和包更新建议。
  • 确切的请求和响应格式记录在docs/local-api.md中。