
OpenAnt من Knostic هو المنتج الرائد مفتوح المصدر القائم على LLM لاكتشاف الثغرات، حيث يساعد المدافعين على اكتشاف الثغرات الأمنية المؤكدة بشكل استباقي مع تقليل كل من الإيجابيات الكاذبة والسلبيات الكاذبة. المرحلة 1 تكتشف. المرحلة 2 تهاجم. ما يصمد هو الحقيقي.
OpenAnt من Knostic هو منتج مفتوح المصدر لاكتشاف الثغرات الأمنية يعتمد على النماذج اللغوية الكبيرة (LLM)، يساعد المدافعين على اكتشاف الثغرات الأمنية المؤكدة بشكل استباقي مع تقليل النتائج الإيجابية الخاطئة والنتائج السلبية الخاطئة. المرحلة 1 تكتشف. المرحلة 2 تهاجم. ما ينجو هو الحقيقي.
نحن فخورون جداً بهذا المنتج، ونعمل حالياً على عملية الإفصاح المسؤول عن الثغرات التي يكتشفها، لكن ضع في اعتبارك أن هذا بدأ كمشروع بحثي، وأن بعض ميزاته لا تزال في مرحلة البيتا. نرحب بالمساهمات لتحسينه.
نظراً للانفجار في الثغرات الأمنية المكتشفة بالذكاء الاصطناعي، نأمل أن تكون OpenAnt الأداة التي تساعد القائمين على صيانة المشاريع مفتوحة المصدر على البقاء متقدمين على المهاجمين، حيث يمكنهم استخدامها بأنفسهم أو إرسال مستودعاتهم للفحص دون أي تكلفة.
وبما أن تركيز Knostic ينصب على حماية الوكلاء (agents) والمساعدين البرمجيين وليس على أبحاث الثغرات أو أمن التطبيقات، ولأننا نحب المصدر المفتوح، قررنا إصدار OpenAnt بموجب ترخيص Apache 2. علاوة على ذلك، ربما سمعت عن Aardvark من OpenAI (المعروف الآن باسم Codex Security) وClaude Code Security من Anthropic، ولا توجد لدينا أي نية لمنافستهما.
للاطلاع على التفاصيل التقنية والقيود وتكاليف الرموز (tokens)، اطّلع على مقالة المدونة هذه: https://knostic.ai/blog/openant
لإرسال مستودعك للفحص: https://knostic.ai/blog/oss-scan
البحث وتوليد الأفكار: Nahum Korda.
التحويل إلى منتج: Alex Raihelgaus, Daniel Geyshis.
مع الشكر لكل من: Michal Kamensky, Imri Goldberg, Gadi Evron, Daniel Cuthbert. Josh Grossman، وAvi Douglen.
إذا أعجبك عملنا، اطّلع على ما نقوم به في Knostic للدفاع عن وكلائك ومساعديك البرمجيين، ومنعها من حذف قرصك الصلب ورمزك البرمجي، والتحكم في مخاطر سلسلة التوريد المرتبطة مثل خوادم MCP والإضافات والمهارات.
قم ببناء الملف الثنائي لواجهة CLI (يتطلب Go 1.25+):
cd apps/openant-cli && make build
يقوم هذا بتجميع كود Go وإخراج الملف الثنائي إلى apps/openant-cli/bin/openant.
أضف رابطاً رمزياً (symlink) له على PATH لتتمكن من تشغيل openant من أي مكان:
ln -sf "$(pwd)/apps/openant-cli/bin/openant" /usr/local/bin/openant
ملاحظة: نفّذ الأمر من جذر المستودع حتى يتحول $(pwd) إلى المسار المطلق الصحيح.
توجّه OpenAnt كل مرحلة من مراحل خط الأنابيب عبر زوج (موفر، نموذج) قابل للتهيئة. أسرع مسار هو المعالج التفاعلي:
openant setup llm
تقوم بتسمية الإعداد (مثل my-llm)، وتختار موفراً لكل مرحلة من مراحل خط الأنابيب (anthropic أو openai أو google)، وتدخل مفتاح API مرة واحدة لكل موفر، ويقوم المعالج باختبار كل زوج فريد من (موفر+نموذج) بطلب من رمز واحد (1-token) قبل كتابة ~/.config/openant/config.json. شغّل فحصاً ضده باستخدام --llm-config:
openant scan /path/to/repo --llm-config my-llm
تعكس الإعدادات الافتراضية للمعالج توصيات المشروع لكل مرحلة (نماذج استدلال أقوى للكشف / التحقق / مراجعة الوصولية؛ ونماذج أخف لتوليد السياق والتقرير والاختبارات) — ويمكنك تجاوز أي إجابة حسب رغبتك.
| نوع الموفر | مصدر مفتاح API | ملاحظات |
|---|---|---|
anthropic | console.anthropic.com | المحول المرجعي. غير مشمول في اشتراكات Claude Pro / Max — فوترة منفصلة. |
openai | platform.openai.com | غير مشمول في اشتراكات ChatGPT / Codex — فوترة منفصلة. |
google | aistudio.google.com | غير مشمول في Gemini Advanced — فوترة منفصلة. |
تدعم المحولات الثلاثة استدعاء الأدوات (tool calling)، لذا يمكن لأيٍّ منها تشغيل مرحلتَي enhance وverify اللتين تستخدمان حلقة استخدام الأدوات الوكيلية (agentic tool-use loop).
إذا كنت تريد الإعدادات الافتراضية الحالية لـ Claude لكل مرحلة ولا شيء غيرها، فتخطَّ المعالج:
openant set-api-key sk-ant-...
openant scan /path/to/repo
يستخدم هذا الإعداد المدمج openant-default (مُجمَّع داخل الملف الثنائي، ولا حاجة إلى config.json) — Claude Opus 4.6 لمراحل الكشف، وSonnet 4 لباقي المراحل.
يكتب المعالج ملف ~/.config/openant/config.json نيابة عنك، لكن يمكنك أيضاً تحريره مباشرة. يجب أن يسرد كل إعداد llm-config مراحل خط الأنابيب السبع جميعها:
{
"$schema_version": 2,
"default_llm": "my-llm",
"llm_providers": {
"anthropic": {"type": "anthropic", "api_key": "sk-ant-..."},
"openai": {"type": "openai", "api_key": "sk-proj-..."},
"google": {"type": "google", "api_key": "AIza..."}
},
"llm_configs": {
"my-llm": {
"app_context": {"provider": "openai", "model": "gpt-4o-mini"},
"llm_reach": {"provider": "anthropic", "model": "claude-opus-4-6"},
"enhance": {"provider": "openai", "model": "gpt-4o-mini"},
"analyze": {"provider": "anthropic", "model": "claude-opus-4-6"},
"verify": {"provider": "anthropic", "model": "claude-opus-4-6"},
"dynamic_test": {"provider": "google", "model": "gemini-2.0-flash"},
"report": {"provider": "google", "model": "gemini-2.0-flash"}
}
}
}
تقبل الموفرات عنوان base_url مخصصاً للوكلاء (proxies) المتوافقين مع OpenAI / Anthropic (OpenRouter أو vLLM أو Bedrock أو بوابات داخلية). إعداد openant-default (Claude عبر جميع المراحل) مدمج ومتاح دائماً بغض النظر عن محتويات الملف.
طبقة المحولات في OpenAnt هي وصفة Python صغيرة — ملف Python واحد يطبق بروتوكول LLMAdapter، ومصنع واحد لبيئة اختبار العقود (contract-test harness)، بالإضافة إلى إدخال في السجل — وهذا وحده يكفي لتشغيل المحول من إعداد مكتوب يدوياً. ولكي يقدمه معالج openant setup llm أيضاً ويجتاز اختباره قبل الحفظ، أضف بضع نقاط تواصل Go في apps/openant-cli/cmd/setup.go (قائمة الموفرات المدعومة، وحالة case للاختبار، وخرائط النماذج الافتراضية لكل مرحلة) إضافة إلى دالة اختبار Go. تعمل اختبارات العقود الـ 12 تلقائياً على محولك بمجرد توصيله. راجع docs/features/llm-providers/HOW_TO_ADD_AN_ADAPTER.md للوصفة الكاملة.
كود OpenAnt لمراحل parsing وenhancement وanalysis وإعداد التقارير يتطلب Python 3.11+. تختار واجهة Go CLI المفسّر بالترتيب التالي:
OPENANT_PYTHON (اضبطه لتثبيت مفسّر محدد — مثل OPENANT_PYTHON=python3.11).~/.openant/venv/ (تُنشأ تلقائياً عند أول استخدام). يستخدم CLI ملف bin/python على Linux/macOS وScripts\python.exe على Windows.python3 / python على PATH.إذا لم يوفر أيٌّ منها Python 3.11+، يخرج الأمر برسالة خطأ تشير إلى python.org. لإعادة بناء بيئة افتراضية مُدارة قديمة (مثلاً بعد ترقية Python)، احذف ~/.openant/venv/ وأعد تشغيل أي أمر من أوامر openant.
ينشئ OpenAnt دليلين:
~/.config/openant/ — إعدادات واجهة CLI (config.json). يخزّن مفتاح API الخاص بك والمشروع النشط والتفضيلات. صلاحيات الملف مقيدة بـ 0600.~/.openant/ — بيانات المشروع. يحصل كل مشروع تمت تهيئته على مساحة عمل تحت ~/.openant/projects/<org>/<repo>/ تحتوي على project.json ودليل scans/ بمخرجات لكل commit.وجّه OpenAnt إلى مستودع. علامة -l (اللغة) مطلوبة — استخدم go أو python.
# Remote — clones the repo
openant init <repo-url> -l go
# Remote — pin to a specific commit
openant init <repo-url> -l go --commit <sha>
# Local — references the directory in-place
openant init <path-to-repo> -l go --name <org/repo>
ينشئ هذا مساحة عمل للمشروع ويضبطها كمشروع نشط. تعمل جميع الأوامر اللاحقة على المشروع النشط تلقائياً — دون الحاجة إلى وسائط مسار.
تلتقط كل خطوة مخرجات الخطوة السابقة من دليل الفحص الخاص بالمشروع:
openant parse
openant enhance
openant analyze
openant verify
openant build-output
openant report -f summary
أو شغّل خط الأنابيب بالكامل بأمر واحد:
openant scan --verify
يعمل خط الأنابيب على مشروع واحد في كل مرة. تشغيل openant init يضبط المشروع المُهيأ حديثاً كمشروع نشط، لذا تستهدفه جميع الأوامر اللاحقة افتراضياً.
إذا كنت تعمل مع عدة مشاريع، فلديك خياران:
# Option 1: switch the active project
openant project switch org/repo
openant parse
# Option 2: target a project directly with -p
openant parse -p org/repo
openant project list # shows all projects, marks active
openant project show # details of active project
openant project switch <org/repo> # switch active project
أمور على القائمة، دون ترتيب معين:
openant setup llm) وفقاً لدليل المساهمين. مما يخفض الحاجز أمام الاستدلال المحلي / داخل المباني (on-prem).نرحب بنسخ Pull Request حول أيٍّ من هذه الأمور — افتح issue أولاً إذا كان النطاق غير بسيط حتى نتوافق قبل أن تبدأ البناء.
هذا المشروع مرخص بموجب Apache 2. راجع ملف LICENSE للحصول على التفاصيل.
هذا المشروع مخصص للأغراض الدفاعية والبحثية فقط. لا تزال OpenAnt في مرحلة البحث، فاستخدمها بحذر وعلى مسؤوليتك الخاصة. لا تتحمل Knostic وOpenAnt والمطورون والباحثون والمشرفون المرتبطون بها أي مسؤولية مهما كانت عن أي إساءة استخدام أو ضرر أو عواقب تنشأ عن استخدام هذه الأداة.
افحص فقط الرمز البرمجي الذي تملكه أو لديك إذن صريح باختباره. إذا اكتشفت ثغرة في مشروع شخص آخر بوسائل مشروعة، فيرجى اتباع ممارسات الإفصاح المنسق عن الثغرات وإبلاغ المشرفين بها قبل نشرها علناً.