
ماسح ضوئي متعدد الأنظمة لاكتشاف الحزم الخبيثة وأمن سلسلة التوريد
كشف الحزم الضارة عبر أنظمة متعددة وماسح أمان سلسلة التوريد
أداة أمان من المستوى الإنتاجي لاكتشاف الحزم الضارة وتهديدات سلسلة التوريد عبر أنظمة npm وPyPI وMaven وRubyGems وGo وCargo. تستفيد من جمع استخبارات التهديدات الآلي من مصادر أمنية موثوقة لتحديد التبعيات المخترقة في مشاريعك.
OreWatch هو اسم المنتج واسم حزمة PyPI. لا يزال مسار المستودع المصدر الحالي يستخدم ore-mal-pkg-inspector.
https://github.com/rapticore/ore-mal-pkg-inspector/issues/2#issue-4215016110
https://github.com/rapticore/ore-mal-pkg-inspector/issues/3#issue-4215017945
https://github.com/rapticore/ore-mal-pkg-inspector/issues/4#issue-4215019385
https://github.com/rapticore/ore-mal-pkg-inspector/issues/5#issue-4215021599
هجمات سلسلة التوريد أصبحت الآن ناقل التهديد الرئيسي لاختراق البرمجيات. في عام 2024 وحده، تم نشر آلاف الحزم الضارة على npm وPyPI ومسجلات حزم أخرى، مستهدفة المطورين بانتحال الكتابة (typosquatting)، والارتباك في التبعيات (dependency confusion)، وحملات برمجيات خبيثة متطورة مثل Shai-Hulud.
التحدي: تحتاج المؤسسات والمطورون إلى:
الفجوة: الحلول الحالية غالبًا ما تكون:
OreWatch يعالج هذه التحديات من خلال توفير:
تغطية شاملة متعددة الأنظمة: أداة واحدة لحزم npm وPyPI وMaven وRubyGems وGo وCargo
استخبارات تهديدات آلية: جمع ودمج البيانات ديناميكيًا من مصادر أبحاث أمنية موثوقة
كشف مؤشرات الاختراق النشط: تحديد أنماط هجمات Shai-Hulud ومؤشرات أخرى للتعليمات البرمجية الخبيثة تتجاوز مطابقة اسم الحزمة
جاهز للتكامل مع CI/CD: مصمم للتكامل السلس مع GitHub Actions وGitLab CI وJenkins ومنصات أتمتة أخرى
مفتوح المصدر وشفاف: رؤية كاملة لمنطق الكشف ومصادر البيانات ومنهجية الفحص
دعم متعدد الأنظمة يفحص حزم npm وPyPI وMaven وRubyGems وGo وCargo مع كشف تلقائي للنظام من هيكل المشروع.
قاعدة بيانات استخبارات تهديدات موحدة يتحقق من قواعد بيانات الحزم الضارة التي يتم جمعها ديناميكيًا من مصادر أبحاث أمنية موثوقة.
كشف تلقائي للنظام البيئي يحدد الأنظمة بذكاء من هيكل الدليل وأسماء الملفات، ويمكنه فحص أنظمة متعددة في تشغيل واحد.
كشف مؤشرات الاختراق (IoC) يفحص أنماط هجمات Shai-Hulud (النسخة الأصلية و 2.0)، والربطات الخبيثة، وسير العمل المشبوه، وملفات الحمولة المعروفة.
تكامل Shai-Hulud يستخدم المرجع التبادلي لحزم npm مقابل قائمة الحزم المتأثرة الشاملة من Shai-Hulud من OreNPMGuard.
تقارير JSON منظمة ينشئ تقارير JSON قابلة للقراءة آليًا مع بيانات وصفية صريحة لبيانات التهديد ومواقع ملفات بنمط SARIF للنتائج.
صيغ إدخال مرنة يدعم ملفات التبعيات القياسية (package.json و requirements.txt إلخ) وقوائم الحزم العامة (نص، JSON، YAML).
تسجيل جاهز للإنتاج
مستويات تفصيل قابلة للتكوين مع علامات --verbose و --debug لاستكشاف الأخطاء ومسارات التدقيق.
آمن وسريع عمليات للقراءة فقط دون تعديل في الكود الخاص بك، محسّنة لفحص قواعد الأكواد الكبيرة بكفاءة.
مقارنة بأدوات النظام الواحد معظم ماسحات الأمان تركز على مدير حزم واحد. OreWatch يوفر حماية موحدة عبر ستة أنظمة رئيسية، وهو أمر أساسي لبيئات التطوير الحديثة متعددة اللغات.
مقارنة بقوائم التهديدات اليدوية قوائم الحزم الضارة الثابتة تصبح قديمة بسرعة. أدوات الجمع الآلية لدينا تجلب استخبارات تهديدات جديدة يوميًا من مصادر موثوقة متعددة.
مقارنة بكشف اسم الحزمة فقط التحقق من أسماء الحزم فقط يغفل الهجمات المتطورة. كشف مؤشرات الاختراق (IoC) يحدد أنماط الكود الخبيثة حتى في الحزم غير المدرجة في قوائم الحظر.
مقارنة بمراجعات الأمان اليدوية المراجعات اليدوية للتبعيات تستغرق وقتًا وعرضة للأخطاء. الفحص الآلي يتيح التحقق المستمر من الأمان في كل بناء.
مقارنة بالأدوات التجارية الصندوق الأسود الأدوات الاحتكارية تفتقر إلى الشفافية في منطق الكشف. كمشروع مفتوح المصدر، كل قاعدة كشف ومصدر بيانات قابل للتدقيق.
قصة النشأة وُلد OreWatch من تطوير OreNPMGuard، وهو ماسح متخصص لهجمات Shai-Hulud على npm. خلال ذلك المشروع، أدركنا الحاجة إلى تغطية أوسع متعددة الأنظمة تتجاوز npm. في ديسمبر 2025، قمنا باستخراج وتعزيز قدرات الكشف متعددة الأنظمة في هذه الأداة المستقلة، مع الحفاظ على تركيز OreNPMGuard على npm مع تمكين OreWatch من خدمة مجتمع المطورين الأوسع عبر جميع أنظمة الحزم الرئيسية.
إذا كنت تتبنى OreWatch لأول مرة، اختر أصغر مسار يناسب سير عملك:
تسلسل التشغيل الأول الموصى به لمعظم المطورين:
pip install . أو الحزمة المنشورة.orewatch monitor quickstart /path/to/project --client <your-client>.orewatch monitor status.orewatch monitor menubar للإشعارات وواجهة مستخدم محلية.إذا كنت تريد دليل إعداد أقصر مع أوامر نسخ ولصق، استخدم docs/adoption-guide.md.
يمكن تثبيت OreWatch عبر pipx (موصى به)، أو Homebrew (macOS)،
أو pip، أو من المصدر. جميع الطرق تنتج أمر CLI orewatch.
pipx يقوم بتثبيت OreWatch في بيئته المعزولة
مع جعل أمر orewatch متاحًا عالميًا. هذا هو الخيار الأفضل لمعظم المطورين.```bash
python3.14 -m pip install --user pipx python3.14 -m pipx ensurepath
pipx install --python python3.14 orewatch
orewatch --help
orewatch monitor menubar
إذا قمت بالفعل بتثبيت `orewatch` باستخدام pipx وترغب في إضافة تطبيق شريط القوائم في macOS لاحقًا، قم بحقن روابط Cocoa في نفس بيئة pipx:```bash
pipx inject orewatch pyobjc-framework-Cocoa
ترقية:```bash pipx upgrade orewatch
**إلغاء التثبيت:**```bash
pipx uninstall orewatch
للمستخدمين على macOS الذين يفضلون التثبيت المُدار عبر Homebrew:```bash
brew tap rapticore/tap
brew install rapticore/tap/orewatch
orewatch --help
orewatch monitor menubar
**ترقية:**```bash
brew update && brew upgrade orewatch
إلغاء التثبيت:```bash brew uninstall orewatch brew untap rapticore/tap # optional — removes the tap
> **ملاحظة:** تتضمن صيغة Homebrew روابط Cocoa التي تتطلبها `orewatch monitor menubar`. إذا أبلغ تثبيت أقدم لـ Homebrew عن `ModuleNotFoundError: No module named 'AppKit'`، قم بتشغيل `brew update && brew reinstall rapticore/tap/orewatch` حتى تعيد الصيغة بناء بيئة Python المعزولة الخاصة بها مع دعم شريط القوائم.
#### الخيار 3 — pip
استخدم `pip` لخطوط أنابيب CI أو صور Docker أو عندما تدير بيئات virtualenvs الخاصة بك:```bash
# Install into an active Python 3.14 virtualenv or user site
python3.14 -m pip install orewatch
# Pin a version for reproducible CI builds
python3.14 -m pip install orewatch==1.3.0
# If you want the macOS menu bar app on a fresh install, use this instead:
# python3.14 -m pip install 'orewatch[mac-menubar]'
# Verify
orewatch --help
ترقية:```bash python3.14 -m pip install --upgrade orewatch
#### الخيار 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
orewatch --help
orewatch --list-supported-files
orewatch .
#### ملاحظات المنصة
| المنصة | مصدر بايثون | ملاحظات |
|---|---|---|
| **ماك** (Homebrew Python) | `brew install [email protected]` | موصى به لمستخدمي Homebrew |
| **ماك** (pyenv) | `pyenv install 3.14` | الأفضل للإعدادات متعددة الإصدارات |
| **أوبونتو / دبيان** | `sudo apt install python3.14` أو pyenv | تحقق من أن توزيعتك تحتوي على 3.14+ |
| **فيدورا / RHEL** | `sudo dnf install python3.14` أو pyenv | — |
| **ويندوز (WSL)** | pyenv أو حزمة النظام | ويندوز الأصلي غير مختبر |
> **مطلوب بايثون 3.14.** يستخدم OreWatch ميزات لغة تم تقديمها في
> بايثون 3.14. الإصدارات الأقدم ستفشل عند الاستيراد.
#### استكشاف أخطاء التثبيت وإصلاحها
| العَرَض | الحل |
|---|---|
| `command not found: orewatch` | تأكد من أن موقع التثبيت موجود في `PATH` الخاص بك. بالنسبة لـ pipx: قم بتشغيل `pipx ensurepath` وأعد تشغيل الصدفة. |
| `ModuleNotFoundError` عند الاستيراد | قد يكون لديك إصدارات متعددة من بايثون. تأكد من أن وقت التشغيل خلف `orewatch` هو بايثون 3.14+ وأعد التثبيت باستخدام المفسر المطابق. |
| فشل تثبيت pipx مع أخطاء الحل | قم بترقية pipx: `python3.14 -m pip install --upgrade pipx` |
| لم يتم العثور على `orewatch` في Homebrew بعد التثبيت | قم أولاً بتشغيل `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...
Ecosystem: npm, pypi Total Packages Scanned: 45 Malicious Packages Found: 0 IoCs Found: 0
✅ No malicious packages or IoCs detected
إذا كنت تريد من 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
orewatch --file package.json orewatch --file requirements.txt orewatch --file pom.xml orewatch --file Gemfile orewatch --file go.mod orewatch --file Cargo.toml
**فرض نظام بيئي محدد:**```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
orewatch --file packages.txt --ecosystem pypi
orewatch --file packages.json --ecosystem npm
orewatch --file packages.yaml --ecosystem npm
### الاستخدام المتقدم
**مسار الإخراج المخصص:**```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
orewatch /path/to/project
orewatch /path/to/project --no-ioc
orewatch /path/to/project --ioc-only
**الوضع الصامت:**```bash
# Generate report without console summary (useful for scripts)
orewatch /path/to/project --no-summary
ضوابط بيانات التهديدات:```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
**المسح الدفعي:**```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
orewatch monitor quickstart /path/to/project --client claude_code
`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
استخدم هذه الأوامر لمهام مختلفة قليلاً:
- `monitor status` يعرض ما إذا كانت الخادم الخفي للفرد والـ API يعملان
- `monitor connection-info` يطبع عنوان URL للـ API الحلقي، مسار الرمز المميز، مسار المراقب المنزلي، وعملاء التمهيد المدعومين
- `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
One OreWatch daemon can watch all of these projects at once. You do not need a separate monitor per repository or per IDE workspace.
يدعم OreWatch نظامي نقل للتكامل:
تقوم أوامر التمهيد بطباعة أحد هذه الأشكال:```json { "mcpServers": { "orewatch": { "command": "/absolute/path/to/orewatch", "args": [ "monitor", "mcp" ] } } }
عندما يتمكن `orewatch monitor ide-bootstrap --client <client>` من حل النص المحلي لوحدة التحكم، فإنه الآن يصدر المسار المطلق بدلاً من `orewatch` المجرد. إذا كان لديك تكوين MCP قديم لا يزال يقول `"command": "orewatch"`، قم بتجديده واستبدال الإدخال القديم.```json
{
"orewatch": {
"baseUrl": "http://127.0.0.1:48736",
"tokenPath": "/path/to/api.token"
}
}
هؤلاء العملاء جميعهم يستخدمون نفس جسر MCP المحلي:```bash orewatch monitor mcp
الإعداد الموصى به:
1. قم بتشغيل `orewatch monitor quickstart /path/to/project --client <cursor|claude_code|codex>` مرة واحدة.
2. انسخ كتلة MCP المطبوعة إلى عميل MCP المطابق.
3. افتح مشروعًا مراقبًا في ذلك العميل.
4. دع العميل يستدعي OreWatch عبر MCP من أجل:
- `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 API localhost الفردي بدلاً من جسر MCP.
الإعداد الموصى به:
1. قم بتشغيل `orewatch monitor quickstart /path/to/project --client vscode`.
2. انسخ `baseUrl` و `tokenPath` من `orewatch monitor ide-bootstrap --client vscode`.
3. قم بتوصيل تلك القيم في إضافة VS Code المحلية أو مهمة أو مساعد.
4. استدعِ API على أحداث dependency-add و manifest-save و alert-refresh.
استخدام API الموصى به لتكامل VS Code:
- استدعِ `POST /v1/check/dependency-add` قبل تدفقات تثبيت/إضافة مدير الحزم
- استدعِ `POST /v1/check/manifest` عند حفظ بيان مدعوم أو إعادة فحصه صراحة
- استطلاع `GET /v1/findings/active` و `GET /v1/notifications` لعرض الاكتشافات الخلفية
##### JetBrains / PyCharm
تستخدم JetBrains و PyCharm نفس عقد API localhost مثل VS Code.
الإعداد الموصى به:
1. قم بتشغيل `orewatch monitor quickstart /path/to/project --client jetbrains`.
2. انسخ كتلة API من `orewatch monitor ide-bootstrap --client jetbrains`.
3. استخدم `baseUrl` و `tokenPath` المُرجَعين في إضافة JetBrains أو أداة خارجية أو مساعد محلي.
4. اعرض قرارات التبعية المتزامنة والتنبيهات الخلفية المخزنة داخل IDE.
استخدام API الموصى به لتكامل JetBrains:
- تحقق من إضافات التبعية باستخدام `POST /v1/check/dependency-add`
- أعد فحص `package.json`, `requirements.txt`, `pyproject.toml`, `pom.xml`, `Gemfile`, `go.mod`, `Cargo.toml`، والبيانات المدعومة ذات الصلة باستخدام `POST /v1/check/manifest`
- جلب `GET /v1/findings/active` و `GET /v1/notifications` للوحات التنبيه الدائمة أو نوافذ الأدوات
##### Xcode
يجب أن تستخدم تكاملات Xcode أيضًا API localhost الفردي، ولكن هناك حدود نطاق مهمة: OreWatch لا يحلل بعد بيانات تبعية Apple الأصلية مثل `Package.resolved` أو `Podfile.lock` أو `Cartfile`. حاليًا، تكامل Xcode هو الأفضل من أجل:
- عرض الاكتشافات والإشعارات الخلفية في مساعد أو سكريبت أو تطبيق مصاحب
- مستودعات متعددة اللغات مفتوحة في Xcode تحتوي أيضًا على بيانات مدعومة مثل `package.json` أو `pyproject.toml` أو `Cargo.toml`
- فرق تريد تطبيق شريط قوائم macOS وتنبيهات مركز الإشعارات أثناء العمل في Xcode
الإعداد الموصى به:
1. قم بتشغيل `orewatch monitor quickstart /path/to/project --client xcode`.
2. انسخ كتلة API من `orewatch monitor ide-bootstrap --client xcode`.
3. استخدم `baseUrl` و `tokenPath` المُرجَعين من سكريبت مرحلة بناء أو عملية مساعدة أو تكامل Xcode مخصص.
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 بما يلي:
- يكتب تقارير JSON و HTML يديرها المراقب تحت دليل `reports/` للمراقب الفردي
- يخزن الاكتشاف النشط في قاعدة بيانات حالة المراقب
- يخزن إدخال إشعار برسالة قابلة للتنفيذ
- يصدر تحذير طرفي إذا كانت الإشعارات الطرفية مفعلة
- على 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 نفس البيانات لبيئات التطوير المتكاملة (IDEs) والعوامل:
GET /v1/findings/activeGET /v1/notificationsGET /v1/package-updatesPOST /v1/package-updates/checkorewatch_list_active_findingsorewatch_list_notificationsorewatch_list_package_updatesorewatch_check_package_updatesهذا هو المسار المدعوم لبيئات التطوير المتكاملة (IDEs) وعملاء MCP وعوامل البرمجة لعرض الاكتشافات الخلفية بعد انتهاء الفحص الأصلي.
إرشادات تحديث الحزم هي للإعلام فقط. يبلغ OreWatch عن الإصدارات الأحدث لتبعيات المشروع المراقبة ولـ OreWatch نفسه، لكنه لا يعدل ملفات البيان (manifests) أو ملفات القفل (lockfiles) أو الحزم المثبتة.
يتضمن OreWatch الآن تطبيق شريط قوائم أصلي لنظام macOS للأشخاص الذين يرغبون في واجهة مستخدم محلية مرئية بدلاً من الاعتماد فقط على أوامر CLI أو استقصاء MCP أو النوافذ المنبثقة لأفضل جهد لمركز الإشعارات.
قم بتثبيت روابط Cocoa الاختيارية في نفس بيئة التشغيل التي توفر الأمر orewatch. اختر الأمر الذي يتوافق مع طريقة التثبيت الخاصة بك:```bash
python3.14 -m pip install 'orewatch[mac-menubar]'
pipx inject orewatch pyobjc-framework-Cocoa
brew install rapticore/tap/orewatch
ثم قم بتشغيل تطبيق شريط القوائم:```bash
orewatch monitor menubar
بشكل افتراضي، يقوم monitor menubar بإعادة تشغيل التطبيق في الخلفية ويعيد موجه الصدفة فوراً. استخدم orewatch monitor menubar --foreground فقط عندما تريد صراحةً إبقاءه ملحقاً بالطرفية لأغراض التصحيح.
تتصل تطبيق شريط القوائم بنفس المراقب الفردي. لا يبدأ نسخة ثانية من المراقب. إذا لم يكن المراقب مثبتاً وقيد التشغيل بالفعل، سيقوم التطبيق بتثبيته/تشغيله عند التشغيل الأول.
يقوم Homebrew بتثبيت روابط Cocoa في بيئة libexec المعزولة لـ OreWatch. إذا أبلغ orewatch monitor menubar عن No module named 'AppKit'، قم بتحديث الصيغة باستخدام brew update && brew reinstall rapticore/tap/orewatch. بالنسبة لعمليات التثبيت عبر pip و pipx والمصدر، لا يزال يتعين إضافة الروابط الاختيارية إلى نفس بيئة Python التي توفر الأمر orewatch.
عند تمكين إشعارات سطح المكتب على macOS، يحافظ المراقب الفردي الآن على بقاء تطبيق شريط قوائم فردي واحد قيد التشغيل ويستخدمه كسطح منبثق أساسي. يتجنب ذلك الاعتماد فقط على استدعاء osascript منفصل من الخفي ويمنحك واجهة أصلية ثابتة للنتائج الجديدة.
بنية شريط القوائم الحالية هي أيقونة أولاً. يجب التعامل مع الاختصار السابق OW وصياغة أيقونة OreWatch السابقة كمراجع قديمة؛ يفضل التطبيق الآن الأيقونة ذات العلامة التجارية المجمعة ولا يلجأ إلى النص المضغوط أو الشارات إلا عندما لا يستطيع macOS عرض الصورة أو يحتاج إلى عدد التنبيهات.
ما يمنحك إياه تطبيق شريط القوائم في macOS:
Add Workspace Folder... الذي يسجل مشروعاً في المراقب الفردي ويقوم بإجراء فحص سريع أوليسير عمل Mac الموصى به:
orewatch monitor quickstart /path/to/project --client claude_code مرة واحدة.orewatch.orewatch monitor menubar.للتوزيع الأسهل، استخدم الوثائق المركزة بدلاً من قراءة ملف README بالكامل:
الترتيب الموصى به للتبني:
monitor quickstart.orewatch monitor findings و orewatch monitor notifications.monitor menubar حتى يحصل المستخدمون على سطح مراجعة ثابت وتوصيل النوافذ المنبثقة.أوامر العمليات الشائعة:```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
**إجراءات اللقطة اليدوية والتوقيع:**```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
مراقبة السلوك:
~/.config/orewatch/singleton/ والحالة الافتراضية في ~/.local/state/orewatch/singleton/.~/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 في جذر المشروع.سطح التكامل المحلي:
127.0.0.1:48736 افتراضيًا عندما يكون خفي المراقبة قيد التشغيل.api.token بأذونات المالك فقط.127.0.0.1:48736 بدون Authorization: Bearer <token> ستعيد بشكل صحيح 401 Unauthorized.orewatch monitor connection-info بدلاً من تخمين المسارات، ويجب إرسال project_path الفعلي الذي يعملون عليه داخل طلبات فحص التبعية.orewatch_health و orewatch_check_dependency_add و orewatch_check_manifest و orewatch_override_dependency_add و orewatch_list_active_findings و و و .إعداد التحديث المباشر الاختياري المقيد بالشذوذ:```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
السلوك الرئيسي:
- يتم بناء المرشحين المباشرين في منطقة مرحلية أولاً؛ ولا يقومون بالكتابة فوق قواعد البيانات النشطة أثناء الجمع.
- عمليات السقوط الكبيرة، والتراجعات في النظام البيئي، والأنظمة البيئية الفارغة، والإزالات الجماعية تمنع الترقية.
- انقطاعات المصدر الأساسي تحذيرية فقط افتراضيًا للتحديثات المباشرة مفتوحة المصدر؛ الانخفاضات والإزالات على مستوى النظام البيئي لا تزال تمنع الترقيات السيئة.
- يتم تسجيل الحالات الشاذة التحذيرية فقط في الحالة والتقارير ولكنها لا تمنع الترقية.
- المرشحون المرفوضون يحتفظون بمجموعة البيانات المعروفة جيدًا الأخيرة نشطة عند وجود واحدة بالفعل.
- يُسمح ببدء التشغيل الأول من التغذية المباشرة إذا نجح مصدر أساسي واحد على الأقل وأنتج المرشح بيانات نظام بيئي قابلة للاستخدام.
**تكوين 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 عند استهداف خطاف ويب وارد من سلاك. في هذا الوضع، يرسل OreWatch حمولة text بسيطة.
يحتوي المشروع الآن على سطحين توزيع متميزين:
يجب توزيعهما بشكل منفصل.
أفضل خيار افتراضي للمطورين: انشر الماسح الضوئي كحزمة بايثون عادية على PyPI وأوصِ بالتثبيت باستخدام pipx.
لماذا هذا هو الأنسب:
pipx المطورين تثبيتًا معزولًا على مستوى المستخدم دون تلويث البيئات الافتراضية للمشروع.python3.14 -m pip install orewatch==<version>.شكل الإصدار الموصى به:
sdist والعجلة العالمية (universal wheel) إلى PyPI.orewatch.ore-mal-pkg-inspector كاسم مستعار للتوافق المؤقت.pipx install --python python3.14 orewatch للتثبيت المحلي للمطورين.python3.14 -m pip install orewatch==<version> لـ CI والأتمتة المثبتة.قناة ثانوية متاحة: صنبور Homebrew متاح الآن لمستخدمي macOS الذين يفضلون التثبيت المُدار عبر Brew:```bash brew install rapticore/tap/orewatch
يبقى Homebrew طبقة تسهيل فوق إصدار PyPI المنشور، وليس الأداة الأساسية للإصدار.
**أفضل خيار للمساهمين:** الاحتفاظ بتدفق 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 .
إذا كنت تنشر OreWatch باستخدام Kandji أو Jamf Pro أو Intune أو Munki أو أي نظام آخر لتوزيع البرامج على macOS، فإن النموذج الموصى به يختلف عن مسار المطور pipx.
واقع المنتج الحالي:
.pkg مسطحة وموقعة مبنيّة حول عجلة OreWatch المنشورةنموذج النشر المؤسسي الموصى به:
.pkg موقعة تُثبّت وقت تشغيل OreWatch وواجهة CLI مستقرة orewatchmac-menubar إذا كنت تريد تطبيق شريط القوائم الأصلي على أجهزة Mac المُدارةorewatch monitor quickstart /path/to/project --client <client> أو عملية تمهيدية مكافئة في سياق المستخدملماذا هذا التقسيم مهم:
شكل الحزمة الموصى به لنظام macOS المُدار:
/Library/Application Support/OreWatch/runtime/usr/local/bin/orewatchإرشادات خاصة بالبائعين:
.pkg).pkg على .dmg أو .zip لـ OreWatch لأن وقت التشغيل ليس تطبيق سحب وإفلات.pkg كحزمة وانشرها باستخدام سياسة أو الخدمة الذاتية.pkg موقعة.pkg حقيقية، موقعة بشهادة Developer ID Installer، ويجب أن تحتوي الحزمة على محتوى.pkg بالإضافة إلى بيانات الحزمة الوصفية وعامل OreWatch كأي برنامج macOS مُدار آخرللحصول على دليل نشر أكثر اكتمالاً، راجع docs/managed-rollout.md.
لا ينبغي تضمين لقطات البيانات التهديدية داخل حزمة Python. فهي تتغير بإيقاع مختلف وهي مدعومة بالفعل كقطع أثرية مستضافة موقعة.
الوضع الافتراضي للمصدر المفتوح/المجتمع: استهلك openssf و osv مباشرة من خلال مسار التحديث المباشر المُدار بالشذوذ.
الوضع الافتراضي للمؤسسات: انشر لقطات موقعة ذات إصدارات إلى استضافة HTTPS ثابتة واترك للعملاء تحديثها بشكل مستقل.
أهداف الاستضافة الموصى بها:
تخطيط اللقطات الموصى به:
versions/<version>/manifest.jsonversions/<version>/*.dbchannels/stable.jsonنموذج الثقة الموصى به:
للإصدار الإنتاجي، أنظف إعداد هو:
pipxpipبشكل افتراضي، يُظهر الماسح فقط التحذيرات والأخطاء والملخص النهائي. لاستكشاف الأخطاء وإصلاحها أو تتبع التقدم التفصيلي، استخدم أعلام التسجيل:
شاهد رسائل التقدم وإحصائيات التجميع:```bash orewatch /path/to/project --verbose
**المخرجات تشمل:**
- نتائج اكتشاف النظام البيئي
- تقدم تحليل الملفات
- أعداد استخراج الحزم
- تفاصيل استعلام قاعدة البيانات
- تقدم فحص مؤشرات الاختراق
**مثال:**```
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
**المخرجات تشمل:**
- جميع رسائل مستوى INFO
- مسارات الملفات التي يتم فحصها
- تفاصيل تنفيذ استعلامات SQL
- عمليات حساب التجزئة (Hash)
- نتائج مطابقة الأنماط (Pattern matching)
- معلومات الحالة الداخلية
**حالات الاستخدام:**
- التحقيق في سبب عدم اكتشاف حزمة
- تصحيح أخطاء اكتشاف النظام البيئي التلقائي
- الإبلاغ عن المشكلات مع سياق مفصل
- تدقيق سلوك الماسح الضوئي
### تسجيل الدخول للمجمعات (Logging for Collectors)
تدعم مجمعات معلومات التهديدات (threat intelligence collectors) أيضًا وضعي 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 بيانات وصفية حول توفر بيانات التهديد وتستخدم كائنات physicalLocation بنمط SARIF لنتائج الحزم، لكنها ليست مستند 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" } ] }
**حقول بيانات التهديد:**
- `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`: شذوذ تحذير/حظر يحدث أثناء محاولة التحديث الحي
### فهم النتائج
**مستويات الخطورة:**
- **حرج:** كود ضار معروف مع استغلال نشط أو تسرب بيانات
- **عالي:** مؤشرات قوية على نية ضارة أو انتحال اسم (typosquatting)
- **متوسط:** أنماط مشبوهة أو ثغرات محتملة
- **منخفض:** مخاوف بسيطة أو نتائج إعلامية
**الإجراءات الموصى بها:**
1. **النتائج الحرجة/العالية:** إزالة الحزم المتأثرة فورًا والتحقق من الأثر
2. **مراجعة مؤشرات الاختراق (IoCs):** التحقق مما إذا كان الكود الضار قد نُفذ (السجلات، نشاط الشبكة)
3. **تحديث التبعيات:** استبدال الحزم الضارة ببدائل شرعية
4. **إعادة الفحص:** التحقق من العلاج من خلال فحص متابعة
5. **الإبلاغ:** النظر في الإبلاغ لمشرفي سجل الحزم
---
## تكامل CI/CD
### إجراءات GitHub
**فحص أمني أساسي:**```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
# Check if malicious packages were found
MALICIOUS_COUNT=$(jq '.malicious_packages_found' report.json)
IOC_COUNT=$(jq '.iocs_found' report.json)
if [ "$MALICIOUS_COUNT" -gt 0 ] || [ "$IOC_COUNT" -gt 0 ]; then
echo "🚨 SECURITY ALERT: Malicious packages or IoCs detected!"
echo "Malicious packages: $MALICIOUS_COUNT"
echo "IoCs found: $IOC_COUNT"
exit 1
fi
### GitLab CI```yaml
malicious-package-scan:
image: python:3.14
stage: security
before_script:
- git clone https://github.com/rapticore/ore-mal-pkg-inspector.git scanner
- cd scanner && pip install .
script:
- orewatch $CI_PROJECT_DIR --latest-data --strict-data --output scan-report.json
artifacts:
paths:
- scan-report.json
when: always
allow_failure: false
pipeline { agent any
stages {
stage('Setup Scanner') {
steps {
sh '''
git clone https://github.com/rapticore/ore-mal-pkg-inspector.git scanner
cd scanner
python3.14 -m pip install .
'''
}
}
stage('Security Scan') {
steps {
sh '''
cd scanner
orewatch ${WORKSPACE} --latest-data
'''
}
}
}
post {
always {
archiveArtifacts artifacts: 'scanner/scan-output/*.json', fingerprint: true
}
}
}
### خطاف ما قبل الالتزام
أضف إلى `.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
**السبب:** فشل جمع بيانات التهديدات، أو البيانات الوصفية غير مكتملة، أو النظم البيئية المطلوبة لا تملك قواعد بيانات محلية قابلة للاستخدام بعد.
**الحل:**```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
**الأسباب والحلول المحتملة:**
1. **الدليل الخاطئ:** تأكد من أنك تقوم بمسح دليل المشروع الصحيح ```bash
ls /path/to/project # Verify package.json or requirements.txt exists
العَرَض:``` ERROR: Error downloading npm: <urlopen error [Errno -3] Temporary failure in name resolution>
**الحلول:**
1. **التحقق من اتصال الإنترنت:** ```bash
ping google.com
collectors/config.yaml: ```yaml
osv:
timeout: 600 # Increase from default 300
الأعراض:``` ERROR: Error creating directory collectors/raw-data: Permission denied
**الحل:**```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
العرض: ~/Library/Application Support/OreWatch (في macOS) أو
$XDG_STATE_HOME/orewatch (في Linux) نما إلى عشرات الجيغابايت.
السبب (قبل الإصدار 1.2.3): كل ترقية تحديث مباشر كانت تؤرشف نسخة كاملة من قواعد بيانات بيانات التهديدات السابقة (~300 ميغابايت) دون استبقاء. يؤدي تشغيل المراقبة لفترة طويلة إلى تجميع لقطة واحدة لكل دورة إلى أجل غير مسمى.
الإصلاح: الترقية إلى الإصدار 1.2.3 أو أحدث. أصبحت النسخ الاحتياطية الآن بحجم ~1 كيلوبايت ملفات SHA-256، ويتم الاحتفاظ افتراضيًا بأحدث 30 نسخة، ويتوفر أمر تنظيف صريح:
orewatch cleanup --list
orewatch cleanup --apply
``````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: <int> # how many backup manifests to keep
# staging_max_age_seconds: <int> # stale candidate-* staging cutoff
الأعراض: تم الإبلاغ عن حزمة مشروعة على أنها ضارة.
الخطوات:
تحقق من النتيجة: راجع تفاصيل التقرير بما في ذلك الخطورة والوصف
تحقق من الإصدار: قد يكون الإصدار المبلغ عنه محددًا: ```bash orewatch /path/to/project --verbose
الإبلاغ عن نتيجة إيجابية خاطئة: إذا تم التأكد من عدم صحتها:
تمكين التسجيل المفصل:```bash
orewatch /path/to/project --debug 2> debug.log
cd collectors python3 orchestrator.py --debug 2> collector-debug.log
**مراجعة السجلات:** تحقق من `debug.log` للحصول على تتبع التنفيذ المفصل بما في ذلك:
- مسارات الملفات الممسوحة
- استعلامات SQL المنفذة
- نتائج مطابقة الأنماط
- تتبعات أخطاء
---
## الأسئلة الشائعة
### كم مرة يجب تحديث معلومات التهديدات؟
**التوصية:**
- **بيئات الإنتاج/التكامل المستمر:** تحديثات تلقائية يومية
- **محطات العمل التطويرية:** تحديثات أسبوعية كحد أدنى
- **بعد الأخبار الأمنية:** تحديث فوري عند الإعلان عن تهديدات جديدة
يتم نشر الحزم الخبيثة باستمرار. التحديثات اليومية تضمن أحدث الحماية.
### كيف يمكن تحديث بيانات معلومات التهديدات؟
قم بتشغيل الماسح الضوئي مع العلامة `--latest-data` لفرض التحديث:```bash
orewatch /path/to/project --latest-data
للتحديثات الآلية في CI/CD، قم بجدولة عمليات فحص دورية باستخدام علامة --latest-data (مثل يوميًا). أضف --include-experimental-sources فقط إذا كنت تريد صراحةً تضمين البيانات المشتقة من Phylum في إعادة البناء.
ملاحظة: تقوم عمليات الفحص الأولى بجمع البيانات تلقائيًا، لذا فإن التحديثات اليدوية مطلوبة فقط لتحديث قواعد البيانات الموجودة.
يتم بناء قواعد البيانات الافتراضية من مصادر التهديدات الأساسية للمشروع:
openssfosvيمكن للماسح الضوئي أيضًا تضمين مجموعة المصادر التجريبية للمشروع:
phylum مع --include-experimental-sourcessocketdev موجود في المستودع كعنصر نائب معطل وليس جزءًا من مسار التجميع الافتراضي.
للحصول على تفاصيل تقنية حول مصادر البيانات والتجميع والمعالجة، راجع ARCHITECTURE.md.
لا. تقوم OreWatch بعمليات للقراءة فقط. إنها:
إنها لا تقوم أبدًا بما يلي:
الخطوات الواجب اتخاذها:
جزئيًا.
المسح دون اتصال: ✅ نعم، بمجرد تهيئة قواعد البيانات```bash
orewatch /path/to/project
orewatch /path/to/project
**التحديثات دون اتصال:** ❌ لا، جمع معلومات التهديدات يتطلب اتصالًا بالإنترنت لجلبها من مصادر الأمان.
**البيئات المعزولة:** يمكنك:
1. تنزيل قواعد البيانات على جهاز متصل بالإنترنت
2. نقل ملفات SQLite إلى المجلد `final_data_dir` الفريد الذي يظهره الأمر `orewatch monitor doctor`
3. تشغيل الفحوصات دون اتصال باستخدام بيانات قد تكون قديمة
### كيف يقارن هذا بـ npm audit أو pip-audit؟
**أغراض مختلفة:**
**npm audit / pip-audit:**
- التركيز على الثغرات المعروفة (CVE)
- فحص إصدارات الحزم مقابل قواعد بيانات الاستشارات
- يتم صيانتها من قبل فرق سجل الحزم
**OreWatch:**
- يركز على الحزم الخبيثة (وليس فقط الضعيفة)
- يكتشف typosquatting والبرامج الضارة وهجمات سلسلة التوريد
- تغطية عبر الأنظمة البيئية
- كشف مؤشرات الاختراق للتهديدات النشطة
**أفضل ممارسة:** استخدم **كلاهما**:```bash
# Check for vulnerabilities
npm audit
pip-audit
# Check for malicious packages
orewatch /path/to/project
فحص التبعيات: ✅ نعم، يقوم الماسح الضوئي بقراءة ملفات التبعيات الخاصة بك بغض النظر عن مصدر الحزم.
استخبارات التهديدات: ⚠️ محدودة. تغطي قواعد بياناتنا السجلات العامة (npmjs.com، pypi.org، إلخ). لن يتم اكتشاف الحزم الضارة في السجلات الخاصة ما لم تقم بإضافة بيانات تهديد مخصصة.
بيانات التهديد المخصصة: يمكنك توسيع قواعد البيانات باستخدام قوائم الحزم الضارة الخاصة بك. اتصل بنا للحصول على إرشادات حول حالة الاستخدام المتقدمة هذه.
وقت الفحص:
العوامل:
--no-ioc إذا لم يكن ضروريًا)نصائح التحسين:```bash
orewatch --file package.json
---
## المساهمة
نرحب بالمساهمات! سواء كنت تُبلغ عن أخطاء، أو تقترح ميزات، أو تساهم في الكود، فإن مساعدتك تُحسّن 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 عامة للثغرات الأمنية.**
بدلاً من ذلك، أبلغ بشكل خاص:
**البريد الإلكتروني:** [email protected]
**تضمين:**
- وصف الثغرة
- خطوات إعادة الإنتاج
- الأثر المحتمل
- الإصلاح المقترح (إن وجد)
- معلومات الاتصال الخاصة بك للمتابعة
### الجدول الزمني للاستجابة
- **الإقرار:** خلال 48 ساعة
- **التقييم الأولي:** خلال 7 أيام
- **الجدول الزمني للإصلاح:** يختلف حسب الخطورة
- حرج: 7-14 يومًا
- عالي: 14-30 يومًا
- متوسط/منخفض: 30-60 يومًا
### أفضل الممارسات الأمنية
عند استخدام OreWatch:
**افعل:**
- ✅ التشغيل بأقل الامتيازات (لا حاجة إلى صلاحيات الجذر/المسؤول)
- ✅ تحديث معلومات التهديدات بانتظام
- ✅ مراجعة تقارير الفحص فورًا
- ✅ التكامل مع 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. ساهم في التطبيقات (PRs مرحب بها!)
---
## خريطة الطريق
OreWatch قابلة للاستخدام اليوم من أجل:
- فحوصات CLI محلية عبر npm و PyPI و Maven و RubyGems و Go و Cargo
- مراقب خلفية واحد لكل مستخدم للعديد من المشاريع
- تكاملات MCP لـ Cursor و Claude Code و Codex
- تكاملات API المحلية لـ VS Code و JetBrains / PyCharm و Xcode helpers
- مراجعة شريط قائمة macOS والإشعارات المنبثقة
الأولويات قصيرة المدى:
- أمثلة أو إضافات خفيفة من الطرف الأول لتكامل VS Code و JetBrains / PyCharm
- سير عمل إشعارات أقوى موجهة للمستخدم تتجاوز الإشعارات المنبثقة المحلية
- إدارة أوضح لسياسات المشروع من CLI وواجهة المستخدم
- تقارير فحص أكثر ثراءً ووثائق التبني
الأولويات متوسطة المدى:
- سير عمل أوسع لفحص المشاريع من سطح المراقبة و 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 License
Copyright (c) 2025 Rapticore
يُمنح الإذن hereby، مجانًا، لأي شخص يحصل على نسخة
من هذا البرنامج وملفات التوثيق المرتبطة به ("البرنامج")، للتعامل
في البرنامج دون قيود، بما في ذلك دون حصر حقوق
الاستخدام والنسخ والتعديل والدمج والنشر والترخيص و/أو بيع
نسخ من البرنامج، والسماح للأشخاص الذين يُزوّد البرنامج لهم
بالقيام بذلك، مع مراعاة الشروط التالية:
يجب تضمين إشعار حقوق النشر أعلاه وهذا الإذن في جميع
النسخ أو الأجزاء الجوهرية من البرنامج.
يتم توفير البرنامج "كما هو"، دون أي ضمان من أي نوع، صريح أو
ضمني، بما في ذلك دون حصر ضمانات القابلية للتسويق،
والملاءمة لغرض معين وعدم الانتهاك. في أي حال من الأحوال لا يكون
المؤلفون أو أصحاب حقوق النشر مسؤولين عن أي دعوى أو أضرار أو غيرها
من المسؤوليات، سواء في إجراء تعاقدي أو تقصيري أو غير ذلك، الناشئة
عن أو فيما يتعلق بالبرنامج أو استخدامه أو التعاملات الأخرى في
البرنامج.
---
## الدعم
### الحصول على المساعدة
**التوثيق:** أنت تقرأه! ابدأ هنا لمعظم الأسئلة.
**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) متخصص في الكشف عن هجمات npm من نوع Shai-Hulud مع 738+ حزمة متأثرة وتحليل عميق لمؤشرات الاختراق (IoC). أثناء تطويره، أدركنا الحاجة إلى حماية أوسع متعددة النظم البيئية، مما أدى إلى إنشاء OreWatch كأداة مستقلة تخدم مجتمع المطورين الأوسع عبر جميع النظم البيئية الرئيسية للحزم.
### المشاريع ذات الصلة
- **[OreNPMGuard](https://github.com/rapticore/OreNPMGuard)** - ماسح npm متخصص لـ Shai-Hulud
---
**بُني بواسطة فريق أبحاث الأمن في Rapticore**
*حماية سلاسل التوريد البرمجية، فحصًا تلو الآخر.*
| أريد أن... | استخدم هذا المسار | ابدأ بـ |
|---|
| أفحص مستودعًا واحدًا الآن | فحص CLI | orewatch /path/to/project |
| أحمي التطوير المحلي في الخلفية | مراقب فردي (singleton monitor) | orewatch monitor quickstart /path/to/project --client claude_code |
| أستخدم OreWatch من Cursor أو Claude Code أو Codex | جسر MCP | orewatch monitor quickstart /path/to/project --client <cursor|claude_code|codex> |
| أدمج مع VS Code أو PyCharm أو Xcode | واجهة برمجة تطبيقات المضيف المحلي | orewatch 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 | مسح مؤشرات الاختراق فقط، تخطي فحص الحزم | خطأ | |
--latest-data | فرض تحديث مباشر مرحلي وترقية مدفوعة بالشذوذ قبل المسح | خطأ | |
--strict-data | الفشل إذا كان أي نظام بيئي مطلوب يحتوي على بيانات تهديد جزئية أو مفقودة | خطأ | |
--include-experimental-sources | تضمين المجمعات التجريبية أثناء تحديث بيانات التهديد | خطأ | |
--list-supported-files | طباعة أسماء ملفات بيان التبعية المدعومة بالضبط والخروج | خطأ | |
--verbose | -v | عرض سجلات مستوى INFO (رسائل التقدم) | خطأ |
--debug | عرض سجلات مستوى DEBUG (تشخيصات مفصلة) | خطأ |
| العميل | النقل | أمر التمهيد | ملاحظات |
|---|
| Claude Code | MCP | orewatch monitor ide-bootstrap --client claude_code | جسر MCP من الدرجة الأولى |
| Codex | MCP | orewatch monitor ide-bootstrap --client codex | جسر MCP من الدرجة الأولى |
| Cursor | MCP | orewatch monitor ide-bootstrap --client cursor | جسر MCP من الدرجة الأولى |
| VS Code | Local API | orewatch monitor ide-bootstrap --client vscode | لا يوجد امتداد مدمج؛ استخدم واجهة برمجة التطبيقات localhost |
| JetBrains / PyCharm | Local API | orewatch monitor ide-bootstrap --client jetbrains | لا يوجد إضافة مدمجة؛ استخدم واجهة برمجة التطبيقات localhost |
| Xcode | Local API | orewatch monitor ide-bootstrap --client xcode | الأفضل للنتائج/الإخطارات والمستودعات متعددة اللغات |
monitor install الآن يُثبّت خدمة launchd أو systemd على مستوى المستخدم عند توفرها، ويعود إلى الوضع الخلفي المحلي بخلاف ذلك.monitor quickstart /path/to/project --client claude_code هو أسهل تدفق للتشغيل الأولي لإعداد عميل LLM محلي.--workspace-root /path/to/workspace لا يزال مقبولاً لإصدار واحد كاسم مستعار للتوافق مهمل، لكنه لم يعد يغير هوية المراقبة أو موقع الرمز المميز أو تسمية الخدمة.auto، إذا فشل إعداد launchd أو systemd الأصلي، يعود OreWatch الآن إلى الوضع الخلفي المحلي بدلاً من إحباط الإعداد.monitor install --ide-bootstrap يطبع مقتطفات التمهيد للنسخ واللصق لكلود كود، كودكس، كرسور، فيجوال ستوديو كود، JetBrains / PyCharm، و إكس كود.monitor connection-info يطبع عنوان URL الأساسي لواجهة برمجة التطبيقات (API) للحلقة المحلية، ومسار الرمز المميز، ونطاق/منزل المراقبة المفردة، وما إذا كان الخفي قيد التشغيل بالفعل.monitor ide-bootstrap يطبع مقتطفات تمهيد MCP/API الحالية مرة أخرى دون إعادة تثبيت أي شيء.monitor mcp يشغل جسر MCP محليًا يعرض فحوصات تبعيات OreWatch لكلود كود، كودكس، وكرسور.monitor findings و monitor notifications و monitor package-updates توفر سطح المراجعة المدمج للاكتشافات الخلفية وتنبيهات التحديث.monitor menubar يشغل تطبيق شريط قوائم macOS أصلي مدعوم من المراقبة المفردة ومخزن النتائج.monitor mcp هو خادم stdio، لذا سينتظر عميل MCP بعد بدء التشغيل. الآن يكتب حالة الجاهزية والتشغيل التلقائي إلى stderr، وليس stdout.monitor install ليكون الخفي الخلفي متاحًا بالفعل عندما يشغل العميل monitor mcp أو يستدعي API.make test-e2e-clients يقوم بتهيئة مساحة العمل الاصطناعية وتشغيل مصفوفة عميل MCP/API عبر الأنظمة لكلود كود، كودكس، وكرسور.openssf و osv). يتم تخزين البيانات المرشحة في دليل حالة المراقبة المملوك للمستخدم، والتحقق من الانخفاضات/الإزالات غير الطبيعية، ثم يتم ترقيتها فقط إلى قواعد البيانات النشطة.snapshots.channel_url أو snapshots.manifest_url، وتتحقق المراقبة منها باستخدام snapshots.public_key_path.openssl على الجهاز المحلي.orewatch_list_notificationsorewatch_list_package_updatesorewatch_check_package_updates