Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/iulianvostrut/contexthound
التحليل الثابتماسحات الثغرات الأمنيةتحليل الكودتسريب البياناتDevSecOpsكشف الأسرارأمن سلسلة التوريدالتعلم والتعليمأمن الذكاء الاصطناعي

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →

حول

أداة تحليل ثابتة (CLI) تفحص قواعد البيانات البرمجية بحثًا عن ثغرات حقن التعليمات (prompt-injection)، تسريب البيانات (data-exfiltration)، كسر الحماية (jailbreak)، وثغرات الوكيل/الأداة غير الآمنة. تعمل دون اتصال بالإنترنت بالكامل، وتتكامل مع CI/CD، وتُخرج تقارير إلى وحدة التحكم، JSON، و SARIF.

GitHubiulianvostrut/contexthound

ContextHound

عرض المستودعالموقع الإلكتروني
2منذ شهر واحدلم تتم المراجعة بعد
مشاركة

ContextHound

أداة تحليل ثابتة تفحص قاعدة التعليمات البرمجية الخاصة بك بحثًا عن ثغرات أمنية في حقن الأوامر للنماذج اللغوية الكبيرة (LLM) والهجمات متعددة الوسائط. تعمل دون اتصال بالإنترنت، ولا تتطلب استدعاءات API.

CI npm Node.js TypeScript License: MIT


نظام ContextHound البيئي

ContextHound متاح عبر سير العمل التطويري والتصفح بالكامل:

الأداةما تقوم بهالتثبيت
حزمة CLI / npmتفحص قاعدة التعليمات البرمجية بحثًا عن ثغرات حقن الأوامر. تتكامل مع GitHub Actions، وتُخرج SARIF وJSON وHTML والمزيد.npm install -g context-hound
إضافة VS Codeعرض النتائج أثناء كتابة الكود، إجراءات الكود، قناة الإخراج، شريط الحالة.سوق VS Code
إضافة المتصفحمؤشر فحص فوري على أي واجهة دردشة ذكاء اصطناعي، لوحة DevTools لحركة API للنماذج اللغوية، ماسح ضوئي منبثق. متصفحات Chrome وFirefox.Firefox: تثبيت مجاني · Chrome: بانتظار المراجعة · المصدر

☕ دعم المشروع

ko-fi "Buy Me A Coffee"


لماذا ContextHound؟

مع انتشار التطبيقات المدعومة بالنماذج اللغوية الكبيرة في قواعد التعليمات البرمجية الإنتاجية، برز حقن الأوامر كأحد أسطح الهجوم الأكثر قابلية للاستغلال؛ معظم ماسحات الأمان لا تدرك وجوده.

يجلب ContextHound التحليل الثابت إلى طبقة الأوامر الخاصة بك:

  • يكتشف مسارات الحقن قبل وصولها إلى النموذج
  • يشير إلى بيانات الاعتماد المسربة والبنية التحتية الداخلية المضمنة في الأوامر
  • يكتشف الصياغة القابلة للاختراق في أوامر النظام الخاصة بك
  • يحدد استخدام الأدوات الوكيلة غير المقيدة التي يمكن تسليحها
  • يكتشف تسميم مستودع RAG والمحتوى المسترجع المحقون كتعليمات نظام
  • يكتشف التهريب القائم على الترميز (تعليمات Base64 التي تتجاوز مرشحات السلاسل النصية)
  • يشير إلى استهلاك مخرجات النماذج غير الآمنة: JSON بدون التحقق من المخطط وMarkdown بدون تعقيم
  • يكتشف أسطح الهجوم متعددة الوسائط: عناوين URL للصور المقدمة من المستخدم لواجهات برمجة تطبيقات الرؤية، وتجاوز المسار عبر قراءة ملفات رسائل الرؤية، وإخراج النسخ المُغذى في الأوامر، ونص OCR المحقون في تعليمات النظام
  • يشير إلى المخاطر الوكيلة: حلقات وكيل غير محدودة، وكتابات ذاكرة غير مُتحقق منها، وحقن الخطة، ومعلمات الأدوات التي تتلقى محتوى أمر النظام
  • يكافئ الممارسة الأمنية الجيدة: التخفيفات في أوامرك تقلل من درجتك

يتناسب مع سير عملك الحالي كأمر CLI، أو سكربت npm، أو GitHub Action، بدون أي تبعيات خارجية.


الميزات


التثبيت

تثبيت عالمي — يضيف الأمر hound إلى PATH الخاص بك:```bash npm install -g context-hound

root@kitploit:~
**تثبيت لكل مشروع** — مقصور على مستودع واحد، يتم تشغيله عبر `npx hound` أو سكربت npm:```bash
npm install --save-dev context-hound

Zero-install — لا حاجة للتثبيت، يستخدم نسخة مخزنة مؤقتًا من سجل npm:```bash npx context-hound scan --dir .

root@kitploit:~
---

## بداية سريعة```bash
# Scaffold a config file
hound init

# Scan your project
hound scan --dir ./my-ai-project

# Or via npm script (scans current directory)
npm run hound

# Verbose output, shows remediations and confidence levels
hound scan --verbose

# Fail the build on any critical finding
hound scan --fail-on critical

# Export JSON and SARIF reports
hound scan --format console,json,sarif --out results

# GitHub Annotations (for CI step summaries)
hound scan --format github-annotations

# Markdown report with findings tables
hound scan --format markdown --out report

# Stream findings as JSONL (one JSON object per line)
hound scan --format jsonl | jq '.severity'

# List all rules
hound scan --list-rules

# Explain a rule (or a rule family by prefix)
hound explain INJ-001
hound explain PST --format json

# Fast PR gate — scan only files changed vs. origin/main
hound scan --diff

# Interactive HTML report (self-contained, open in browser)
hound scan --format html --out report

# Re-scan on file changes
hound scan --watch

# Parallel scanning (default is 8; tune for your machine)
hound scan --concurrency 16

# Disable incremental cache for a clean run
hound scan --no-cache

# Baseline mode — only report findings new since the last saved scan
hound scan --format json --out baseline          # save a baseline
hound scan --baseline baseline.json             # compare future scans against it

# Load a custom rule from a local plugin file
hound scan  # plugin declared in .contexthoundrc.json "plugins" field

# Only run high-confidence rules
hound scan --config .contexthoundrc.json  # set minConfidence: "high"

# Fail if any single file scores >= 40
hound scan --fail-file-threshold 40

رموز الخروج:


إجراءات GitHub

أضف إلى سير العمل الخاص بك لمنع الدمج عندما تكون مخاطر المطالبة عالية جدًا:```yaml

.github/workflows/context-hound.yml

name: Prompt Audit

on: [push, pull_request]

jobs: hound: runs-on: ubuntu-latest permissions: contents: read security-events: write

root@kitploit:~
steps:
  - uses: actions/checkout@v4

  - uses: actions/setup-node@v4
    with:
      node-version: '20'

  - run: npm install -g context-hound

  - run: hound scan --format console,sarif,github-annotations --out results.sarif

  - name: Upload to GitHub Code Scanning
    if: always()
    uses: github/codeql-action/upload-sarif@v3
    with:
      sarif_file: results.sarif
root@kitploit:~
ستظهر النتائج في علامة تبويب **الأمان > فحص الكود** في مستودعك. يقوم تنسيق `github-annotations` بنشر تعليقات داخل طلبات السحب (PR) وكتابة جدول ملخص إلى خلاصة خطوات GitHub.

---

## الإعدادات

قم بتشغيل `hound init` لإنشاء ملف `.contexthoundrc.json` بشكل تلقائي، أو قم بإنشائه يدويًا:```json
{
  "include": ["**/*.ts", "**/*.js", "**/*.py", "**/*.go", "**/*.rs", "**/*.md", "**/*.txt", "**/*.yaml"],
  "exclude": [
    "**/node_modules/**",
    "**/dist/**",
    "**/tests/**",
    "**/attacks/**"
  ],
  "threshold": 60,
  "formats": ["console", "sarif"],
  "out": "results",
  "verbose": false,
  "failOn": "critical",
  "maxFindings": 50,
  "excludeRules": ["JBK-002"],
  "includeRules": [],
  "minConfidence": "medium",
  "failFileThreshold": 80,
  "concurrency": 8,
  "cache": true,
  "plugins": ["./rules/my-custom-rule.js"],
  "baseline": "./baseline.json"
}

متغيرات البيئة لتجاوز الإعدادات

يمكن تجاوز جميع الإعدادات الرئيسية في وقت التشغيل دون تعديل ملف التكوين:

.houndignore

ضع ملف .houndignore في جذر مشروعك لإضافة أنماط استبعاد دون تعديل .contexthoundrc.json. يتبع نفس بناء جملة glob؛ الأسطر التي تبدأ بـ # هي تعليقات.

الإسكات المضمن

قم بإسكات نتيجة إيجابية خاطئة معروفة مباشرة في المصدر — لا حاجة لتعطيل قاعدة على مستوى المستودع. يتم التعرف على التوجيهات في أي نوع ملف (لا يهم بناء جملة التعليق المحيط):```ts // hound-disable-next-line INJ-001 -- userInput is a validated enum const prompt = Summarise the ${userInput} report;

const cmd = run(${shell}); // hound-disable-line CMD-001

// hound-disable RAG-007 -- trusted internal corpus only context.push(doc.metadata.title); context.push(doc.metadata.author); // hound-enable RAG-007

root@kitploit:~
- `hound-disable-line [RULE...]` — إخفاء النتائج في نفس السطر
- `hound-disable-next-line [RULE...]` — إخفاء النتائج في السطر التالي
- `hound-disable [RULE...]` … `hound-enable [RULE...]` — إخفاء كتلة (تُغلق تلقائياً في نهاية الملف)
- حذف معرفات القواعد لإخفاء **جميع** القواعد في ذلك الموضع؛ اذكر واحداً أو أكثر (مفصولة بمسافة/فاصلة) لتحديد النطاق
- النص بعد `--` هو مبرر حر، يظهر في التقارير

شغّل الأمر `--report-unused-suppressions` لعرض التوجيهات التي لم تعد تطابق أي نتيجة، وذلك لتنظيف الإخفاءات البالية:```bash
hound scan --report-unused-suppressions

إعدادات القواعد المسبقة

تمكين مجموعة مختارة من القواعد باستخدام --preset بدلاً من سرد IDs. تتحد الإعدادات المسبقة مع أي includeRules لديك بالفعل، ويمكن دمج العديد منها:```bash hound scan --preset owasp-llm-top10 hound scan --preset mcp,agentic hound scan --list-presets # show all presets and their rule patterns

root@kitploit:~
| الإعداد المسبق | القواعد |
|----------------|---------|
| `owasp-llm-top10` | INJ, JBK, EXF, OUT, RAG, TOOL, SCH, DOS, VIS |
| `injection` | INJ, RAG, ENC |
| `jailbreak` | JBK |
| `exfiltration` | EXF |
| `agentic` | AGT, MCP, TOOL |
| `mcp` | MCP |
| `supply-chain` | SCH |
| `prompt-files` | INJ, JBK, EXF, ENC, SKL |

### pre-commit hook

يأتي ContextHound مزودًا بـ [pre-commit](https://pre-commit.com) hook. أضفه إلى `.pre-commit-config.yaml` الخاص بك:```yaml
repos:
  - repo: https://github.com/IulianVOStrut/ContextHound
    rev: v2.0.0
    hooks:
      - id: contexthound
        # optional — scan only changed files and fail on high-severity findings:
        # args: ["--diff", "HEAD", "--fail-on", "high"]

إضافات القواعد المخصصة

يمكن تحميل أي ملف .js يصدر Rule أو Rule[] كإضافة:```js // my-rule.js module.exports = { id: 'CUSTOM-001', title: 'Proprietary data pattern in prompt', severity: 'high', confidence: 'high', category: 'injection', remediation: 'Remove internal identifiers from prompts.', check(prompt) { if (prompt.text.includes('INTERNAL_PATTERN')) { return [{ evidence: 'INTERNAL_PATTERN', lineStart: 1, lineEnd: 1 }]; } return []; }, };

root@kitploit:~
قم بالإشارة إليه في `.contexthoundrc.json`:```json
{ "plugins": ["./my-rule.js"] }

Plugin rules are subject to the same excludeRules, includeRules, and minConfidence filters as built-in rules.

Baseline / diff mode

Save a baseline after an initial scan, then only report findings that are new in subsequent scans:```bash

Save baseline

hound scan --format json --out baseline

Future scans only report new issues

hound scan --baseline baseline.json

root@kitploit:~
### الملفات المتغيرة فقط (`--diff`)

لبوابات طلب السحب السريعة، امسح فقط الملفات التي تغيرت بالنسبة إلى مرجع git بدلاً من الشجرة بأكملها:```bash
hound scan --diff               # vs. origin/main (default)
hound scan --diff main          # vs. a named branch
hound scan --diff HEAD~5        # vs. an arbitrary ref

يغطي الملفات المُلتزمة، والمُعدلة والمُضافة إلى منطقة التتبع، والملفات غير المُضافة، والملفات غير المُتتبعة ولكن غير المُتجاهلة. إذا لم يكن git متاحًا أو تعذر حل المرجع (مثل استنساخ CI ضحل)، يطبع ContextHound تحذيرًا ويعود إلى الفحص الكامل بدلاً من المرور بصمت. يمكن دمجه مع --baseline للتفريق على مستوى النتائج، أو استخدام --diff بمفرده للحصول على أسرع ردود فعل على طلب السحب.


تصنيف المخاطر

يحمل كل اكتشاف نقاط خطر تُحسب على النحو التالي:``` risk_points = severity_weight × confidence_multiplier

root@kitploit:~
يتم جمع النقاط، وتحديدها عند 100، وتصنيفها:

| النتيجة | المستوى | الإجراء المقترح |
|---------|---------|-----------------|
| 0-29 | 🟢 منخفض | لا حاجة لإجراء |
| 30-59 | 🟡 متوسط | المراجعة قبل الدمج |
| 60-79 | 🟠 عالي | الإصلاح قبل الدمج |
| 80-100 | 🔴 حرج | حظر النشر |

إذا كانت استفساراتك تتضمن لغة أمان صريحة (محددات الإدخال، تعليمات منع الكشف، قوائم الأدوات المسموحة)، يتم تقليل نقاط المخاطرة لذلك الاستفسار بشكل متناسب.

---

## القواعد

### أ. الحقن (INJ)

| المعرف | الخطورة | الوصف |
|--------|---------|-------|
| INJ-001 | عالية | إدخال المستخدم المباشر مدمج في الاستفسار بدون محدد |
| INJ-002 | متوسطة | عدم وجود لغة حدودية "معالجة محتوى المستخدم كبيانات" |
| INJ-003 | عالية | تضمين سياق مسترجع/ RAG بدون فاصل غير موثوق |
| INJ-004 | عالية | تعليمات استخدام الأداة قابلة للتجاوز من قبل محتوى المستخدم |
| INJ-005 | عالية | كائن مستخدم مسلسل (`JSON.stringify`) مدمج مباشرة في قالب استفسار |
| INJ-006 | متوسطة | تعليق HTML يحتوي على تعليمات مخفية في محتوى يتحكم به المستخدم |
| INJ-007 | متوسطة | إدخال المستخدم ملفوف بمحددات كتلة برمجية دون إزالة علامات الاقتباس الخلفية أولاً |
| INJ-008 | عالية | بيانات طلب HTTP (`req.body`, `req.query`, `req.params`) مدمجة في سلسلة قالب `role: "system"` |
| INJ-009 | حرجة | تحليل كائن طلب HTTP مباشرة كمصفوفة رسائل — يتحكم المهاجم في الدور والمحتوى |
| INJ-010 | عالية | نسخة نصية لعلامة الدور (`User:`, `Assistant:`, `system:`) تم بناؤها بدمج إدخال غير موثوق |
| INJ-011 | عالية | مصدر DOM أو URL للمتصفح (`window.location`, `document.cookie`, `getElementById`) يُغذى مباشرة في استدعاء LLM |
| INJ-012 | عالية | نشر سجل المحادثة في مصفوفة الرسائل دون تنقية |
| INJ-013 | عالية | إدراج نتيجة استدعاء أداة/دالة في الرسائل دون تنقية |
| INJ-014 | عالية | إخراج LLM موجه كمحتوى دور المستخدم إلى استدعاء LLM لاحق |
| INJ-015 | عالية | تدفق إدخال خارجي غير موثوق (HTTP/CLI/DOM) إلى استفسار — **تحليل التلوث** غير معتمد على الاسم، يتبع الأسماء المستعارة، يحترم أدوات التنقية |

### ب. التسريب (EXF)

| المعرف | الخطورة | الوصف |
|--------|---------|-------|
| EXF-001 | حرجة | الاستفسار يشير إلى أسرار أو مفاتيح API أو بيانات اعتماد |
| EXF-002 | حرجة | الاستفسار يوجه النموذج للكشف عن استفسار النظام أو التعليمات المخفية |
| EXF-003 | عالية | الاستفسار يشير إلى الوصول إلى بيانات سرية أو خاصة |
| EXF-004 | عالية | الاستفسار يتضمن عناوين URL داخلية أو أسماء مضيف البنية التحتية |
| EXF-005 | عالية | متغير حساس (رمز، كلمة مرور، مفتاح) مشفر بصيغة Base64 في الإخراج |
| EXF-006 | عالية | الاستفسار الكامل أو مصفوفة الرسائل مسجلة عبر `console.log` / `logger.*` دون حذف |
| EXF-007 | حرجة | قيمة سرية فعلية مضمنة في الاستفسار إلى جانب تعليمة "لا تكشف أبداً" |

### ج. الاختراق (JBK)

| المعرف | الخطورة | الوصف |
|--------|---------|-------|
| JBK-001 | حرجة | اكتشاف عبارة اختراق معروفة ("تجاهل التعليمات"، "DAN"، إلخ) |
| JBK-002 | عالية | صياغة أمان ضعيفة ("الامتثال دائمًا"، "بغض النظر عن أي شيء") |
| JBK-003 | عالية | فتحة هروب لعب الأدوار تقوض قيود الأمان |
| JBK-004 | عالية | توجيه الوكيل للعمل دون تأكيد أو مراجعة بشرية ("المتابعة تلقائيًا"، "لا حاجة لتأكيد") |
| JBK-005 | عالية | تعليمة مسح الأدلة أو تغطية الآثار ("حذف السجلات"، "لا تترك أثرًا") |
| JBK-006 | عالية | صياغة شرعية السياسة مقترنة بطلب إجراء غير آمن ("كمخترق، رفع الصلاحيات") |
| JBK-007 | عالية | انتحال هوية النموذج — يدعي أنه نموذج AI مختلف مع توجيه يتجاوز الأمان |
| JBK-008 | عالية | هجوم ضغط الاستفسار — تعليمة بضغط أو تلخيص استفسار النظام |
| JBK-009 | عالية | حقن تعليمات متداخلة — أوامر حتمية مغلفة في إطار "تلخيص/ترجمة آمنة/غير ضارة" |

### د. استخدام الأدوات غير الآمن (TOOL)

| المعرف | الخطورة | الوصف |
|--------|---------|-------|
| TOOL-001 | حرجة | تنفيذ أداة غير محدود ("تشغيل أي أمر"، "تصفح أي مكان"، استبدال قذيفة بـ backtick) |
| TOOL-002 | متوسطة | وصف استخدام الأداة بدون قائمة مسموح بها أو سياسة استخدام |
| TOOL-003 | عالية | ذكر تنفيذ الكود دون قيود بيئة معزولة (sandbox) |
| TOOL-004 | حرجة | مصدر وصف الأداة أو مخططها من متغير يتحكم به المستخدم |
| TOOL-005 | حرجة | مصدر `name` الأداة أو `url` النقطة النهائية من إدخال يتحكم به المستخدم (`req.body`, `req.query`, إلخ) |

### هـ. حقن الأوامر (CMD)

يكشف الأنماط الضعيفة في الكود المحيط بأدوات AI، حيث يمكن لحقن الاستفسار الناجح أن يتصاعد إلى تنفيذ أوامر كامل. مستند إلى CVEs حقيقية وجدت في Gemini CLI من Google بواسطة Cyera Research Labs (2025).

| المعرف | الخطورة | الوصف |
|--------|---------|-------|
| CMD-001 | حرجة | بناء أمر قذيفة مع استيفاء متغير غير منقى — JS/TS (`execSync(\`cmd ${var}\``)، Python (`subprocess.run(f"cmd {var}")`)، PHP (`shell_exec($var)`)، Go (`exec.Command` + `fmt.Sprintf`)، Rust (`Command::new` + `format!`) |
| CMD-002 | عالية | تصفية غير كاملة لاستبدال الأمر: يمنع `$()` ولكن ليس backticks، أو العكس |
| CMD-003 | عالية | مسار ملف من `glob.sync` أو `readdirSync` يُستخدم مباشرة في أمر قذيفة دون تنقية |
| CMD-004 | حرجة | استدعاء `subprocess.run`/`subprocess.call` في Python مع `shell=True` ومتغير أو وسيطة أمر f-string |
| CMD-005 | حرجة | استدعاء `shell_exec`, `system`, `passthru`, `exec`, أو `popen` في PHP مع وسيطة `$variable` |

### و. تسميم RAG (RAG)

يكشف الأخطاء المعمارية في خطوط أنابيب الاسترجاع المعزز بالتوليد (RAG) التي تسمح للمحتوى المسترجع أو المستورد بتجاوز التعليمات على مستوى النظام.

| المعرف | الخطورة | الوصف |
|--------|---------|-------|
| RAG-001 | عالية | تعيين المحتوى المسترجع أو الخارجي إلى `role: "system"` في مصفوفة رسائل |
| RAG-002 | عالية | اكتشاف عبارات شبيهة بالتعليمات ("system prompt:"، "أعد دائمًا"، "لا تحذف أبدًا") داخل حلقة استيعاب المستندات |
| RAG-003 | عالية | كتابة مخزن ذاكرة الوكيل مباشرة من إدخال يتحكم به المستخدم دون تحقق |
| RAG-004 | متوسطة | توجيه الاستفسار النموذج لمعالجة السياق المسترجع كأولوية قصوى، متجاوزًا تعليمات المطور |
| RAG-005 | متوسطة | استرجاع بدون مصدر — إدراج أجزاء في الاستفسار دون التحقق من بيانات المصدر الوصفية |
| RAG-006 | عالية | عدم تطبيق مرشح ACL أو مستوى الثقة قبل دخول الاسترجاع إلى الاستفسار |

### ز. الترميز (ENC)

يكشف تقنيات الحقن والتهرب القائمة على الترميز حيث تُستخدم ترميزات Base64 أو ما شابه لتهريب التعليمات عبر مرشحات تعتمد على النصوص.

| المعرف | الخطورة | الوصف |
|--------|---------|-------|
| ENC-001 | متوسطة | استدعاء `atob`, `btoa`, أو `Buffer.from(x, 'base64')` على متغير يتحكم به المستخدم بالقرب من بناء الاستفسار |
| ENC-002 | عالية | اكتشاف أحرف تحكم Unicode مخفية (مسافات بعرض صفر، تجاوزات اتجاه الكتابة) بالقرب من كلمات تعليمات رئيسية |

### ح. معالجة الإخراج (OUT)

يغطي جانب الإخراج من خط أنابيب LLM — كيفية استهلاك تطبيقك لاستجابات النموذج. الاستهلاك غير الآمن يمكن أن يحول حمولة حقن الاستفسار إلى استغلال على مستوى التطبيق.

| المعرف | الخطورة | الوصف |
|--------|---------|-------|
| OUT-001 | حرجة | استدعاء `JSON.parse()` (JS/TS) أو `json.loads()` (Python) على إخراج LLM دون التحقق من المخطط (Zod, AJV, Joi, Pydantic, Marshmallow, إلخ) |
| OUT-002 | حرجة | تقديم Markdown أو HTML مولد من LLM دون استخدام DOMPurify أو ما يعادله من أدوات التنقية |
| OUT-003 | حرجة | استخدام إخراج LLM مباشرة كوسيطة لـ `exec()`, `eval()`, أو `db.query()` |
| OUT-004 | حرجة | استدعاء `eval()` أو `exec()` في Python مع إخراج LLM كوسيطة |

### ط. متعدد الوسائط (VIS)

يغطي انتهاكات حدود الثقة الخاصة بخطوط أنابيب الرؤية والصوت/الفيديو وOCR. المدخلات متعددة الوسائط هي ناقل حقن ناشئ: المهاجم الذي يتحكم في عنوان URL لصورة أو ملف صوتي أو مستند ممسوح ضوئيًا يمكنه استخدام أنماط هذه القواعد لتهريب التعليمات إلى النموذج.

| المعرف | الخطورة | الوصف |
|--------|---------|-------|
| VIS-001 | حرجة | إعادة توجيه عنوان URL لصورة أو بيانات base64 يقدمها المستخدم إلى API رؤية (gpt-4o, Claude 3, Gemini Vision) دون التحقق من النطاق أو MIME |
| VIS-002 | حرجة | استدعاء `fs.readFile`/`readFileSync` مع مسار يتحكم به المستخدم في ملف يبني أيضًا رسالة API رؤية — تجاوز المسار إلى إدخال متعدد الوسائط |
| VIS-003 | عالية | تغذية مخرجات النسخ الصوتي/الفيديو (Whisper, AssemblyAI, Deepgram, إلخ) مباشرة في رسائل الاستفسار دون تنقية — تسميم RAG عبر مصدر صوتي |
| VIS-004 | عالية | استيفاء مخرجات OCR (Tesseract, Google Vision) في رسالة `role: "system"` أو متغير استفسار النظام |

### ي. سوق المهارات (SKL) — الإصدار 1.1

يستهدف ملفات `SKILL.md` في OpenClaw وأي ملفات markdown داخل أدلة `skills/`. يتم تفعيله عند هجمات التأليف الذاتي، تحميل المهارات عن بُعد، التعليمات المحقونة، إرسال الأوامر غير الآمنة، الوصول إلى مسارات حساسة، ادعاءات رفع الصلاحيات، وبيانات اعتماد مثبتة في YAML frontmatter.

| المعرف | الخطورة | الوصف |
|--------|---------|-------|
| SKL-001 | حرجة | نص المهارة يوجه الوكيل لكتابة أو تعديل ملفات مهارات أخرى — هجوم تأليف ذاتي يستمر عبر عمليات إعادة تشغيل الوكيل |
| SKL-002 | حرجة | نص المهارة يوجه الوكيل لجلب أو تحميل مهارات من URL خارجي — يسمح للمهاجم بتغيير سلوك المهارة بعد التثبيت |
| SKL-003 | حرجة | نص المهارة يحتوي على عبارات حقن استفسار تستهدف التعليمات الأساسية للوكيل (`تجاهل التعليمات السابقة`, `أنت الآن غير مقيد`, إلخ) |
| SKL-004 | عالية | frontmatter المهارة يستخدم `command-dispatch: tool` مع `command-arg-mode: raw` — يمرر إدخال المستخدم الخام إلى أداة، متجاوزًا التفكير الأمني للنموذج |
| SKL-005 | عالية | نص المهارة يشير إلى مسارات نظام ملفات حساسة (`~/.ssh`, `~/.env`, `/etc/passwd`, `../../`) ليقرأها الوكيل ويحتمل تسريبها |
| SKL-006 | عالية | نص المهارة يدعي صلاحيات مرتفعة أو يوجه الوكيل لتجاوز أو تعطيل المهارات الأخرى المثبتة |
| SKL-007 | حرجة | العثور على قيمة بيان اعتماد مثبتة (مفتاح API، رمز، كلمة مرور) في YAML frontmatter — مكشوفة لأي شخص يستلم أو يثبت المهارة |
| SKL-008 | حرجة | نبض C2 — المهارة تجلب عن بعد دوريًا لاستبدال تعليماتها بصمت بعد تثبيت نظيف |
| SKL-009 | حرجة | إنكار هوية الوكيل — المهارة توجّه الوكيل لإنكار كونه AI، أو الادعاء بأنه بشري، أو تبني شخصية خادعة |
| SKL-010 | حرجة | تهرب من الماسح الضوئي — المهارة تحتوي على نص مصمم صراحةً لتضليل أدوات التدقيق الأمني |
| SKL-011 | حرجة | استمرار SOUL.md / IDENTITY.md — المهارة تكتب تعليمات إلى ملفات هوية الوكيل التي تبقى بعد إلغاء التثبيت |
| SKL-012 | عالية | دودة ذاتية الانتشار — المهارة توجّه الوكيل للانتشار عبر SSH أو `curl\|bash` إلى المضيفات القابلة للوصول |
| SKL-013 | عالية | معاملات مالية مستقلة — المهارة تنفذ معاملات عملات رقمية أو تحتفظ بمفاتيح خاصة دون تأكيد المستخدم لكل معاملة |

> **مسح مهارات OpenClaw:** قم بتشغيل `npx hound scan --dir ./skills` أو أضف `**/skills/**/*.md` و `**/SKILL.md` إلى تكوين `include` الخاص بك. يقوم ContextHound تلقائيًا بإصدار ملفات المهارات كـ `code-block` لتحليل القواعد متعددة الأسطر.

### ك. وكيل (AGT) — الإصدار 1.3 / 1.9

يستهدف المخاطر الخاصة بالأنظمة الوكيلة متعددة الخطوات: حلقات التنفيذ غير المحدودة، كتابات الذاكرة غير المحققة، تسرب إدخال المستخدم إلى تخطيط الوكيل، انتهاكات حدود الثقة بين الوكلاء، وثغرات OWASP الأمنية للذكاء الاصطناعي الوكيل (ASI).

| المعرف | الخطورة | الوصف |
|--------|---------|-------|
| AGT-001 | حرجة | معلمة استدعاء الأداة تتلقى محتوى استفسار النظام — قيمة وسيطة `tool_call`/`function_call` تحتوي على محتويات حقول `system:` أو `instructions:` |
| AGT-002 | عالية | حلقة وكيل بدون حد للتكرار أو مهلة — لا يوجد `max_iterations`, `max_steps`, `max_turns`, `timeout`, أو `recursion_limit` في تكوين الوكيل أو الكود |
| AGT-003 | عالية | كتابة ذاكرة الوكيل من إخراج LLM غير محقق — استدعاء `memory.save()`, `memory.add()`, أو `vectorstore.upsert()` مع متغير استجابة نموذج خام |
| AGT-004 | عالية | حقن الخطة — إدخال المستخدم مستوفى مباشرة في استفسار تخطيط الوكيل أو المهمة أو الهدف بدون غلاف حدود الثقة |
| AGT-005 | حرجة | الوكيل يثق في هوية مدعاة دون تحقق تشفيري — قرار الثقة بناءً على حقل `agentId`, `sender`, `source`, أو `from_agent` بدون HMAC, JWT, أو تحقق من سر مشترك |
| AGT-006 | عالية | ربط إخراج الوكيل الخام كمدخل لوكيل آخر دون تحقق — استدعاء `.run()`, `.invoke()`, أو `.generate()` مع `.output`/`.content`/`.result` لوكيل آخر مباشرة كوسيطة |
| AGT-007 | حرجة | تعديل الوكيل لذاته — الوكيل يعيد كتابة `system_prompt`, `instructions`, أو `tools` الخاص به مع محتوى مولّد من LLM في وقت التشغيل |
| AGT-008 | حرجة | ASI03 — الوكيل يستدعي `assumeRole`, `grantAccess`, أو `setPermissions` بقيمة مشتقة من إخراج LLM; رفع صلاحيات عبر حقن الاستفسار |
| AGT-009 | عالية | ASI04 — الوكيل يحمل أداة أو إضافة في وقت التشغيل من مسار متغير أو استيراد ديناميكي، مما يتيح استبدال سلسلة التوريد |
| AGT-010 | عالية | ASI07 — إخراج الوكيل الخام يُمرر إلى وكيل آخر عبر `send`/`route`/`dispatch` بدون HMAC, توقيع JWT, أو تحقق من المخطط |
| AGT-011 | عالية | ASI08 — خطأ في خطوة خطة الوكيل يتم التقاطه بصمت (بدون إعادة رمي، بدون علامة حالة خطأ); تستمر الخطوات اللاحقة على حالة سيئة أو غير كاملة |

### ل. أمان MCP (MCP) — الإصدار 1.7 / 1.8

يغطي مخاطر حدود الثقة وسلسلة التوريد الخاصة ببروتوكول سياق النموذج (MCP). يقدم MCP سطح هجوم جديد: أوصاف الأدوات، عناوين URL للنقل، حمولات الأحداث، والحالة المشتركة عبر الخوادم يمكن أن تحمل حمولات حقن أو رفع صلاحيات.

| المعرف | الخطورة | الوصف |
|--------|---------|-------|
| MCP-001 | حرجة | حقن وصف أداة MCP في استفسار LLM دون تنقية — قيمة `tool.description` الخام تُستخدم في `role: "system"` أو `messages.push()` |
| MCP-002 | عالية | تسجيل أداة MCP باسم أو وصف ديناميكي — الوسيطة الأولى لـ `server.tool()` هي متغير أو قالب نصي، مما يتيح هجمات السحب بعد الموافقة |
| MCP-003 | عالية | معالج `sampling/createMessage` في MCP بدون حارس موافقة بشرية — `setRequestHandler(CreateMessageRequestSchema)` بدون فحص `requireHumanApproval`, `confirm`, أو `approve` |
| MCP-004 | متوسطة | عنوان URL لنقل MCP مبني من متغير — تهيئة `SSEClientTransport` أو `WebSocketClientTransport` بـ `new URL(variable)` بدلاً من سلسلة ثابتة |
| MCP-005 | عالية | نقل stdio في MCP يستخدم `shell: true` — يجعل سلسلة الأمر قابلة لاستيفاء القذيفة وقابلة للحقن إذا كانت أي وسيطة متحكم بها من المستخدم |
| MCP-006 | حرجة | نائب مشوش في MCP — رمز المصادقة من طلب MCP يُمرر إلى API لاحق دون إعادة تحقق; قيمة رأس `Authorization` مصدرها مباشرة من `request.params`, `context`, أو `event` |
| MCP-007 | عالية | تسميم سياق عبر MCP — مخزن سياق مشترك/عمومي مكتوب من إخراج MCP بدون فحص التجزئة أو التوقيع أو المصدر |
| MCP-008 | عالية | أمر نقل stdio في MCP محمل من مسار متغير — حقل `command:` في `StdioClientTransport`/`StdioServerTransport` هو متغير بدلاً من سلسلة نصية ثابتة |
| MCP-009 | عالية | استخدام معرف جلسة MCP كقرار مصادقة دون فحص انتهاء الصلاحية — مقارنة مساواة `sessionId`/`connectionId` بدون TTL, `expiresAt`, أو حارس `isExpired` (هجوم إعادة تشغيل) |
| MCP-010 | حرجة | حقن حمولة حدث نقل MCP في سياق LLM دون تنقية — `.data`, `.content`, أو `.payload` للحدث/الرسالة يُستخدم مباشرة في `messages.push()` أو حقل `content:` |

---

## مثال على الإخراج```
=== ContextHound Prompt Audit ===

src/prompts/assistant.ts (file score: 73)
  [HIGH] INJ-001: Direct user input concatenation without delimiter
    File: src/prompts/assistant.ts:12
    Evidence: Answer the user's question: ${userInput}
    Confidence: medium
    Risk points: 23
    Remediation: Wrap user input with clear delimiters (e.g., triple backticks)
                 and label it as "untrusted user content".

  [CRITICAL] EXF-001: Prompt references secrets, API keys, or credentials
    File: src/prompts/assistant.ts:8
    Evidence: The database password is: secret123.
    Confidence: high
    Risk points: 50
    Remediation: Remove all secret values from prompts. Use environment
                 variables server-side; never embed credentials in prompt text.

────────────────────────────────────────────────────────
Repo Risk Score: 87/100 (CRITICAL)
Threshold: 60
Total findings: 5
By severity: critical: 2  high: 2  medium: 1

✗ FAILED - score meets or exceeds threshold.

هيكل المشروع```

src/ ├── cli.ts # CLI entry point (Commander.js) ├── types.ts # Shared TypeScript types ├── config/ │ ├── defaults.ts # Default include/exclude globs and settings │ └── loader.ts # .contexthoundrc.json loader + env var overrides ├── scanner/ │ ├── discover.ts # File discovery via fast-glob │ ├── extractor.ts # Prompt extraction (raw, code, structured) │ ├── languages.ts # LLM API trigger patterns per language extension │ ├── cache.ts # Incremental scan cache (.hound-cache.json) │ └── pipeline.ts # Orchestrates the full scan; parallel + cache + plugins ├── rules/ │ ├── types.ts # Rule interface and scoring helpers │ ├── injection.ts # INJ-* rules │ ├── exfiltration.ts # EXF-* rules │ ├── jailbreak.ts # JBK-* rules │ ├── unsafeTools.ts # TOOL-* rules │ ├── commandInjection.ts # CMD-* rules │ ├── rag.ts # RAG-* rules │ ├── encoding.ts # ENC-* rules │ ├── outputHandling.ts # OUT-* rules │ ├── multimodal.ts # VIS-* rules │ ├── skills.ts # SKL-* rules │ ├── agentic.ts # AGT-* rules │ ├── mcp.ts # MCP-* rules │ ├── supplyChain.ts # SCH-* rules │ ├── dos.ts # DOS-* rules │ ├── mitigation.ts # Mitigation presence detection │ └── index.ts # Rule registry ├── runtime/ │ ├── index.ts # createGuard() — runtime message inspection API │ ├── inspect.ts # Core inspection logic for live message arrays │ └── types.ts # RuntimeMessage, InspectResult, GuardConfig types ├── scoring/ │ └── index.ts # Risk score calculation and rule filtering └── report/ ├── console.ts # ANSI-coloured terminal output ├── json.ts # JSON report builder ├── sarif.ts # SARIF 2.1.0 report builder ├── githubAnnotations.ts# GitHub Actions annotation formatter ├── markdown.ts # Markdown report with findings tables ├── jsonl.ts # JSONL streaming formatter └── html.ts # Self-contained interactive HTML report attacks/ # Example injection strings (not executed against models) tests/ ├── fixtures/ # Sample prompts for testing ├── rules.test.ts # Unit tests for all rules ├── scoring.test.ts # Unit tests for scoring logic ├── scanner.test.ts # Integration tests for the scan pipeline ├── extractor.test.ts # Unit tests for prompt extraction ├── formatters.test.ts # Unit tests for all report formatters ├── mitigation.test.ts # Unit tests for mitigation detection └── cli.test.ts # CLI integration tests (init, list-rules, exit codes) .github/ ├── action.yml # Reusable composite GitHub Action └── workflows/ └── context-hound.yml # CI workflow

root@kitploit:~
## المعيار

يتضمن ContextHound مجموعة بيانات معيارية موسومة لقياس معدلات الإيجابيات الكاذبة والكشف. قم بتشغيلها بعد البناء:```bash
npm run benchmark

المعيار يفحص مجلدي اختبار:

الدليلالغرض
benchmarks/safe/5 ملفات تحتوي أنماط آمنة حقيقية — توقع 0 نتائج
benchmarks/unsafe/8 ملفات تحتوي ثغرات حقيقية — قاعدة واحدة لكل ملف

النتائج على الإصدار v1.4.0:``` File-level FP rate: 0.0% (0 / 5 safe files produced findings) Detection rate: 100.0% (8/8 expected findings triggered)

root@kitploit:~
ينهي المعيار البرمجي (benchmark) تنفيذه برمز خطأ 1 إذا تم العثور على أي إيجابيات خاطئة أو سلبيات خاطئة، مما يجعله مناسبًا كبوابة جودة للدمج المستمر (CI) لتغييرات القواعد. لإضافة عينة اختبار (fixture)، ضع ملفًا في `benchmarks/safe/` أو `benchmarks/unsafe/` وقم بتحديث `benchmarks/labels.json` بالنتائج المتوقعة.

### الدقة / الاستدعاء لكل قاعدة

يطبع المعيار البرمجي أيضًا **جدول إشارات لكل قاعدة** (أسوأ F1 أولاً) بحيث يسهل اكتشاف القواعد منخفضة الدقة — الإيجابيات الخاطئة/الصحيحة، والسلبيات الخاطئة، والدقة، والاستدعاء، وF1 لكل قاعدة معنونة. تأتي أعداد الإيجابيات الخاطئة من عينات الاختبار في `safe/` (الحقيقة الأساسية: صفر نتائج)؛ وتأتي الإيجابيات الصحيحة/السلبيات الخاطئة من عينات الاختبار المعنونة في `unsafe/`. مرر `--report <path>` لإصدار تقرير JSON قابل للقراءة آليًا للوحات المعلومات أو تتبع الاتجاهات في CI:```bash
npm run benchmark -- --report bench-report.json

ملحق المتصفح

يجلب ملحق المتصفح ContextHound الكشف الفوري عن حقن الأوامر (prompt injection) إلى Chrome وFirefox. يستخدم نفس محرك القواعد مثل CLI، مُجمَّع ومُحزَّم محليًا — لا طلبات شبكة، ولا خادم خلفي.

الحالة: ملحق Firefox مُباشر — التثبيت من إضافات Firefox. إرسال Chrome في انتظار مراجعة متجر ويب. المصدر متاح على github.com/IulianVOStrut/ContextHound-Extensions.

الميزات

حبة المسح يظهر مؤشر خفيف بجوار أي إدخال محادثة ذكاء اصطناعي على أي موقع ويب. أثناء الكتابة، يقوم الملحق بمسح النص مقابل 70 قاعدة كشف ويعرض درجة المخاطرة والنتائج في لوحة منسدلة — لا حاجة للتنقل بين الصفحات.

لوحة DevTools افتح أدوات المطور DevTools في المتصفح واختر علامة التبويب ContextHound لمراقبة حركة مرور API لنماذج اللغة الكبيرة (LLM) الحية. يعترض الملحق الطلبات الصادرة إلى OpenAI وAnthropic وGoogle Gemini وMistral وGroq وCohere وDeepSeek وغيرها من الخدمات، ويمسح كل من جسم الطلب والاستجابة بحثًا عن محتوى حقن. تعرض شارة شريط الأدوات أعلى درجة مخاطرة شوهدت في الجلسة الحالية.

ماسح النافذة المنبثقة انقر على أيقونة شريط الأدوات للصق ومسح أي نص يدويًا. مفيد لمراجعة طلب (prompt) أو تعليمات نظام مستلمة من طرف ثالث قبل استخدامها.

كيف يلتقط ملحق المتصفح أجسام الطلبات

لا يتضمن واجهة برمجة تطبيقات HAR الخاصة بأدوات المطور في Chrome وFirefox (onRequestFinished) بشكل موثوق بايتات جسم الطلب للاستجابات المتدفقة/SSE، التي تستخدمها معظم خدمات الدردشة الذكاء الاصطناعي. يحل الملحق هذه المشكلة بنهج من طبقتين:

  1. chrome.webRequest.onBeforeRequest يعترض بايتات الطلب الخام في عامل الخدمة قبل إرسال الطلب، ويخزنها مؤقتًا في chrome.storage.session (مدة الصلاحية: 5 دقائق).
  2. عند تشغيل onRequestFinished وغياب postData، تجلب صفحة DevTools الجسم المخبأ من عامل الخدمة عبر رسالة POP_BODY_CACHE.

الخصوصية

لا يجمع الملحق أي بيانات للمستخدم. جميع عمليات المسح محلية. راجع سياسة الخصوصية.


القيود

  • تستخدم القواعد التعبيرات العادية والاستدلالات الهيكلية، وليس التحليل الدلالي الكامل. من الممكن حدوث نتائج إيجابية خاطئة؛ راجع دائمًا النتائج في السياق.
  • لا يتم تنفيذ الطلبات (prompts) ضد نموذج؛ هذا تحليل ثابت بحت.
  • يستخدم الاستخراج مطابقة الأنماط بدلاً من شجرة بناء نحوية كاملة (AST). قد يتم تفويت بناء الطلب الديناميكي المعقد.
  • بالنسبة للغات غير JavaScript/TypeScript (مثل Python وGo وRust وما إلى ذلك)، يتم تحليل الملف فقط عند اكتشاف استيراد لمكتبة LLM. لن يتم استخراج الملفات التي تبني طلبات بدون استيراد معروف.

المساهمة

المساهمات مرحب بها. لإضافة قاعدة جديدة:

  1. أضفها إلى الملف المناسب في src/rules/ (أو أنشئ ملفًا جديدًا لفئة جديدة)
  2. سجلها في src/rules/index.ts
  3. أضف حالة اختبار واحدة على الأقل إيجابية وواحدة سلبية في tests/rules.test.ts
  4. قم بتشغيل npm test للتحقق من اجتياز جميع الاختبارات

الترخيص

MIT

تنزيل الأداة
95 قاعدة أمنيةعبر 14 فئة: الحقن، التسريب، الاختراق، استخدام الأدوات غير الآمن، حقن الأوامر، تسميم RAG، الترميز، معالجة المخرجات، الوسائط المتعددة، سوق المهارات، الوكيل، MCP، سلسلة التوريد، هجمات الحرمان من الخدمة
درجة المخاطر الرقمية (0-100)درجة طبيعية على مستوى المستودع مع عتبات منخفضة ومتوسطة وعالية وخطيرة
كشف التخفيفاللغة الأمنية الصريحة في أوامرك تقلل من درجتك
7 صيغ إخراجوحدة التحكم، JSON، SARIF، التعليقات التوضيحية في GitHub، Markdown، تدفق JSONL، وHTML تفاعلية
GitHub Action مضمنةتفشل CI عند المخاطر العالية وترفع نتائج SARIF تلقائياً
فحص متعدد اللغاتيكتشف استخدام API للنماذج اللغوية في Python وGo وRust وJava وC# وPHP وRuby وSwift وKotlin وVue وBash — وليس فقط TypeScript/JavaScript
تصفية القواعدexcludeRules/includeRules مع تركيب glob ذي البادئة (CMD-*)؛ مرشح minConfidence
ذاكرة تخزين مؤقت تزايدية.hound-cache.json يتجاوز الملفات غير المعدلة في عمليات الإعادة؛ --no-cache لتعطيل
نظام الإضافاتتحميل قواعد مخصصة من ملفات .js محلية عبر "plugins": ["./my-rule.js"] في التهيئة
وضع الأساس / الفرق--baseline results.json — الإبلاغ والفشل فقط عن النتائج غير الموجودة في فحص سابق
وضع المراقبة--watch يعيد الفحص عند تغيير الملفات ويظهر النتائج التفاضلية
فحص متوازيمعالجة متزامنة للملفات (--concurrency <n>، الافتراضي 8)
غير متصل بالكامللا استدعاءات API، لا تتبع، لا تبعات مدفوعة
الرمزالمعنى
0ناجح — النتيجة أقل من الحد الأدنى، بدون انتهاك failOn
1خطأ غير معالج أو وسائط خاطئة
2تم تجاوز الحد — نتيجة المستودع ≥ الحد، أو تجاوز حد الملف
3انتهاك --fail-on — تم العثور على انتهاك بالخطورة المحددة
الخيارالافتراضيالوصف
include**/*.{ts,tsx,js,jsx,py,go,rs,java,kt,cs,php,rb,swift,vue,sh,bash,hs,md,txt,yaml,yml,json}أنماط glob للمسح
exclude**/node_modules/**, **/dist/**، إلخ.أنماط glob لتجاهلها
threshold60يفشل إذا كانت درجة المستودع عند هذه القيمة أو أعلى (رمز الخروج 2)
formats["console"]صيغ الإخراج: console، json، sarif، github-annotations، markdown، jsonl، html
outتلقائيالمسار الأساسي لإخراج الملفات
verbosefalseإظهار التصحيحات والثقة لكل نتيجة
failOnغير مضبوطرمز الخروج 3 عند أول نتيجة من: critical، high، أو medium
maxFindingsغير مضبوطالتوقف بعد عدد N من النتائج
excludeRules[]معرفات القواعد أو أنماط glob البادئة لتخطيها (مثال: "CMD-*"، "JBK-002")
includeRules[]تشغيل معرفات القواعد هذه فقط (فارغ = تشغيل الكل)
minConfidenceغير مضبوطتخطي القواعد الأقل من مستوى الثقة هذا: low، medium، أو high
failFileThresholdغير مضبوطيفشل (رمز الخروج 2) إذا سجل أي ملف منفرد درجة عند هذه القيمة أو أعلى
concurrency8الحد الأقصى للملفات التي تتم معالجتها بالتوازي
cachetrueتمكين ذاكرة التخزين المؤقت للمسح التدريجي (.hound-cache.json)؛ اضبط false أو استخدم --no-cache لتعطيله
plugins[]مسارات لملحقات القواعد المحلية .js؛ يجب أن يقوم كل منها بتصدير Rule أو Rule[]
baselineغير مضبوطمسار إلى تقرير JSON سابق؛ يتم الإبلاغ فقط عن النتائج غير الموجودة في خط الأساس
متغيريتجاوز
HOUND_THRESHOLDthreshold
HOUND_FAIL_ONfailOn
HOUND_MIN_CONFIDENCEminConfidence
HOUND_VERBOSEverbose (قيمة صحيحة: 1, true, yes)
HOUND_CONFIGمسار ملف التكوين