
مدقق أمني مستقل ذو قبعة بيضاء لمراجعة الكود المدعومة بالذكاء الاصطناعي، وبحث مكافآت الثغرات، وبناء الاستغلالات، والتحقق القائم على التنفيذ.
configs/ - ملفات تعريف السياق الاختياريةهذه الملفات JSON اختيارية، وملفات تعريف سياق خالية من الإجابات. إنها ليست أوضاع منتج Flounder ولا يتم تحميلها افتراضيًا. إنها موجودة للحالات التي يرغب فيها المشغل عمدًا في إعطاء النموذج إطارًا مألوفًا لفئة من الهدف.
| الملف | السياق الاختياري |
|---|---|
vulnerability-audit.default.json | سياق تدقيق أمني عام (مستقل عن المجال) |
zk-constraint-audit.default.json | دوائر المعرفة الصفرية / نظام القيود |
solidity-contract-audit.default.json | العقود الذكية Solidity / EVM |
thegraph-contracts.default.json | عقود بروتوكول The Graph |
cairo-starknet-audit.default.json | عقود Cairo والمكونات المتعلقة بـ Starknet |
كل منها هو هيكل projectContext لتلك الفئة: نوع الأصول، وقدرات المهاجم، وحدود الثقة، والثوابت، ومجالات التركيز التي تميل مجموعة معروفة إلى امتلاكها. لا يزال النموذج يمتلك استراتيجية التدقيق ولا يزال الإطار يتطلب دليل تنفيذ.
الإطار لا يقوم أبدًا بتحميل هذه الملفات من تلقاء نفسه. تشغيل flounder run / flounder map / flounder audit الافتراضي لا يحمل أي معرفة مسبقة بالأخطاء: التشغيل أعمى وقائم على التنفيذ، لذا يجب على النموذج تعداد سطح الهجوم من المصدر الفعلي قبل أن تتمكن أي محاكمة تدقيق من العثور على شيء. إعطاء النموذج قائمة مكتوبة مسبقًا بالمكان الذي تعيش فيه الأخطاء عادةً يجعله متحيزًا نحو المناطق المدرجة وبعيدًا عن غير المدرجة، ويخاطر بتحويل التدقيق إلى مطابقة قائمة مرجعية بدلاً من القراءة. هذا هو عكس الطريقة التي صُممت بها هذه الأداة للعثور على أخطاء جديدة، لذا تظل ملفات التعريف معطلة ما لم تطلبها.
إنها موجودة للحالات التي تكون فيها هذه المقايضة مجدية: فئة ثغرات معروفة جيدًا حيث يكون زرع السطح الشائع مفيدًا حقًا، ميزانية محدودة تحتاج إلى بداية في التركيز / خارج النطاق، أو تأطير سريع للنطاق لمجموعة مألوفة. ملفات تعريف Solidity/EVM و ZK هي أمثلة شائعة عالية الإشارة. في تلك الحالات، قم بالاشتراك:
flounder run --config ./configs/solidity-contract-audit.default.json \
--target my-protocol --source ./contracts --corpus ./docs
--config <file> يدمج في تكوين التشغيل (applyConfigOverrides)، ثم علامات سطر الأوامر تتجاوزه — لذا فإن --target / --source / --corpus / --max-steps التي تمررها عبر CLI هي التي تسود على الملف. من projectContext، فقط summary، focusAreas، و outOfScope تصل حاليًا إلى النموذج (منسوجة في ملاحظة النطاق الخاصة به). الحقول الأكثر ثراءً أدناه هي توثيق/هيكل اليوم — تسجل نموذج التهديد لمؤلف بشري ولكن لم يتم حقنها بعد في المطالبة.
{
"targetName": "…",
"sourcePaths": [], // usually left empty; pass the real target via --source
"corpusPaths": [], // usually left empty; pass the project's own docs via --corpus
"thinkingLevel": "xhigh",
"projectContext": {
"summary": "…", // ── injected into the model's scope note
"focusAreas": ["…"], // ── injected
"outOfScope": ["…"], // ── injected
"criticalAssets": ["…"], // scaffold only (declared, not yet prompted)
"attackerCapabilities": ["…"], // scaffold only
"trustBoundaries": ["…"], // scaffold only
"securityInvariants": ["…"], // scaffold only
"scenarioGuidance": ["…"] // scaffold only
}
}
اترك sourcePaths / corpusPaths فارغين في ملف التعريف وقم بتمرير الهدف الحقيقي ومواصفات/وثائق المشروع نفسه عبر سطر الأوامر. ملف التعريف هو إطار، وليس بديلاً عن المادة الفعلية للهدف.
ملف التعريف هو سياق، وليس حكمًا أبدًا. قد يخبر النموذج أين ينظر؛ لا يجوز له إخبار النموذج بما سيجده. لا يزال التأكيد يأتي فقط من التنفيذ — النتيجة حقيقية لأن PoC تم تشغيله، وليس لأنها تطابقت مع ملف تعريف. (يقول scenarioGuidance الخاص بملفات التعريف ذلك صراحة: "لا تكتب قواعد أخطاء ثابتة تدعي نتائج.")
هذا هو المنزل الاختياري لـ حزم سياق المجال. لإضافة واحدة، اجعلها عامة لفئة * وخالية من الإجابات: التقط سطح الهجوم والثوابت التي تميل الفئة إلى امتلاكها، وليس أبدًا خطأ معروفًا محددًا في هدف محدد. أي شيء خاص بالهدف ينتمي إلى --corpus الخاص بذلك التدقيق، وليس هنا.