نموذج تهديد بوابة القرار
نظرة عامة
قرار بوابة هو مستوى تحكم حتمي وقابل لإعادة التشغيل للإفصاح المقيد وتقدم المراحل. يقوم بتقييم الشروط المدعومة بالأدلة، ويصدر قرارات قابلة للتدقيق، ويدعم التحقق غير المتصل عبر حزم التشغيل. لا يقوم بتشغيل محادثات الوكلاء.
بوابة القرار تتكون من:
- Control plane core (scenario engine, evidence evaluation, run state, runpack نواة خطة التحكم (محرك السيناريو، تقييم الأدلة، حالة التشغيل، مُنشئ/مُحقق حزمة التشغيل).
- خادم MCP (JSON-RPC عبر stdio/HTTP/SSE) وأدوات سطر الأوامر.
- اتحاد المزودين (المزودين المدمجين بالإضافة إلى مزودي MCP الخارجيين).
- طبقة الإرسال/الوسيط (حل الحمولة والتسليم).
- Storage layers (SQLite or in-memory run state + schema registry, optional طبقات التخزين (SQLite أو حالة التشغيل في الذاكرة + سجل المخطط، تخزين كائنات اختياري لحزم التشغيل).
الوثائق ذات الصلة
- نظرة عامة على المستودع ووضع الأمان:
README.mdوSECURITY.md. - إرشادات تشغيلية وضوابط: دليل الأمان.
- Standards and investigation workflow:
Docs/standards/codebase_engineering_standards.md, معايير وسير العمل للتحقيق:Docs/standards/codebase_engineering_standards.md,Docs/standards/agent_investigation_guide.md. - Architecture references:
Docs/architecture/decision_gate_auth_disclosure_architecture.md,Docs/architecture/decision_gate_evidence_trust_anchor_architecture.md,Docs/architecture/decision_gate_runpack_architecture.md,Docs/architecture/decision_gate_namespace_registry_rbac_architecture.md, مراجع الهندسة المعمارية:Docs/architecture/decision_gate_auth_disclosure_architecture.md,Docs/architecture/decision_gate_evidence_trust_anchor_architecture.md,Docs/architecture/decision_gate_runpack_architecture.md,Docs/architecture/decision_gate_namespace_registry_rbac_architecture.md,Docs/architecture/decision_gate_provider_capability_architecture.md. - Component READMEs:
crates/decision-gate-core/README.md,crates/decision-gate-mcp/README.md, مستندات README للمكونات:crates/decision-gate-core/README.md,crates/decision-gate-mcp/README.md,crates/decision-gate-broker/README.md,crates/decision-gate-providers/README.md.
أهداف الأمان
- تقييم حتمي دون تغيير مخفي للحالة.
- Evidence-backed disclosure only; fail closed on missing, invalid, or الكشف المدعوم بالأدلة فقط؛ الفشل مغلق عند عدم وجود أدلة أو وجود أدلة غير صالحة أو غير قابلة للتحقق.
- إمكانية التدقيق واكتشاف التلاعب لحالة التشغيل وحزم التشغيل.
- تقليل تعرض البيانات؛ الافتراضي هو ملخصات آمنة وأدلة محجوبة.
- Clear trust boundaries between control plane, providers, dispatch targets, حدود الثقة واضحة بين مستوى التحكم، ومقدمي الخدمة، وأهداف الإرسال، والتخزين.
- وصول أدوات الحد الأدنى من الامتيازات وعمليات التسجيل مع تفويض صريح.
- استخدام الموارد المحدودة (حجم الطلب، حجم استجابة المزود، حدود المعدل).
غير الأهداف / خارج النطاق
- حماية السرية بعد الكشف عن البيانات للأنظمة السفلية.
- الحماية ضد اختراق المضيف الكامل أو نواة النظام دون وجود ضوابط خارجية.
- تأمين مقدمي خدمات MCP الخارجيين، والمصارف السفلية، أو تطبيقات العملاء.
- إثبات الأجهزة، ضمانات المنطقة الآمنة، أو خدمات حفظ المفاتيح.
- التوقيع التشفيري على حزم التشغيل أو سجلات المخطط (بخلاف حقول البيانات الوصفية).
- إنهاء TLS وثقة الوكيل (مسؤولية النشر).
الأصول
- مواصفات السيناريو، الشروط، وعلامات السياسة (منطق الأمان).
- Run state logs: triggers, gate evaluations, decisions, packets, submissions, سجلات حالة التشغيل: المحفزات، تقييمات البوابات، القرارات، الحزم، التقديمات، استدعاءات الأدوات.
- قيم الأدلة، التجزئات، المراسي، والتوقيعات.
- تكوين سلطة مساحة الأسماء وتعيينات مساحة الأسماء.
- Data shape registry records (JSON Schemas), versions, and optional signing سجلات تسجيل شكل البيانات (JSON Schemas)، الإصدارات، وبيانات التوقيع الاختيارية.
- إرسال الحمولة، والمظاريف، والإيصالات.
- تشغيل حزم Runpack، والتقارير، والتقارير التحقق.
- عقود المزودين (عقود القدرات) والمخططات.
- Typed runtime auth descriptors (
scheme_name,credential_binding, apiKeyname/location) مضمنة في ملفات تعريف وقت التشغيل. - سجلات التدقيق (أداة التفويض، التحقق المسبق، قائمة التحكم في الوصول للسجل، تفويض المستأجر، الاستخدام).
- Configuration files, provider auth tokens, registry ACL/principal mappings, ملفات التكوين، رموز مصادقة المزود، خرائط ACL/المبدأ في السجل، ومفاتيح التحقق من التوقيع.
- Run state store (SQLite or in-memory), schema registry store, and runpack تشغيل تخزين الحالة (SQLite أو في الذاكرة)، تخزين سجل المخططات، ودليل إخراج runpack.
- دلو تخزين الكائنات لقطع العمل وأرشيفات runpack (متوافق مع S3).
- محتوى كتالوج الوثائق وأي وثائق إضافية تم استيرادها من القرص.
نموذج الخصم
- خصوم الدول القومية الذين لديهم معرفة كاملة بسلوك بوابة القرار.
- عملاء غير موثوقين أو مخترقين يصدرون مشغلات أو استدعاءات أدوات.
- مزودو الأدلة الضارة أو المعيبة وخوادم MCP الخارجية.
- المتسللون المهددون الذين لديهم وصول إلى التكوين أو التخزين أو السجلات.
- المهاجمون على الشبكة القادرون على تنفيذ هجمات MITM، أو إعادة تشغيل، أو إسقاط حركة المرور.
- مؤلفو السيناريوهات الخبيثة أو الخاطئة الذين يمكنهم تحديد مواصفات غير آمنة.
- Malicious schema registrants or policy administrators who can poison registry المتقدمون الضارين في السجل أو مسؤولو السياسات الذين يمكنهم تسميم إدخالات السجل.
- Attackers controlling content references or broker sources (SSRF/exfiltration المهاجمون الذين يتحكمون في مراجع المحتوى أو مصادر الوساطة (خطر SSRF/exfiltration).
- Attackers who can tamper with on-disk provider contracts, configs, or runpack المهاجمون الذين يمكنهم العبث بعقود مزودي الخدمة المخزنة على القرص، أو التكوينات، أو عناصر التشغيل.
حدود الثقة
- وسائل نقل خادم MCP (stdio، HTTP، SSE): جميع مدخلات JSON-RPC غير موثوقة.
- تعريف سيناريو الإدخال: يمكن أن تشفر المواصفات منطق الكشف والوصول إلى البيانات.
- حدود مزود الأدلة: مزودون مدمجون مقابل مزودين خارجيين MCP.
- Namespace authority backend (Asset Core or registry): namespace validation is سلطة مساحة الأسماء الخلفية (Asset Core أو السجل): يجب أن تكون عملية التحقق من صحة مساحة الأسماء خارجية ويجب أن تفشل بشكل مغلق.
- عقود المزود وملفات التكوين على القرص.
- Typed credential resolver backends (default local encrypted secret store in
OSS; enterprise backends via seam) are external trust boundaries for secret
material. OSS local secret storage is metadata
v2with Argon2id-derived keys and AES-256-GCM at rest; legacy metadatav1is hard-rejected. Explicitenv://resolution is development-only and gated bydev.allow_dev_env_credentials. - خلفية سجل المخطط (في الذاكرة/SQLite) وقرارات ACL للسجل.
- تشغيل تخزين الحالة وتشغيل حزم العناصر: اعتبر التخزين غير موثوق.
- Runpack object storage (S3-compatible) and metadata: treat as untrusted and تخزين كائنات Runpack (متوافق مع S3) والبيانات الوصفية: اعتبرها غير موثوقة وتحقق من التجزئة لكل عنصر.
- مصادر الوسيط (http/ملف/مضمن) ومصارف (أنظمة خارجية).
- أهداف الإرسال والأنظمة downstream التي تستقبل الإفصاحات.
- بيئة التحقق غير المتصلة بالإنترنت وقرّاء العناصر.
- Tenant authorization adapters and usage meters (if configured) are external محولات تفويض المستأجرين ومقاييس الاستخدام (إذا تم تكوينها) هي نقاط قرار خارجية.
- استيعاب extra_paths في المستندات (القرص المحلي) وموارد MCP/القائمة/القراءة.
نقاط الدخول وسطح الهجوم
- MCP JSON-RPC methods:
tools/list,tools/call,resources/list, طرق MCP JSON-RPC:tools/list,tools/call,resources/list,resources/read. - MCP tools:
scenario_define,scenario_start,scenario_status,scenario_next,scenario_submit,scenario_trigger,evidence_query,runpack_export,runpack_verify,providers_list,provider_contract_get,provider_check_schema_get,schemas_list,schemas_register,schemas_get,scenarios_list,precheck,decision_gate_docs_search. - CLI commands:
serve,runpack export,runpack verify, authoring validate/normalize, and secret-store administration (secrets init,secrets put --from-env,secrets import --env-file --map,secrets list,secrets remove,secrets doctor). - ملف التكوين ومتغير البيئة
DECISION_GATE_CONFIG. - عمليات مزود MCP الخارجي ونقاط نهاية HTTP.
- Typed provider artifacts (
capabilities_path,runtime_profile_path) loaded من القرص المحلي. - Built-in providers:
env,json,http,rest,time(filesystem, environment, الشبكة). - External content references for packet payloads (
http://,https://, مراجع المحتوى الخارجي لحمولات الحزم (http://,https://,file://,inline:). - مسارات التكوين، عقود المزود، أوامر/روابط المزود، مسارات الوثائق الإضافية.
- وجهات تخزين Runpack (دليل الإخراج المحلي أو تخزين الكائنات).
ضوابط الأمان والثوابت
- Canonical JSON hashing (RFC 8785) with non-finite float rejection for specs, تجزئة JSON القياسية (RFC 8785) مع رفض الأعداد العائمة غير المنتهية للمواصفات، السجلات، حزم التشغيل، والتجزئات.
- تقييم ثلاثي الحالة مع
Unknownيُعتبر غير ناجح. - Evidence hash normalization; optional signature verification (ed25519) when تطبيع تجزئة الأدلة؛ التحقق من التوقيع الاختياري (ed25519) عند التكوين.
- Provider contract registry validates provider check params and allowed سجل عقود المزود يتحقق من معلمات فحص المزود والمقارنات المسموح بها؛ التحقق الصارم من المقارنات/النوع مفعل بشكل افتراضي.
- Namespace authority checks enforce tenant/namespace scoping and fail closed تحقق من سلطة مساحة الأسماء يفرض نطاق المستأجر/مساحة الأسماء ويفشل في حالة الكتالوجات غير المعروفة أو غير المتاحة.
- Evidence trust lanes enforced (verified by default); dev-permissive explicitly تم فرض مسارات ثقة الأدلة (تم التحقق منها بشكل افتراضي)؛ حيث أن السماح بالتطوير بشكل صريح يقلل الثقة إلى ما تم التأكيد عليه لمقدمي الخدمة غير المعفيين فقط.
- Schema registry ACL enforces role/policy-class access and can require signing يفرض ACL سجل المخطط الوصول بناءً على الدور/فئة السياسة ويمكن أن يتطلب توقيع البيانات الوصفية؛ يتم تدقيق عمليات السجل.
- Anchor policy enforcement rejects evidence missing required anchors and إنفاذ سياسة الربط يرفض الأدلة التي تفتقر إلى الربط المطلوب وينشر متطلبات الربط في تحقق تشغيل الحزمة.
- Size and path limits for config files, provider contracts, run state stores, حدود الحجم والمسار لملفات التكوين، عقود المزودين، تخزين حالة التشغيل، استيعاب الوثائق، عناصر runpack، ومفاتيح تخزين الكائنات.
- JSON provider enforces root-bound relative paths and emits
يفرض مزود JSON مسارات نسبية مرتبطة بالجذر ويصدر مراجع
file_path_rootedمعroot_id+pathالمُعَدل. - RET logic hard limits: DSL inputs capped at 1 MiB with nesting depth 32; serialized requirement inputs capped at 1 MiB with default max depth 32; plan execution stack depth capped at 64 frames; constant pools capped at 65,536 إدخال.
- HTTP/SSE request body limits, stdio framing header limits (8 KiB cumulative),
fail-closed duplicate
Content-Lengthrejection, provider-specific response حدود الحجم، وأوقات انتهاء صلاحية المزود. - Typed runtime profiles enforce deterministic digest validation before provider تفعيل وفشل مغلق عند عدم تطابق محتوى الملف الشخصي.
- Typed OpenAPI import enforces operation-effective security resolution
(
operation.securityprecedence, explicit unauthenticated alternatives) and ترفض أشكال متطلبات الأمان غير المدعومة/الغامضة الفشل المغلق. - Typed OpenAPI projection metadata (
x-decision-gate.projections) is treated as untrusted input: importer enforces deterministic id uniqueness, RFC6901 pointer validity, schema validity, and fail-closed rejection for JSON استجابات object/array-complex تفتقر إلى الإسقاطات المطلوبة. - Typed runtime auth is operation-scoped and explicit: only
bearer/basic/apiKey(header|query|cookie)are supported;oauth2andopenIdConnectتظل خارج النطاق وتفشل بشكل مغلق. - Typed OpenAPI imports require an explicit
credential_bindingsfield; omitted fields and missing secured-scheme mappings are rejected before استيراد/تنفيذ وقت التشغيل. - Each secured credential binding requires explicit wire render metadata
(
value_render)، مما يمنع انحراف تنسيق المصادقة الضمني. - Credential locator parsing is fail-closed at import/register/runtime
boundaries: only
secret://andenv://schemes are accepted; bare env تم رفض الأسماء والمخططات unknown. - Runtime auth credential values are stored as raw secrets and rendered
deterministically at use-time (
identityorprefix). Preformatted-prefix يتم رفض التصادمات مع أخطاء تصحيح السرية الخام. secret://paths enforce anti-traversal and bounded syntax (./..rejected, max path length 256 chars, max 8 segments, max segment طول 64،[A-Za-z0-9_.-]مجموعة أحرف المقطع).- Typed runtime outbound controls enforce per-provider inflight caps and bounded
سياسة إعادة المحاولة للمهلة/
429/503، بما في ذلك استخدامRetry-Afterالمحدود. - حدود طلبات الطيران وحدود معدل الاختياري لاستدعاءات أداة MCP.
- MCP tool calls require explicit authn/authz (local-only by default; bearer or تتطلب مكالمات أدوات MCP مصادقة وتفويض صريحين (محلي فقط بشكل افتراضي؛ قوائم السماح لموضوع bearer أو mTLS عند التكوين) مع تسجيل تدقيق.
- Debug mutation diagnostics endpoint (
/debug/mutation_stats) is protected by the same auth model as MCP tool calls and fails closed (401/403) on طلبات غير مصادق عليها / غير مصرح بها. - Tool visibility filters list/call surfaces; docs search/resources can be قائمة مرشحات رؤية الأداة / واجهات الاستدعاء؛ يمكن تعطيل بحث الوثائق / الموارد.
- يتم التحكم في استدعاءات الأدوات بواسطة خطاف تفويض المستأجر (إذا تم تكوينه) ويتم تدقيقه.
- Precheck is read-only: asserted evidence validated against schemas, no run الفحص المسبق للقراءة فقط: دليل مؤكد تم التحقق منه ضد المخططات، دون تغيير حالة التشغيل أو الإفصاحات.
- ملخصات آمنة لحالة العملاء؛ حذف الأدلة وفقًا للسياسة.
scenario_submit.payloadandscenario_trigger.payloadare persisted as runscenario_submit.payloadوscenario_trigger.payloadيتم الاحتفاظ بهما كسجلات تشغيل ويتم تضمينهما في حزم التشغيل؛ اعتبرهما كقنوات بيانات تدقيق غير سرية.- SQLite run state uses canonical JSON + hash verification on load; runpack حالة تشغيل SQLite تستخدم JSON القياسي + التحقق من التجزئة عند التحميل؛ تستخدم بيانات التشغيل تجزئات الملفات + التجزئة الجذرية لضمان النزاهة.
التهديدات والتخفيفات
المصادقة، التفويض، والتحكم في الوصول
- Unauthorized tool access: local-only defaults, bearer/mTLS modes, per-tool allowlists, tool visibility filters, auth-gated debug diagnostics endpoints, وتسجيل تدقيق.
- Tenant/namespace abuse: namespace authority checks, default namespace إساءة استخدام المستأجر/الفضاء: فحوصات سلطة الفضاء، رفض الفضاء الافتراضي بشكل افتراضي، روابط تفويض المستأجر، وقوائم التحكم في الوصول إلى السجل.
- Registry poisoning/leakage: ACL rules and optional signing metadata تسمم/تسرب السجل: متطلبات قواعد ACL وبيانات التوقيع الاختيارية مع سجلات التدقيق.
تحقق من صحة الإدخال وتحليله
- Untrusted JSON-RPC/config inputs: strict typed decoding, comparator مدخلات JSON-RPC/التكوين غير موثوقة: فك تشفير صارم النوع، التحقق من المقارنات، تطبيع JSON القياسي، وحدود الحجم/المسار.
- JSONPath/YAML parsing in
jsonprovider: root-bound relative paths (absolute تحليل JSONPath/YAML في مزودjson: مسارات نسبية مرتبطة بالجذر (تم رفض المسارات المطلقة)، فحوصات التنقل، حدود الحجم، ومعالجة الأخطاء الهيكلية. - JSONPath/header extraction in
restprovider: GET-only request surface, bounded responses, JSON content-type enforcement forjson_path, strict التحقق من رأس الطلب، ورفض تجاوز رأس المصادقة. - Provider contract tampering: contract path validation and canonical hashing التلاعب بعقد المزود: التحقق من مسار العقد والتجزئة القياسية لحمولات العقد.
- Typed provider artifact tampering: config validation requires typed artifact paths/protocol metadata and runtime loading verifies canonical profile digest النزاهة قبل التنفيذ.
- Typed runtime request-binding abuse: path bindings are percent-encoded before template substitution, typed header bindings reject reserved/auth-owned names, وتفرض حدود أمان وقت التشغيل حدودًا على المهلة/حجم الاستجابة.
- Typed OpenAPI security-shape abuse: importer rejects multi-scheme AND
requirements, missing security scheme refs, malformed security requirement
الأشياء/النطاقات، و
apiKeyغير صالح/مفقودname/in. - Typed OpenAPI projection abuse: importer rejects malformed projection arrays, duplicate projection ids, invalid RFC6901 pointers, and invalid projection المخططات؛ تظل حالات فشل استخراج مؤشرات JSON في وقت التشغيل مغلقة.
سلامة الأدلة وموثوقيتها
- Malicious or faulty providers: trust lanes, optional signature verification, مقدمو خدمات ضارة أو معيبة: مسارات الثقة، التحقق الاختياري من التوقيع، تنفيذ سياسة التثبيت، وتجزئة الأدلة الكنسية.
- External MCP providers: response size limits, timeouts, and correlation ID
sanitization. Stdio framing headers are size-capped and duplicate
Content-Lengthheaders are rejected before payload parsing; treat providers كعمليات غير موثوقة أو خدمات بعيدة. - Typed runtime providers: profile/source digests are bound into runtime execution and evidence anchors; tampered runtime profile artifacts are تم رفضه قبل إجراء الفحوصات.
كشف البيانات وتعريضها
- Evidence leakage through tools: evidence redaction policies for
تسرب الأدلة من خلال الأدوات: سياسات حذف الأدلة لـ
evidence_queryوscenario_next؛ ملخصات آمنة بشكل افتراضي. - Sensitive data in submit/trigger payloads: payloads are intentionally durable for audit/replay; mitigated by integration policy (no raw secrets, use opaque البيانات الحساسة في حمولات الإرسال/التفعيل: الحمولات مصممة لتكون دائمة عمدًا للتدقيق/إعادة التشغيل؛ يتم التخفيف من ذلك من خلال سياسة التكامل (لا أسرار خام، استخدم مقبضات غير شفافة ومتاجر أسرار خارجية).
- Policy bypass in dispatch: optional policy engine (
permit_all,deny_all, تجاوز السياسة في الإرسال: محرك السياسة الاختياري (permit_all,deny_all, أو القواعد الثابتة) يتحكم في الكشف قبل الإرسال.
سلامة التخزين والتشغيل
- Run state tampering: SQLite store verifies canonical hash on load and fails التلاعب بحالة التشغيل: يتحقق تخزين SQLite من تجزئة الكانونية عند التحميل ويفشل مغلقًا؛ إصدارات حالة التشغيل هي فقط للإضافة (مع تقليم الاحتفاظ الاختياري).
- Runpack tampering: verifier checks artifact hashes, root hash, and anchor policy; no built-in signing (external signing/WORM required for التلاعب بحزمة التشغيل: يتحقق المدقق من تجزئة الأرتيفكت، التجزئة الجذرية، وسياسة التثبيت؛ لا يوجد توقيع مدمج (يتطلب توقيع خارجي/WORM لعدم الإنكار).
مقدمو الخدمات الخارجيون، المصادر، والإرسال
- Broker sources (http/file/inline) used for payload resolution: content hash verification, content type checks, size limits, no redirects (HTTP), broker-owned transport policy (no caller-injected HTTP client overrides), and optional root تطبيق المسار (ملف).
- Built-in providers: allowlists/denylists and size limits for
env, root restrictions and size limits forjson, and host allowlists + DNS-pinned التحقق من الأقران + رفض افتراضي للروابط الخاصة/المحلية لـhttpوrest. - Typed OpenAPI HTTP providers: runtime execution reuses hardened HTTP controls (DNS pinning, redirect rejection, status/content-type validation, bounded تقرأ الاستجابة) مع مرساة محددة من نوع معين.
- Typed import + lifecycle tooling enforces bounded
timeout_ms, boundedmax_response_bytes, boundedoperation_allowlistcardinality, bounded outbound inflight/retry controls, requiredcredential_bindingmapping, ورفض تكرارcheck_idالمغلق في العقود / ملفات التشغيل.
توافر واستنفاد الموارد
- Large requests/responses:
max_body_bytes, provider response caps, schema size limits, runpack artifact limits, and optional rate limiting/inflight الطلبات/الردود الكبيرة:max_body_bytes، حدود استجابة المزود، حدود حجم المخطط، حدود عناصر runpack، وحدود معدل الاختياري/الحدود الجارية. - مهلات مزود الخدمة: مهلات مزود HTTP وحدود استجابة مزود MCP.
- Typed outbound retry bursts: bounded attempts/backoff and per-provider تخفف أغطية الرحلات الخارجية من عواصف إعادة المحاولة وتضخيم الانتشار.
بيئة سلسلة التوريد والتنفيذ
- Release workflows enforce full artifact supply-chain evidence generation and التحقق قبل الأهلية للإصدار أو النشر يمكن أن يستمر.
- Every release subject requires SBOM coverage, provenance, and signature التحقق؛ التغطية المفقودة هي فشل صعب.
- Keyless OIDC signing (
cosign) is required in CI with certificate issuer and التحقق من التعبير العادي للهوية. - Vulnerability policy is fail-closed: block
High/Criticalvulnerabilities بالإضافة إلى أي CVE في تغذية الثغرات المعروفة المستغلة من CISA. - Supply-chain evidence artifacts are retained with release artifacts for audit والمصادقة غير المتصلة بالإنترنت.
- External providers execute with local privileges; use OS sandboxing, scoped يقوم مقدمو الخدمات الخارجيون بالتنفيذ بامتيازات محلية؛ يستخدمون عزل نظام التشغيل، بيانات الاعتماد المحدودة، وأدنى الأذونات.
- Provider contracts, configs, and docs extra_paths are local file inputs and عقود المزودين، والتكوينات، والمستندات extra_paths هي مدخلات ملفات محلية ويجب حمايتها بواسطة قوائم التحكم في الوصول لنظام الملفات وضوابط النزاهة.
تعدد المستأجرين والعزل
- Tenant/namespace IDs are labels, not access controls: enforce authn/authz, معرفات المستأجر/الفضاء هي تسميات، وليست ضوابط وصول: فرض المصادقة والتفويض، وموصلات تفويض المستأجر، وقوائم التحكم في الوصول في النشر المشترك.
قابلية التدقيق والمراقبة
- Auth decisions, registry access, tenant authz, and usage are logged with يتم تسجيل قرارات المصادقة، والوصول إلى السجل، وتفويض المستأجر، والاستخدام مع أحداث تدقيق منظمة؛ سجلات الفحص المسبق تكون بالهاش فقط بشكل افتراضي.
مراجع التنفيذ (التحكمات والحمايات)
وقت التشغيل الأساسي
- Canonical JSON hashing and non-finite float rejection:
تجزئة JSON القياسية ورفض الأعداد العائمة غير المحدودة:
crates/decision-gate-core/src/core/hashing.rs. - Tri-state comparator evaluation:
تقييم المقارن ثلاثي الحالة:
crates/decision-gate-core/src/runtime/comparator.rs. - Trust lane enforcement and anchor policy validation:
crates/decision-gate-core/src/runtime/engine.rs, تنفيذ مسار الثقة والتحقق من سياسة الربط:crates/decision-gate-core/src/runtime/engine.rs,crates/decision-gate-core/src/core/evidence.rs. - Safe summaries:
ملخصات آمنة:
crates/decision-gate-core/src/core/summary.rs. - Runpack build/verify and artifact size limits:
حدود حجم بناء/تحقق Runpack والأثر:
crates/decision-gate-core/src/runtime/runpack.rs.
خادم MCP والأدوات
- Authn/authz, tool allowlists, bearer parsing, and auth audit:
المصادقة/التفويض، قوائم الأدوات المسموح بها، تحليل حاملي الرموز، وتدقيق المصادقة:
crates/decision-gate-mcp/src/auth.rs،crates/decision-gate-config/src/config.rs. - Request limits (max body, inflight, rate limiting) and transport handling:
حدود الطلبات (الحد الأقصى للجسم، في الطيران، تحديد المعدل) ومعالجة النقل:
crates/decision-gate-mcp/src/server.rs,crates/decision-gate-config/src/config.rs. - Stdio framing header size enforcement for server and provider transports:
crates/decision-gate-mcp/src/server.rs،crates/decision-gate-mcp/src/evidence.rs. - Correlation ID sanitization:
تطهير معرف الارتباط:
crates/decision-gate-mcp/src/correlation.rs. - Tool visibility, docs gating, evidence redaction, and precheck handling:
crates/decision-gate-mcp/src/tools/router.rs. - Deterministic docs ingestion with bounded extra-doc budgets:
crates/decision-gate-mcp/src/docs.rs. - Audit event payloads:
حمولات أحداث التدقيق:
crates/decision-gate-mcp/src/audit.rs. - Tenant authz and usage meter seams:
seams مصادقة المستأجر واستخدام المقياس:
crates/decision-gate-mcp/src/tenant_authz.rs,crates/decision-gate-mcp/src/usage.rs. - Provider contract validation + strict comparator validation:
التحقق من عقد المزود + التحقق من المقارنات الصارمة:
crates/decision-gate-mcp/src/capabilities.rs،crates/decision-gate-mcp/src/validation.rs. - Evidence signature verification, external MCP provider response caps, and
typed provider runtime-profile loading:
crates/decision-gate-mcp/src/evidence.rs.
مقدمو الخدمة والوسيط
- Built-in provider limits and policies:
crates/decision-gate-providers/src/env.rs,crates/decision-gate-providers/src/json.rs,crates/decision-gate-providers/src/http.rs,crates/decision-gate-providers/src/rest.rs,crates/decision-gate-providers/src/time.rs. - Typed provider runtime execution and profile digest enforcement:
crates/decision-gate-providers/src/typed.rs. - Provider allow/deny policy:
سياسة السماح/الرفض لمقدمي الخدمة:
crates/decision-gate-providers/src/registry.rs. - Typed import/adaptation/codegen pipeline:
crates/decision-gate-typed/src/lib.rs,crates/decision-gate-typed/src/adapter_openapi.rs,crates/decision-gate-typed/src/adapter_protobuf.rs,crates/decision-gate-typed/src/capability_codegen.rs,crates/decision-gate-typed/src/runtime_codegen.rs. - Broker payload validation and source restrictions:
crates/decision-gate-broker/src/broker.rs,crates/decision-gate-broker/src/source/file.rs, التحقق من الحمولة الخاصة بالوسيط وقيود المصدر:crates/decision-gate-broker/src/broker.rs,crates/decision-gate-broker/src/source/file.rs,crates/decision-gate-broker/src/source/http.rs,crates/decision-gate-broker/src/source/inline.rs.
التخزين والعقود
- SQLite run state + schema registry integrity and size limits:
حالة تشغيل SQLite + سلامة سجل المخطط وحدود الحجم:
crates/decision-gate-store-sqlite/src/store.rs. - In-memory stores (tests/demos only):
مخازن الذاكرة (للاختبارات/العروض فقط):
crates/decision-gate-core/src/runtime/store.rs. - Object-store runpack export key validation:
التحقق من مفتاح تصدير runpack لمخزن الكائنات:
crates/decision-gate-mcp/src/runpack_object_store.rs. - Config file size/path validation and defaults:
التحقق من حجم/مسار ملف التكوين والقيم الافتراضية:
crates/decision-gate-config/src/config.rs. - Canonical tool and schema contracts:
عقود الأدوات والمخططات القياسية:
crates/decision-gate-contract/src/tooling.rs,crates/decision-gate-contract/src/schemas.rs. - Contract output generation and verification with descriptor-relative no-follow
file operations:
crates/decision-gate-contract/src/contract.rs. - CLI authoring/runpack tooling:
أدوات تأليف/تشغيل CLI:
crates/decision-gate-cli/src/main.rs.
إصدار سلسلة التوريد CI
- Supply-chain artifact generation and evidence contract emission:
scripts/ci/supply_chain_generate.sh,Docs/generated/supply_chain/supply_chain_evidence.schema.json. - Supply-chain verification hard gates:
scripts/ci/supply_chain_verify.sh,scripts/ci/vuln_policy_gate.py. - Release and publish workflow enforcement:
.github/workflows/release.yml,.github/workflows/publish.yml.
متطلبات التشغيل
- Restrict MCP access to authenticated transports (mTLS, IPC ACLs, reverse قصر الوصول إلى MCP على وسائل النقل الموثوقة (mTLS، IPC ACLs، مصادقة الوكيل العكسي) وفرض TLS لـ HTTP/SSE (أو إنهاء صريح في الاتجاه العلوي).
- Configure
server.authfor non-loopback deployments; rotate tokens and قم بتكوينserver.authللنشر غير المتكرر؛ قم بتدوير الرموز والحفاظ على قوائم الأدوات المسموح بها. - حافظ على تعطيل dev-permissive في الإنتاج؛ تطلب مسارات الثقة الموثوقة.
- Require signature verification for external providers where integrity تطلب التحقق من التوقيع لمقدمي الخدمات الخارجيين حيث تهم النزاهة؛ إدارة توزيع المفاتيح بشكل آمن.
- Configure allowlists for
env,json,http, andrestproviders; avoid الوصول غير المقيد إلى الملفات. - For typed providers, protect
capabilities_pathandruntime_profile_pathartifacts with filesystem ACLs and integrity controls; treat these files as مدخل غير موثوق به حتى تنجح عملية التحقق من التجزئة. - Restrict
schemas_register,schemas_get,schemas_list,precheck, andscenarios_listto trusted callers (tool allowlists + tenant authz + registry ACLs). Restrict provider discovery tools with tool allowlists and قوائم السماح/الرفض لـprovider_discovery. - Configure schema registry ACL rules and signing metadata requirements where قم بتكوين قواعد ACL لسجل المخططات ومتطلبات توقيع البيانات الوصفية حيث تكون الأصول مهمة؛ احمِ متجر السجل.
- Limit or disable
runpack_exportfor untrusted callers; restrict output قم بتحديد أو تعطيلrunpack_exportللمتصلين غير الموثوقين؛ قيد مسارات الإخراج وبدء تخزين الكائنات. - Store run state and runpacks in tamper-evident storage; sign manifests قم بتخزين حالة التشغيل و runpacks في تخزين يظهر عليه علامات التلاعب؛ قم بتوقيع البيانات الوصفية خارجيًا عندما تكون عدم الإنكار مطلوبة.
- تطبيق عزل على مستوى نظام التشغيل لمزودي الخدمات الخارجيين ومصادر الوسطاء.
- Set
server.max_body_bytes,server.limits, and provider timeouts to قم بتعيينserver.max_body_bytesوserver.limitsووقت انتهاء صلاحية المزود لمنع استنفاد الموارد. - Disable docs search/resources in untrusted environments or restrict extra تعطيل البحث في الوثائق/الموارد في البيئات غير الموثوقة أو تقييد المسارات الإضافية لتكون في مواقع للقراءة فقط.
وضع الفشل
- الفشل مغلق عند عدم وجود أو عدم صحة أو عدم إمكانية التحقق من الأدلة.
- رفض التكوينات غير الصالحة، واستدعاءات الأدوات، وتسجيلات المخططات.
- لا تكشف عن البيانات المتعلقة بالنتائج
Unknownأو الغامضة.
نموذج التهديد دلتا (2026-02-01)
- Added explicit coverage for docs search/resources, tool visibility filters, تمت إضافة تغطية صريحة لبحث الوثائق / الموارد، ومرشحات رؤية الأدوات، وتنظيف معرف الارتباط، وحجب بيانات التدقيق.
- توسيع حماية الوسطاء/المصادر وتغطية التحقق من مفاتيح تخزين الكائنات.
- تم ربط ضوابط الأمان بمواقع الشيفرة المحددة لضمان إمكانية تتبعها.
- تم إضافة حدود حجم/عمق إدخال التأليف بشكل صريح في تطبيع العقد.
- تمت إضافة سياسة السماح/الرفض لمضيف مصدر HTTP مع حراس IP الخاصة/المحلية.
- تم فرض فتح مصدر ملف آمن للروابط الرمزية للكشف عن الملفات الجذرية.
نموذج التهديد دلتا (2026-02-14)
- Tightened debug diagnostics boundary:
/debug/mutation_statsnow follows MCP دلالات المصادقة وتفشل بشكل مغلق للمتصلين غير المصرح لهم. - Added end-to-end auth/schema coverage for debug mutation diagnostics to keep العقد قابل للتدقيق وقابل للتحديد تحت تراجع الأمان.
نموذج التهديد دلتا (2026-02-15)
- Added explicit coverage for CLI stdio MCP framing header limits and
رفض تكرار
Content-Lengthفي سيناريوهات النقل العدائية. - Added MCP server and external provider framing-header caps (8 KiB cumulative) لإغلاق مسارات استنفاد موارد ما قبل التحليل.
- Added fail-closed duplicate
Content-Lengthrejection for MCP stdio framing في كل من خوادم وموصلات النقل لمزودي الخدمة الخارجيين. - Added deterministic, bounded docs ingestion references for
docs.extra_pathsلتقليل عدم تحديد المسار ومخاطر تضخيم بدء التشغيل. - Added built-in HTTP provider DNS resolution pinning and default private / رفض وجهة محلية للربط لإغلاق مسارات تجاوز SSRF التي تعتمد فقط على اسم المضيف.
- Added descriptor-relative no-follow file operations and atomic sibling-temp writes for contract artifact generation/verification to reduce TOCTOU risk تحت تغيير نظام الملفات المحلي المتزامن.
نموذج التهديد دلتا (2026-02-17)
- Added built-in REST provider attack-surface coverage for GET-only external
استخراج أدلة API (
json_path,header) بدون محولات MCP خارجية. - Added REST-specific header hygiene controls, including reserved-header رفض ورفض تجاوز رأس الإدارة.
- Extended provider hardening references to include REST provider DNS pinning,
private/link-local deny-by-default, JSON content-type gating for
json_path, وتعامل مع الاستجابة المحدودة. - Added typed provider boundary coverage for local capability/runtime artifacts وإخفاق التحقق من صحة ملخص ملف تعريف وقت التشغيل من نوع fail-closed.
- Added typed OpenAPI runtime attack-surface coverage for profile-driven request ربط، تحقق صارم من الاستجابة، ومرساة محددة من نوعها.
- Added typed runtime header-reservation and auth-header ownership enforcement ترميز معلمات المسار الأكثر أمانًا لمنع حقن الفواصل.
- Added typed import/runtime hard limits (
timeout_ms,max_response_bytes, وطولoperation_allowlist) مع تحقق مغلق عند الفشل. - Mapped typed import/codegen/runtime protections to OSS implementation files للمراجعة الأمنية القابلة للتتبع.
نموذج تهديد دلتا (2026-02-19)
- Hardened typed lifecycle tool boundaries: all
typed_providers_*mutations now require explicittenant_id+namespace_idand pass scoped context من خلال التفويض، وسلطة مساحة الأسماء، وروابط قياس الاستخدام. - Extended tenant-authz request context with optional
provider_idfor provider-scoped tool calls (typed_providers_*,evidence_query) so يمكن لنظام التحكم في الوصول القائم على الدور المؤسسي فرض سياسة على مستوى المزود عند الحدود. - Added scoped typed runtime resolution seam (
TypedProfileResolver) keyed by(tenant_id, namespace_id, provider_id)to prevent cross-scope profile اختيار عندما تشارك حالة دورة الحياة معرفات المزود. - Resolver invocation now snapshots the configured typed resolver before calling it, avoiding lock-held resolver execution and reducing deadlock/DoS خطر من تنفيذات محلل إعادة الدخول.
- Added REST runtime policy hook seam (
RestPolicyEvaluator) for fail-closed قرارات الرفض السابقة للشبكة بشأن استخدام المضيف/المخطط الخارجي ومخطط المصادقة. - Added deterministic REST policy deny-code coverage in provider tests to keep مصطلحات التنفيذ/التدقيق مستقرة عبر التكاملات.
- Updated release supply-chain posture to implemented state: complete artifact-level SBOM/provenance/signature verification with keyless OIDC توقيع وبوابات سياسة الثغرات الصعبة (عالية/حرجة + KEV).
- Added release CI implementation references for supply-chain generation, التحقق، وفرض سير العمل.
نموذج التهديد دلتا (2026-02-20)
- Added CI workflow hardening policy enforcement via
scripts/ci/workflow_hardening_check.pyfor immutable full-SHA action تثبيت ورفض مغلق للفشل لأنماط أنبوب المثبت القابلة للتغيير إلى الصدفة. - Added explicit self-hosted PR trust-boundary policy: any pull-request workflow
job using self-hosted runners must enforce same-repo guards
(
head.repo.full_name == github.repository). - Reduced default workflow token scope for release/publish and constrained OIDC اكتب استخدامًا لإصدار/نشر الوظائف التي تقوم بتوقيع/تحقق من أدلة سلسلة التوريد.
- Tightened keyless signature verification scope in release/publish by binding تعريف هوية الشهادة regexp إلى المستودع + مسار سير العمل + مراجع العلامات.