نموذج تهديد المسجل
نظرة عامة
المسجل هو طبقة بيانات الأدلة الحتمية لأنظمة الحوكمة. يقوم بامتصاص أحداث الحدود غير المغلقة، ويقوم بإغلاقها في مظروفات متسلسلة بالهاش، ويحتفظ بها في مقاطع قابلة للإضافة فقط، ويصدر حزم قابلة للتحقق من أجل الفحوصات غير المتصلة بالإنترنت.
يتكون المسجل من:
- Core contracts (
recorder-core): identity, hash/signature abstractions, أنواع الفلتر/المؤشر، جبر الأخطاء. - Envelope model (
recorder-envelope): canonical encoding, envelope/segment/bundle أنواع، نتيجة التحقق الجبري. - Decision Gate integration adapter (
recorder-decision-gate-adapter): deterministic MCP/runpack transcript mapping, runpack integrity policy, and تنفيذ سياسة تعديل النصوص / الحدود. - OpenTelemetry integration adapter (
recorder-otel-adapter): deterministic OTel JSON export mapping, strict record validation, and تنفيذ سياسة الحدود/التحرير. - Recorder runtime (
recorder): ingest validation, segment lifecycle, باني الحزم، المدقق غير المتصل، تنفيذات المزود/المحول. - Rust SDK facade (
recorder-sdk): deterministic builder and unified in-process واجهة فوق المسجل، المحول، المزود، المدقق، ومقابض التخزين. - Python sidecar SDK (
recorder-client): contract-driven sync/async sidecar HTTP client with strict response/error typing, retry-safe idempotency behavior, وتم التحقق من انحراف العقد المولد. - Storage backends (
recorder-store): SQLite and in-memory implementations of متاجر الظرف، والمرفق، والجزء. - Sidecar config authority (
recorder-sidecar-config): canonical sidecar config model, fail-closed validation, and deterministic config projection artifacts (schema/compat/example/docs) المستخدمة في توليد العقود وبوابات CI. - Sidecar service surface (
recorder-sidecar): HTTP/JSON runtime exposing recorder/query/bundle/config workflows over Unix/TCP with auth/bounds/ idempotency controls, strict media-type policy enforcement, and first-party مسار توافق إدخال OTel JSON. - CLI surface (
recorder-cli): local operator commands for record/query/bundle/ config/doctor workflows plus Decision Gate وOTel fixture ingest.
يدعم المسجل الآن كل من سير العمل المحلي وعملية الخدمة الجانبية HTTP المدمجة. تظل الأغطية الخارجية (على سبيل المثال، جسور MCP أو بوابات API) ضمن النطاق كحدود معادية.
الوثائق ذات الصلة
- نظرة عامة على المستودع:
README.md. - وضع الأمان والمتطلبات:
Docs/Standards/codebase_engineering_standards.md. - Architecture references: Docs/architecture/recorder_system_architecture.md, Docs/architecture/recorder_evidence_model_and_integrity_architecture.md, Docs/architecture/recorder_runtime_and_bundle_architecture.md, Docs/architecture/recorder_storage_architecture.md, Docs/architecture/recorder_sidecar_architecture.md, Docs/architecture/recorder_cli_and_operator_workflows_architecture.md, Docs/architecture/recorder_system_test_and_validation_architecture.md.
- Design references:
Docs/design/recorder_core_math_evidence_observability_and_verification.md, مراجع التصميم:Docs/design/recorder_core_math_evidence_observability_and_verification.md,Docs/design/dg_proof_recorder_and_mobile_edge_interaction_model.md.
أهداف الأمان
- نتائج سلامة الحزمة والغلاف القابلة للتحديد والتكرار.
- تاريخ قابل للاكتشاف فقط مع فرض استمرارية السلسلة.
- سلوك الفشل المغلق عند وجود بيانات مشوهة أو مفقودة أو غامضة أو غير قابلة للتحقق.
- قابلية نقل الحزم القابلة للتحقق دون الاعتماد على مكونات حية موثوقة.
- Clear trust boundaries between adapters, recorder runtime, stores, and تحديد حدود الثقة بوضوح بين المحولات، وقت تشغيل المسجل، المتاجر، والمستهلكين.
- تعرض مدخلات/موارد محدودة عند نقاط دخول المشغلين.
- Strong adversary posture: designs must remain defensible against compromised موقف الخصم القوي: يجب أن تظل التصاميم قابلة للدفاع ضد الداخلين المخترقين والمشغلين القادرين على مستوى الدول.
غير الأهداف / خارج النطاق
- ضمانات السرية بعد الكشف عن الأدلة للأنظمة السفلية.
- الدفاع ضد اختراق كامل للنظام/النواة دون الحاجة إلى تحكمات خارجية على المنصة.
- Key custody/HSM/remote attestation infrastructure (beyond current local key بنية حراسة المفاتيح/HSM/التحقق عن بُعد (تتجاوز استخدام المفاتيح المحلية الحالية).
- Built-in transport security for remote deployment wrappers (mTLS/authn/authz أمان النقل المدمج لتغليفات النشر عن بُعد (المسؤوليات المتعلقة بالنشر اليوم تشمل mTLS/authn/authz).
- Non-repudiation signing of bundle archives at rest (external signing/WORM is التوقيع غير القابل للإنكار لأرشيفات الحزم في حالة السكون (يتطلب التوقيع الخارجي/WORM).
الأصول
- Unsealed and sealed envelope data (event type, actor, environment, payload, بيانات الظرف المفتوح والمغلق (نوع الحدث، الفاعل، البيئة، الحمولة، الوقت، معرفات الترابط).
- Envelope integrity material (
content_hash,chain_hash, sequence position, مادة سلامة الظرف (content_hash,chain_hash, موقع التسلسل، ربط القطع). - بيانات المقطع (
SegmentGenesis، ارتباطات الأسلاف، سجلات الختم). - بايتات المرفقات وهاش المحتوى.
- محتويات الحزمة (المقاطع، الأظرف، المرفقات، نقاط إثبات).
- بيانات التحقق، وأدلة الحكم، وأدلة نصوص المدقق.
- Recorder runtime configuration (
recorder_id, schema version, auto-seal, تكوين وقت تشغيل المسجل (recorder_id، إصدار المخطط، الإغلاق التلقائي، عمق التحقق عند بدء التشغيل). - ملف تخزين SQLite وحالة الذاكرة.
- مواد مفتاح التوقيع ومعرفات المفاتيح المشتقة عند تكوين الموقّعين.
- Persisted signer-rotation state (
store_metakeys for current key, epoch, حالة تدوير الموقّع المستمرة (store_metaمفاتيح للمفتاح الحالي، العصر، وعلامة آخر حدث تدوير). - Generated contract artifacts under Docs/generated/recorder/** and manifest authority Docs/generated/recorder/index.json, including sidecar API artifacts (Docs/generated/recorder/apis/sidecar.*), sidecar config artifacts (Docs/generated/recorder/config/sidecar.*), and SDK projection artifacts (Docs/generated/recorder/sdk/*).
- Performance policy artifacts (
target/perf-matrix/latest.json,target/perf/v2/*.json,target/perf/triage/latest.md,system-tests/perf_baselines/*.json) وبيانات التعريف الخاصة بالعداء. - CLI artifacts (selector JSON, payload JSON, attachment file/inline payloads, Decision Gate fixture JSON, OTel fixture JSON, config JSON, bundle JSON, تحقق من نص JSON الخاص بالتحقق، والتحقق من مخرجات JSON الخاصة بالضمان).
- Container deployment artifacts and runtime mounts (Dockerfile image outputs, compose/env definitions, mounted sidecar config/data/run paths, Docker secret مسارات مصدر الرمز، ومسارات هدف tmpfs للرمز).
نموذج الخصم
- خصوم الدول-الأمة مع رؤية كاملة للشيفرة واستمرارية طويلة الأمد.
- محولات/عملاء غير موثوق بهم يقدمون مظروفات أو مرفقات خبيثة.
- المتسللون المساومون الذين لديهم حق الوصول للكتابة إلى التكوين، أو الملفات التنفيذية، أو التخزين.
- Attackers tampering with on-disk SQLite data, bundle files, or exported المهاجمون يتلاعبون ببيانات SQLite المخزنة على القرص، أو ملفات الحزمة، أو العناصر المصدرة.
- Attackers attempting replay, chain forking, payload mutation, or attachment المهاجمون الذين يحاولون إعادة التشغيل، أو تفرع السلسلة، أو تغيير الحمولة، أو استبدال المرفقات.
- المهاجمون يتسببون في استنفاد الموارد من خلال مدخلات كبيرة الحجم أو مكلفة.
- Malicious integrators exposing Recorder via remote transports without sufficient ضوابط الوصول.
حدود الثقة
- حدود استهلاك المحول:
UnsealedEnvelopeوبيانات المرفقات غير موثوقة. - حدود CLI/المشغل: جميع قيم سطر الأوامر وملفات JSON غير موثوقة.
- حدود تكوين وقت التشغيل: محتويات ملف التكوين ومسار التخزين غير موثوق بها.
- Sidecar HTTP boundary: request line, headers, auth token, JSON body, and حدود HTTP في Sidecar: سطر الطلب، الرؤوس، رمز المصادقة، جسم JSON، وبيانات النقل غير موثوقة.
- Sidecar enterprise bridge boundary: enterprise control-plane admission and استدعاءات الخطاف هي تبعيات شبكة غير موثوقة ويجب أن تفشل بشكل مغلق.
- حدود التخزين: الصفوف/الكتل المستمرة غير موثوقة عند القراءة.
- حدود الحزمة: حزمة JSON المستوردة غير موثوقة قبل التحقق.
- Evidence provider boundary: consumer calls to list/fetch/verify/query are حدود مزود الأدلة: مكالمات المستهلك لقائمة/استرجاع/التحقق/الاستعلام هي طلبات غير موثوقة.
- Rust SDK facade boundary: builder/runtime inputs (
recorder_id, adapter metadata, storage path, trust root, signer/trust policy) are untrusted and يجب الحفاظ على سلوك الفشل المغلق للمسجل/المزود. - Python SDK boundary: sidecar endpoint/base URL, auth token, idempotency headers, retry/backoff policy inputs, request models, query parameters, and HTTP response payloads are untrusted and must fail closed on contract drift, أكواد أخطاء غير معروفة، أو عدم تطابق في المخطط.
- Decision Gate adapter boundary: Decision Gate transcript/runpack fixture حدود موصل Decision Gate: حمولات نص/تشغيل Decision Gate غير موثوقة ويجب أن تمر بفحوصات التعيين/السلامة قبل الاستيعاب.
- OTel adapter boundary: OpenTelemetry JSON export payloads are untrusted and must pass strict record-shape, identifier, timestamp, and bounded/redacted التحقق من الخرائط قبل الاستيعاب.
- Signing boundary: signer/verifier integrations and key management are external حدود التوقيع: تكاملات الموقّع/المتحقق وإدارة المفاتيح هي تبعيات ثقة خارجية.
- Contract generation boundary: generated projection artifacts are untrusted حدود توليد العقد: تعتبر القطع الأثرية الناتجة غير موثوقة حتى يتم التحقق من تجزئتها مقابل بيان الفهرس القياسي.
- Performance harness boundary: runner-class labels, workload knobs, and perf
artifacts are untrusted until lane identity (
regression/capacity), تم التحقق من بيانات عبء العمل، وعمليات التحقق من سياسة العداء المثبت. - External wrapper boundary: any network-facing bridge is outside this repo and حدود الغلاف الخارجي: أي جسر يواجه الشبكة هو خارج هذا المستودع ويجب أن يفرض الحماية من المصادقة والتفويض وحماية النقل.
- Container-orchestration boundary: compose/env/runtime mount definitions, Docker secret source paths, tmpfs token-target paths, and host filesystem ownership/permission models are untrusted deployment inputs and must satisfy قيود تقوية تكوين/رمز الجانبي.
نقاط الدخول وسطح الهجوم
- CLI commands:
recorder segment open|seal|status|list,recorder signer rotate,recorder envelope record|record-with-attachments,query envelopes,bundle build|verify|inspect,assurance startup|trust-root|gates,contract generate|check,decision-gate ingest-fixture,otel ingest-fixture,config validate,طبيب. - Sidecar commands:
recorder-sidecar --config <path>,recorder-sidecar healthcheck --url <url>,recorder-sidecar healthcheck --unix-socket <path> --path <path>. - Sidecar HTTP routes:
GET /health,GET /startup,GET /ready,GET /v1/segments,GET /v1/segments/active,POST /v1/envelopes,POST /v1/envelopes/with-attachments,POST /v1/query/envelopes,POST /v1/bundles/build|verify|inspect,POST /v1/ingest/otel,GET /v1/config. - File inputs: runtime config JSON/TOML, payload JSON/file, attachment file/inline base64, مدخلات الملفات: تكوين وقت التشغيل JSON/TOML، حمولة JSON/ملف، ملف مرفق/قاعدة 64 مشفرة مضمنة، JSON لقرار البوابة، JSON للمحدد، JSON للحزمة.
- Container deployment inputs:
docker/sidecar/Dockerfile,docker/sidecar/docker-compose.yml,docker/sidecar/.env, mountedsidecar.toml, Docker secret token source ملف، دليل الهدف لرمز tmpfs، والدلائل المرتبطة بالبيانات /run. - Library APIs:
RecorderBuilder::build,Recorder::record|record_with_attachments,Recorder::build_bundle|verify_bundle,Recorder::list_bundles|fetch_bundle|query_envelopes,RecorderAdapter::emit_envelope,RecorderAdapter::emit_with_attachments,DecisionGateAdapter::ingest_fixture,RecorderEngine::open_segment|record_envelope|seal_segment,EvidenceProvider::list_bundles|fetch_bundle|verify_bundle|query_envelopes. - Storage entry points: SQLite DB creation/open, SQL row materialization, attachment fetch, genesis نقاط دخول التخزين: إنشاء/فتح قاعدة بيانات SQLite، تجسيد صف SQL، جلب المرفقات، فك تشفير الجينيس.
- Bundle verification pipeline: manifest validation, attachment hash checks, content/chain checks, خط أنابيب التحقق من الحزمة: التحقق من صحة البيان، فحوصات تجزئة المرفقات، فحوصات المحتوى/السلسلة، فحوصات عبر القطاعات، مرحلة التوقيع.
ضوابط الأمان والثوابت
- ترميز JCS القياسي لمدخلات التجزئة الحتمية (
serde_jcs). - صيغة تجزئة محتوى الظرف وصيغة تجزئة السلسلة واضحة وثابتة.
- يولد الجزء الأساسي سلسلة حسابات الظرف الأول.
- تستخدم المساواة في التجزئة مقارنة في وقت ثابت في مسارات core/verifier/store.
- طبقة المحول/التحقق تفرض فحوصات الفشل المغلق قبل التسجيل.
- Envelope builder enforces required fields, UTC times, deterministic attachment يقوم منشئ الظرف بفرض الحقول المطلوبة، وأوقات UTC، وترتيب مرجع المرفقات المحدد.
- Envelope attachment and segment-genesis constructors reject empty, blank, and
ترفض مُنشئات إرفاق الحاويات وبناء القطاعات المدخلات الفارغة، والبيضاء، والتي تحتوي على أحرف تحكم
content_typeوrecorder_id. - Recorder config validation fail-closes malformed
recorder_idvalues at فشل التحقق من تكوين المسجل - يغلق القيم غير الصحيحة لـrecorder_idعند بدء تشغيل المحرك (يتطلب شكل هوية متوافق معActorId). - Core identity constructors reject blank/whitespace-only and control-character
string inputs;
key_idis enforced as exact lowercase ترفض مُنشئات الهوية الأساسية المدخلات الفارغة/التي تحتوي فقط على مسافات البيضاء وأحرف التحكم؛ يتم فرضkey_idكتنسيق دقيق بحروف صغيرة تمامًا على شكلhex(SHA-256(public_key_bytes))(64 حرفًا). - Core identity constructors enforce explicit max lengths:
trace_id/session_id/actor_id/environment_id <= 256 chars, تفرض مُنشئات الهوية الأساسية أطوالًا قصوى صريحة:trace_id/session_id/actor_id/environment_id <= 256 chars,event_type/adapter_id <= 128 chars. - String-backed identity serde paths are constructor-validated; hostile JSON مسارات التعريف المدعومة بسلاسل يتم التحقق منها عند الإنشاء؛ لا يمكن لـ JSON العدائي تجاوز ثوابت المعرف عند حدود إلغاء التسلسل.
- يفرض تخزين الإلحاق ثوابت الفقرة المفتوحة واستمرارية السلسلة.
- Store segment creation enforces single-open-segment and duplicate-segment-ID يفرض إنشاء مقطع التخزين فحوصات فشل مغلقة لـ segment واحد مفتوح و duplicate-segment-ID.
- Store active-segment lookup fail-closes on corrupted persisted state with أقسام مفتوحة متعددة بدلاً من اختيار صف عشوائي.
- Store query/existence paths fail closed on storage-layer query errors instead مسارات استعلام/وجود التخزين تفشل في الإغلاق عند حدوث أخطاء في استعلام طبقة التخزين بدلاً من الافتراض إلى نتائج وجود مرنة.
- مسار إضافة SQLite محصور في نطاق المعاملات لتحديثات البيانات/البيانات الذرية.
- SQLite يتيح WAL والمفاتيح الخارجية أثناء تهيئة المخطط.
- Bundle builder uses deterministic ordering (
BTreeMap/BTreeSet) and tracks يستخدم منشئ الحزم ترتيبًا حتميًا (BTreeMap/BTreeSet) ويتتبع الآباء/مرتكزات الإثبات التي تم حذفها. - Verifier executes 7 phases with trust-root-aware signature verification; it يقوم المدقق بتنفيذ 7 مراحل مع التحقق من التوقيع المدرك لجذر الثقة؛ حيث يقوم بتحديد تخطي التوقيع فقط عندما لا يكون هناك جذر ثقة مُكون.
- Verifier phase 1 fail-closes on manifest structural tampering (segment entry mismatches and attachment-manifest mismatches), not only version/algorithm مرحلة التحقق 1 تغلق تلقائيًا عند اكتشاف تلاعب هيكلي في البيان (عدم تطابق مدخلات القطاعات وعدم تطابق البيانات المرفقة)، وليس فقط عدم تطابق النسخة/الخوارزمية.
- Verifier enforces bounded-work policy before phase execution:
max segments
4096, max envelopes per segment100000, max envelopes total200000, max attachments total200000, عدد مراجع المرفقات لكل ظرف4096. - Recorder startup verification re-checks active segment read-back integrity for
تحقق من بدء التسجيل يعيد التحقق من سلامة قراءة الجزء النشط للنوافذ المحددة (
startup_verification_depth). - Evidence provider enforces stable bundle IDs and true fetch-by-ID semantics يفرض مزود الأدلة معرفات حزم مستقرة ودلالات صحيحة لجلب بواسطة المعرف للقطاعات المغلقة.
- Evidence provider enforces bounded query/materialization policy:
max
list_bundlesandquery_envelopeslimit10000, يفرض مزود الأدلة سياسة استعلام/تجسيد محدودة: الحد الأقصى لـlist_bundlesوquery_envelopesهو10000, الحد الأقصى لتجسيد مظروف لكل شريحة هو200000. - CLI enforces bounded file-read limits: config 1 MiB, payload 4 MiB, selector 1 MiB, bundle 32 MiB, trust root 1 MiB, attachment file/inline payload 16 MiB, Decision Gate fixture 8 MiB, signer يفرض CLI حدود قراءة الملفات المحدودة: config 1 MiB، payload 4 MiB، selector 1 MiB، bundle 32 MiB، trust root 1 MiB، attachment file/inline payload 16 MiB، Decision Gate fixture 8 MiB، signer key 64 KiB، signer passphrase material 1 KiB.
- CLI query enforces bounded page policy:
default page size
1000, max page size10000, and deterministic تفرض استعلامات CLI سياسة الصفحة المحدودة: حجم الصفحة الافتراضي1000، الحد الأقصى لحجم الصفحة10000، وعقد الاستمرار القائم على المؤشر المحدد في وضع JSON. - CLI i18n catalogs are build-validated fail closed:
locale tag uniqueness, required
endefault locale, mandatory locale provenance (machineorhuman_reviewed), exact message-key parity against English, and exact placeholder-set parity for every key across enabled المحليات. - CLI localization rendering is strict and fail-closed: generated typed key/macro access prevents unknown message keys at compile time, and runtime rendering rejects placeholder-set mismatch and unresolved نصوص بديلة بدون تراجع صامت إلى معرفات المفاتيح أو الإنجليزية.
- CLI locale provenance policy is explicit: machine-provenance locales emit deterministic operator notice, while JSON تظل حمولات الإخراج محايدة محليًا عبر اختيار المواقع.
- CLI runtime resolution validates
recorder_idusingActorIdconstructor semantics before command execution, includingconfig validateparity with تحقق وقت تشغيل CLI من صحةrecorder_idباستخدام دلالات منشئActorIdقبل تنفيذ الأمر، بما في ذلك توازنconfig validateمع سلوك التحقق من تكوين المسجل. - CLI signer loading is profile-aware (
securedefault) and fail-closed on encrypted-key requirements, malformed key material, insecure opt-down misuse, وعدم تطابق المفتاح والحالة في الوضع الآمن. - Explicit key-rotation workflow emits deterministic lifecycle events
(
system.adapter.key_rotated/ break-glass variant) and persists idempotence علامات في بيانات التعريف SQLite. - Contract generation emits deterministic projection artifacts with توليد العقود يصدر آثار إسقاط حتمية مع سلطة تجزئة البيان ووضع تحقق انحراف صارم.
- Contract generation/check fail closed on unsafe output-root filesystem entries, including symlinked roots, hard-linked artifact files, or symlink التنقل تحت شجرة المخرجات.
- Contract schema generation applies explicit runtime constraint overlays for
identifier/text/hash/signature fields (including full
BundleSelectorvariant algebra) and fails closed if expected schema pointer paths are مفقود. - Contract generation now emits sidecar API artifacts
(
sidecar.openapi/errors/enums/examples/compat) and generated manifest توليد العقود الآن يصدر مكونات واجهة برمجة التطبيقات الجانبية (sidecar.openapi/errors/enums/examples/compat) و تشمل السلطة المولدة للبيان تلك المسارات. - Contract generation now emits SDK projection artifacts
(
sdk/types.json,sdk/methods.json,sdk/test_vectors.json,sdk/manifest.json) and drift-check mode fail-closes on SDK artifact عدم تطابق. - Rust SDK builder/facade wiring fail-closes invalid identity/config/store مدخلات مع الحفاظ على حتمية المسجل/المزود وحدود العمل المحدودة.
- Python SDK request/response wiring fail-closes invalid input/query parameter values, unknown problem codes, unexpected content types, and response schema drift against generated SDK projection artifacts while preserving sidecar دلالات عدم التغير عبر محاولات إعادة التشغيل.
- Sidecar compatibility gates fail closed in CI by validating current
pre-release-break
/v1policy, enum-wire stability, error-code registry stability, and تنفيذ عقد عدم التغير لنقطة النهاية المتغيرة من القطع الأثرية المولدة. - Sidecar perf policy gates split regression (
sidecar_perf) and capacity (sidecar_capacity) lanes with explicit lane identity/workload metadata in artifacts to prevent fixed-workload regression signals from being misread as نتائج الحد الأقصى من الإنتاجية. - Pinned-runner capacity enforcement fails closed when required
sidecar_capacityartifacts are missing, and capacity floors (max_sustainable_rps) are anti-sandbagging protected by threshold policy شيكات. - Sidecar config validation fail-closes invalid protocol/security settings (schema/API version, transport host/port, non-loopback token requirement, signer key parseability, hard header-size cap, and numeric limit bounds) قبل ربط المستمعين.
- Sidecar config file and secret-material loading enforce bounded hostile-input
file sizes and fail closed on oversize input:
config
<= 1 MiB, token/control-plane-token files<= 4096 bytes, ملف مفتاح الموقّع<= 65536 بايت. - Sidecar token/control-plane-token file opening uses fail-closed
descriptor-bound semantics:
- يونكس: عدم المتابعة المفتوحة (
O_NOFOLLOW) بالإضافة إلى فحوصات الملفات العادية والوضع. - Windows: reparse-point-safe open (
FILE_FLAG_OPEN_REPARSE_POINT) plus رفض نقطة إعادة التحليل ذات المقبض المفتوح. - Other targets: fail-closed unsupported-platform rejection for secret-token تحميل الملف.
- يونكس: عدم المتابعة المفتوحة (
- Sidecar middleware stack enforces server/client correlation ID handling
(
x-server-correlation-id,x-correlation-id, legacyx-request-id), strict fail-closed media-type parsing (exactapplication/jsonwith optionalcharset=utf-8) and strict JSON-onlyAcceptparsing, aggregate header byte bounds, declared content-length bounds, bounded queue admission and in-flight التزامن، وسلوك الفشل المغلق عند انتهاء مهلة الطلب. - Sidecar request media-type policy is centralized in
recorder-sidecar-configand projected into generated sidecar API compatibility تسمح قوائم السماح لنوع الوسائط للتشغيل والعقد بعدم الانحراف. - Sidecar token auth compares bearer tokens in constant time and bypasses auth
only for explicit probe routes (
/health,/startup,/ready) oropenمصادقة رمز Sidecar تقارن رموز الحامل في وقت ثابت وتتجاوز المصادقة فقط للطرق الاستكشافية الصريحة (/health,/startup,/ready) أو وضعopen. - Sidecar probe/readiness controls are explicit and fail closed:
/healthremains lightweight process liveness,/startupreports startup completion state, and/readycan enforce storage-only or storage+enterprise dependency readiness (probes.readiness_mode) with optional capacity-exhaustion تحكمات الاستعداد/التحقق من جانب السيارة واضحة وتفشل بشكل مغلق:/healthتبقى عملية خفيفة للتحقق من الحياة،/startupتبلغ عن حالة اكتمال بدء التشغيل، و/readyيمكن أن تفرض الاستعداد للاعتماد على التخزين فقط أو التخزين + الاعتماد المؤسسي (probes.readiness_mode) مع سلوك الفشل المغلق الاختياري عند استنفاد السعة (probes.ready_fail_on_admission_saturation). - Sidecar bounds middleware explicitly bypasses probe routes so orchestrator liveness/startup/readiness signals are observable even under admission يتجاوز برنامج الوسيط لحدود Sidecar بشكل صريح مسارات الاستقصاء، بحيث تكون إشارات النشاط/البدء/الجاهزية الخاصة بالمنظم قابلة للرصد حتى في ظل تشبع القبول واستنفاد الطلبات النشطة.
- Sidecar auth failures emit RFC 6750
WWW-Authenticatechallenge metadata and فشل مصادقة Sidecar يصدر بيانات التعريف الخاصة بتحديWWW-Authenticateوفقًا لـ RFC 6750، وتستخدم أخطاء Sidecar تفاصيل المشكلة وفقًا لـ RFC 9457 (application/problem+json). - Sidecar container packaging defaults to distroless nonroot runtime and compose profiles that require explicit UID/GID mapping, Docker secret token source inputs, and bootstrap materialization of hardened token files into مسارات وقت التشغيل tmpfs قبل بدء تشغيل sidecar.
- Sidecar mutating operations enforce persistent idempotency replay/conflict
semantics with stream-scoped persistent retention
(
idempotency_entries) ونطاق تجزئة طلبات الهاش الحتمية. - Sidecar mutating envelope operations enforce explicit stream identity inputs
(
tenant_id,recorder_id) ورفض عدم تطابق المسجلين يفشل بشكل مغلق. - SQLite operation dispatch uses bounded queueing (
sync_channel) with تستخدم عملية إرسال SQLite قائمة انتظار محدودة (sync_channel) مع رفض مغلق حتمي عند امتلاء سعة القائمة (4096). - Verifier transcript emission is deterministic and schema-versioned; bundle verification can export transcript JSON for machine-auditable evidence حزم.
- CLI assurance checks provide explicit fail-closed deployment assertions for startup-verification depth, trust-root mode parsing, and contract gate تنفيذ.
- System tests validate tamper detection and fail-closed oversized-input تختبر أنظمة الاختبار الكشف عن التلاعب وسلوك الفشل المغلق عند إدخال بيانات كبيرة.
- System tests validate external adapter-ingest coupling using OpenClaw mock event streams, including signed/unsigned verification and sequence-gap strict تختبر أنظمة الاختبار التحقق من اقتران جهاز التكيف الخارجي باستخدام تدفقات أحداث OpenClaw الوهمية، بما في ذلك التحقق من التوقيع/عدم التوقيع وسياسات الفشل المغلقة الصارمة مقابل تسجيل الشذوذ.
- OpenClaw integration mapping applies deterministic sensitive-field redaction and bounded payload handling (string and JSON size limits) before immutable تطبيق تخطيط تكامل OpenClaw يطبق حذف الحقول الحساسة بشكل حتمي ومعالجة الحمولة المحدودة (حدود حجم السلسلة و JSON) قبل تسجيل الأدلة غير القابلة للتغيير.
- System tests validate external control-plane coupling using Decision Gate MCP runpack flow fixtures, including signed/unsigned verification and runpack integrity strict fail-closed vs anomaly-recording policies, including تختبر أنظمة الاختبار التحقق من ارتباط وحدة التحكم الخارجية باستخدام Decision Gate MCP تثبيت تدفق runpack، بما في ذلك التحقق من التوقيع/عدم التوقيع وسلامة runpack مع سياسات الفشل الصارم المغلق مقابل تسجيل الشذوذ، بما في ذلك إعادة حساب سلامة البيان الذاتي من تجزئات الملفات المعلنة.
- System tests validate sidecar subprocess lifecycle over real HTTP and fail-closed idempotency replay/conflict persistence across restart تختبر أنظمة الاختبار دورة حياة العمليات الفرعية الجانبية عبر HTTP حقيقي وتحقق من استمرارية إعادة التشغيل/التعارض الفاشل المغلق عبر حدود إعادة التشغيل.
- Decision Gate integration mapping applies deterministic transcript-field redaction and bounded payload handling (string and JSON size limits) before تطبيق تخطيط تكامل Decision Gate يتضمن حذف حقول النص بشكل حتمي ومعالجة الحمولة المحدودة (حدود حجم string و JSON) قبل تسجيل الأدلة غير القابلة للتغيير.
- Production
recorder-decision-gate-adapterenforces mapping-contract version checks, deterministic event IDs/timestamps, transcript redaction, bounded بيانات الحمولة، ومعالجة سلامة تشغيل strict-vs-anomaly. - Production
recorder-otel-adapterenforces deterministic OTel span/log mapping (otel.span,otel.log.<severity>), strict identifier/timestamp parsing, اشتقاق معرف حتمي، وإسقاط حمولة محدودة/مخفية.
معروفة الثغرات الأمنية الحالية ذات الصلة:
- Sidecar does not include built-in TLS/mTLS; non-loopback deployments should لا تتضمن Sidecar TLS/mTLS مدمجة؛ يجب على النشر غير الدائري إنهاء TLS وفرض هوية العميل في واجهة أمامية/بوابة محصنة.
- Sidecar provides bounded local admission controls but not distributed/global rate limiting; deployment platforms still need caller quotas and abuse يوفر Sidecar ضوابط قبول محلية محدودة ولكن لا يوفر تحديد معدل موزع/عالمي؛ لا تزال منصات النشر بحاجة إلى حصص للمتصلين وضوابط للاستخدام غير السليم.
التهديدات والتخفيفات
المصادقة، التفويض، والتحكم في الوصول
- Threat: unauthorized local or remote invocation of recording/query/bundle التهديد: استدعاء غير مصرح به محليًا أو عن بُعد لمسارات التسجيل/الاستعلام/الحزمة.
- Mitigation: sidecar supports explicit token mode with constant-time bearer
token checks, RFC 6750
WWW-Authenticatechallenge responses, and fail-closed التخفيف: يدعم sidecar وضع الرمز الصريح مع فحوصات رموز الحامل في وقت ثابت، واستجابات تحديWWW-Authenticateوفقًا لمعيار RFC 6750، ومعالجة أخطاء تكوين المصادقة المغلقة؛ تظل واجهة سطر الأوامر عملية محلية. - Residual risk:
opensidecar mode is deployment-sensitive and should only be used in trusted local IPC environments; non-loopback network deployments المخاطر المتبقية: وضعopensidecar حساس للنشر ويجب استخدامه فقط في بيئات IPC المحلية الموثوقة؛ تتطلب عمليات النشر عبر الشبكة غير المتكررة أيضًا هوية طبقة البوابة وضوابط النقل.
تحقق من صحة الإدخال وتحليله
- Threat: malformed IDs, non-UTC times, invalid event types, malformed JSON, التهديد: معرفات مشوهة، أوقات غير UTC، أنواع أحداث غير صالحة، JSON مشوه، أو حمولة غامضة.
- Mitigation: typed ID constructors, UTC enforcement, strict event-type
validation, strict key-id hex shape validation, fail-closed envelope
validation, strict attachment/segment text-field validation (
content_type,recorder_id), strict recorder configrecorder_idvalidation, typed JSON تحليل. - Mitigation: bounded file reads prevent oversized JSON ingestion at CLI التخفيف: تمنع قراءات الملفات المحدودة استيعاب JSON بحجم كبير عند حدود CLI، بما في ذلك مدخلات trust-root و signer-key.
سلامة الأدلة وموثوقيتها
- Threat: payload mutation, chain forking, attachment substitution, or replayed التهديد: تغيير الحمولة، تفرع السلسلة، استبدال المرفقات، أو الأظرف المعاد تشغيلها.
- Mitigation: canonical-hash content addressing + chain continuity checks at التخفيف: محتوى canonical-hash الذي يتناول التحقق من سلامة السلسلة بالإضافة إلى فحوصات استمرارية السلسلة في وقت الإضافة والتحقق.
- Mitigation: verifier phase 1 enforces structural manifest integrity against التخفيف: مرحلة التحقق 1 تفرض سلامة الهيكلية للبيان ضد تجسيد جزء الحزمة والمواد المرفقة.
- Mitigation: strict Ed25519 verification and trust-root policy enforcement are التخفيف: يتم تضمين التحقق الصارم من Ed25519 وفرض سياسة جذر الثقة في مرحلة التحقق 6.
- Mitigation: secure-profile signer loading requires encrypted PKCS#8 key التخفيف: يتطلب تحميل الموقّع secure-profile مفتاح PKCS#8 مشفّر بشكل افتراضي وخيار صريح للتقليل من الأمان لتسهيل تجربة المطورين.
- Mitigation: explicit key-rotation events and persisted idempotence markers التخفيف: أحداث تدوير المفاتيح الصريحة وعلامات الاستمرارية المحفوظة تحافظ على استمرارية سلسلة التوقيع ومصالحة استعادة النظام بعد التعطل.
- Residual risk: authenticity remains configuration-dependent when operators المخاطر المتبقية: تظل الأصالة معتمدة على التكوين عندما يختار المشغلون التحقق بدون جذر ثقة (تحذير صريح تم إصداره).
كشف البيانات وتعريضها
- التهديد: الكشف العرضي المفرط من خلال تصدير الحزم ونتائج الاستعلام.
- التخفيف: أوامر تصدير/استعلام مدفوعة من قبل المشغل بشكل صريح ومرشحات محددة النوع.
- Residual risk: no built-in field-level redaction policy in Recorder core; wrapper يجب على الطبقات فرض سياسة الإفصاح.
سلامة التخزين والحزمة
- التهديد: التلاعب بقاعدة البيانات/الملفات، الفساد، أو الكتابات الجزئية.
- Mitigation: SQLite WAL, transactional append, chain validation, corruption التخفيف: SQLite WAL، الإلحاق المعاملاتي، التحقق من السلسلة، اكتشاف الفساد عند تحليل الصفوف المخزنة غير الصالحة.
- Mitigation: bundle verification recomputes attachment/content/chain links and التخفيف: إعادة حساب التحقق من الحزمة تعيد حساب روابط المرفقات/المحتوى/السلسلة وتعلم عن فشل السلامة.
- Residual risk: bundle archives are not signed by default; use external المخاطر المتبقية: أرشيفات الحزم غير موقعة بشكل افتراضي؛ استخدم توقيعًا خارجيًا وضوابط تخزين غير قابلة للتغيير لضمان عدم الإنكار.
توافر واستنفاد الموارد
- Threat: oversized config/payload/selector/bundle inputs and expensive التهديد: إدخالات config/payload/selector/bundle كبيرة الحجم وأعباء التحقق المكلفة.
- التخفيف: حدود صارمة على قراءة الملفات من واجهة سطر الأوامر؛ رفض مغلق قبل التحليل.
- التخفيف: أخطاء مطبوعة ورفض مبكر على محددات/مرشحات غير صالحة.
- Mitigation: recorder verifier/provider APIs enforce bounded-work limits and التخفيف: واجهات برمجة التطبيقات لمحقق/مزود التسجيل تفرض حدود عمل محدودة وتفشل بشكل مغلق عند تحميلات الذاكرة الكبيرة.
- Mitigation: sidecar middleware enforces bounded header/body/content-length التخفيف: يقوم برنامج الوسيط الجانبي بفرض حدود على رأس الرسالة/الجسم/طول المحتوى، ووجود طابور محدود + تزامن نشط، وسلوك فشل مغلق عند انتهاء المهلة.
- Mitigation: SQLite operation dispatch is bounded; enqueue saturation fails التخفيف: عملية إرسال SQLite محدودة؛ فشل تشبع قائمة الانتظار مغلق بدلاً من السماح بنمو الذاكرة غير المحدود.
- Residual risk: no distributed/global rate limiter exists for sidecar or wrapper-exposed deployments; operators still need caller quotas and abuse التحكمات.
بيئة سلسلة التوريد والتنفيذ
- Threat: compromised binaries/config/runtime host or malicious dependency التهديد: ثغرات في الملفات التنفيذية/التكوين/المضيف أو سلوك الاعتماد الخبيث.
- Mitigation: strict lint/no-panic posture, typed errors, deterministic التخفيف: موقف صارم من lint/no-panic، أخطاء محددة، عقود حتمية، وحدود معمارية واضحة.
- Residual risk: host compromise and dependency compromise require external المخاطر المتبقية: تتطلب اختراق المضيف واختراق الاعتماد ضوابط خارجية (SBOM/تدقيق/توقيع/تقوية).
تعدد المستأجرين والعزل
- التهديد: تعرض بيانات متعددة المستأجرين في النشر المشترك.
- التخفيف: معرفات المسجل هي تسميات؛ لا توجد ادعاءات ضمنية لعزل المستأجرين.
- Residual risk: shared deployments must enforce tenant-aware storage, المخاطر المتبقية: يجب أن تفرض النشر المشترك تخزينًا واعيًا للمستأجر، وتشفيرًا، والتحكم في الوصول على مستويات التغليف/النشر.
قابلية التدقيق والمراقبة
- التهديد: عدم القدرة على إثبات ما حدث بعد الاشتباه في التلاعب.
- Mitigation: append-only segment model, deterministic hashes, bundle manifests, التخفيف: نموذج مقطع قابل للإضافة فقط، تجزئة حتمية، بيانات حزمة، مدقق غير متصل، واختبارات نظام تركز على العناصر.
- Residual risk: comprehensive security audit logging for remote auth decisions المخاطر المتبقية: تسجيل تدقيق أمني شامل لقرارات المصادقة عن بُعد يعتمد على الغلاف.
مراجع التنفيذ (التحكمات والحمايات)
سلامة النواة والغلاف
- Canonical encoding and hash formulas:
crates/recorder-envelope/src/encoding.rs. - Hash types, algorithm registry, constant-time equality:
crates/recorder-core/src/hash.rs. - Identity and input-shape validation contracts:
crates/recorder-core/src/identity.rs،crates/recorder-core/src/filter.rs. - Signature contracts and key identity model:
crates/recorder-core/src/signature.rs,crates/recorder-envelope/src/signer.rs,crates/recorder-envelope/src/signature.rs. - Envelope/segment invariants:
crates/recorder-envelope/src/envelope.rs,crates/recorder-envelope/src/segment.rs,crates/recorder-envelope/src/attachment.rs.
وقت تشغيل المسجل والتحقق
- Recorder lifecycle, chain progression, seal behavior:
crates/recorder/src/engine.rs. - Auto-seal policy validation:
crates/recorder/src/config.rs. - Adapter boundary validation:
crates/recorder/src/validation.rs,crates/recorder/src/local_adapter.rs. - Deterministic bundle assembly and proof anchors:
crates/recorder/src/bundle_builder.rs. - 7-phase verification pipeline and warning model:
crates/recorder/src/verifier.rs. - Evidence provider boundary behavior:
crates/recorder/src/evidence_provider.rs.
واجهة SDK
- Rust SDK facade composition and deterministic builder defaults:
crates/recorder-sdk/src/builder.rs،crates/recorder-sdk/src/lib.rs. - SDK prelude and stable consumer import boundary:
crates/recorder-sdk/src/prelude.rs. - SDK facade conformance tests:
crates/recorder-sdk/tests/test_builder.rs,crates/recorder-sdk/tests/test_facade.rs. - Python SDK contract projection generator and typed client surface:
sdk/python/scripts/generate_contract.py,sdk/python/src/recorder_client/generated_contract.py,sdk/python/src/recorder_client/client.py,sdk/python/src/recorder_client/client_common.py,sdk/python/src/recorder_client/sync_client.py,sdk/python/src/recorder_client/async_client.py,sdk/python/src/recorder_client/models.py,sdk/python/src/recorder_client/errors.py. - Python SDK unit/system conformance tests:
sdk/python/tests/test_contract_generated.py,sdk/python/tests/test_models.py,sdk/python/tests/test_errors.py,sdk/python/tests/test_client_unit.py,sdk/python/tests/test_client_system.py.
محولات التكامل
- Decision Gate adapter ingestion, deterministic mapping, and fail-closed
integrity-policy enforcement:
crates/recorder-decision-gate-adapter/src/adapter.rs. - Decision Gate mapping and redaction/bounds policy defaults:
crates/recorder-decision-gate-adapter/src/policy.rs. - Decision Gate fixture input contract:
crates/recorder-decision-gate-adapter/src/model.rs. - Decision Gate adapter typed error algebra:
crates/recorder-decision-gate-adapter/src/error.rs. - OTel adapter ingestion, deterministic mapping, and strict-fail policy:
crates/recorder-otel-adapter/src/adapter.rs. - OTel mapping and redaction/bounds policy defaults:
crates/recorder-otel-adapter/src/policy.rs. - OTel JSON export input contract and adapter error algebra:
crates/recorder-otel-adapter/src/model.rs,crates/recorder-otel-adapter/src/error.rs.
التخزين
- Storage contracts and invariants:
crates/recorder-store/src/traits.rs,crates/recorder-store/src/error.rs. - In-memory backend behavior:
crates/recorder-store/src/memory.rs. - SQLite initialization, WAL, FK, connection thread model:
crates/recorder-store/src/sqlite/schema.rs,crates/recorder-store/src/sqlite/connection.rs,crates/recorder-store/src/sqlite/mod.rs. - SQLite envelope/segment/attachment operations:
crates/recorder-store/src/sqlite/envelope_ops.rs,crates/recorder-store/src/sqlite/segment_ops.rs,crates/recorder-store/src/sqlite/attachment_ops.rs.
واجهة سطر الأوامر وسطح التحقق
- Command routing and runtime resolution:
crates/recorder-cli/src/main.rs. - Input hard limits and bounded file reads:
crates/recorder-cli/src/main.rs. - Localization and deterministic output behavior:
crates/recorder-cli/build.rs,crates/recorder-cli/i18n/locales/en.toml,crates/recorder-cli/i18n/locales/ca.toml,crates/recorder-cli/src/i18n.rs. - Contract artifact generation and drift checks:
crates/recorder-contract/src/lib.rs,crates/recorder-contract/src/sidecar_api.rs,crates/recorder-contract/src/sidecar_api/openapi.rs,crates/recorder-contract/src/sidecar_api/artifacts.rs,crates/recorder-contract/src/sidecar_api/specs/mod.rs,scripts/ci/generate_all.sh. - Sidecar contract compatibility and perf policy gates:
scripts/ci/sidecar_contract_gates.py,scripts/ci/perf_matrix.py,scripts/ci/perf_gate.py,scripts/ci/perf_threshold_policy.py,scripts/perf/run.py,scripts/perf/update_baseline.py.
حدود خدمة Sidecar
- Sidecar bootstrap/config and transport lifecycle:
crates/recorder-sidecar-config/src/config.rs,crates/recorder-sidecar-config/src/validation.rs,crates/recorder-sidecar-config/src/validation/enterprise.rs,crates/recorder-sidecar/src/server.rs,crates/recorder-sidecar/src/shutdown.rs. - Sidecar auth and request-bound controls:
crates/recorder-sidecar/src/middleware/auth.rs,crates/recorder-sidecar/src/middleware/bounds.rs,crates/recorder-sidecar/src/middleware/request_id.rs. - Sidecar single-writer ingest/idempotency and error contract:
crates/recorder-sidecar/src/ingest.rs,crates/recorder-sidecar/src/idempotency.rs,crates/recorder-sidecar/src/error.rs,crates/recorder-sidecar/src/contract.rs. - Sidecar contract conformance integration tests:
crates/recorder-sidecar/tests/error_registry_contract.rs,crates/recorder-sidecar/tests/idempotency_restart.rs. - Sidecar container packaging and operator profile:
docker/sidecar/Dockerfile,docker/sidecar/docker-compose.yml,docker/sidecar/config/sidecar.toml,crates/recorder-sidecar/src/bin/docker_bootstrap.rs.
التحقق من النظام
- Security/system tests:
system-tests/tests/suites/security.rs,system-tests/tests/suites/bundle.rs,system-tests/tests/suites/persistence.rs,system-tests/tests/suites/recorder.rs, اختبارات الأمان/النظام:system-tests/tests/suites/security.rs,system-tests/tests/suites/bundle.rs,system-tests/tests/suites/persistence.rs,system-tests/tests/suites/recorder.rs,system-tests/tests/suites/sidecar.rs. - Docker packaging and compose-lifecycle validation:
system-tests/tests/suites/sidecar_docker.rs, تعبئة Docker والتحقق من دورة حياة التكوين:system-tests/tests/suites/sidecar_docker.rs,system-tests/tests/helpers/docker.rs. - Registry-driven validation contract:
عقد التحقق المدفوع بالسجل:
system-tests/AGENTS.md,system-tests/test_registry.toml.
متطلبات التشغيل
- Treat all deployments as hostile environments; assume compromised insiders and اعتبر جميع النشر كبيئات عدائية؛ افترض وجود متسللين مخترقين وأعداء قادرين على مستوى الدول.
- Restrict filesystem access to store/config/bundle paths using least-privilege قيد الوصول إلى نظام الملفات لمسارات store/config/bundle باستخدام أقل الامتيازات OS ACLs.
- Use signed releases, dependency auditing, and host hardening for production استخدم الإصدارات الموقعة، وتدقيق التبعيات، وتقوية المضيف لعقد الإنتاج.
- If exposing Recorder sidecar or wrapper APIs over non-loopback networks, enforce مصادقة قوية / تفويض، إنهاء mTLS / TLS، وقوائم السماح للأوامر.
- For containerized sidecar deployments, run non-root, provide token source via
Docker secret input, materialize token files into tmpfs with owner-only mode
(
0600on Unix) before sidecar startup, and map host UID/GID explicitly so تظل مسارات البيانات القابلة للكتابة / التشغيل حتمية. - احتفظ بحدود إدخال CLI مفعلة؛ شدد الحدود على مستوى الغلاف حيثما كان ذلك ممكنًا.
- Do not treat unsigned bundles as non-repudiable artifacts; apply external لا تعالج الحزم غير الموقعة كأدلة غير قابلة للإنكار؛ طبق التوقيع الخارجي وضوابط الاحتفاظ غير القابلة للتغيير.
- Segment tenants into isolated stores/processes unless explicit shared-tenancy قم بتقسيم المستأجرين إلى متاجر/عمليات معزولة ما لم يتم تنفيذ ضوابط مشاركة المستأجرين بشكل صريح.
- Monitor verifier warnings (especially signature-skip and partial-segment راقب تحذيرات التحقق (خاصة تحذيرات تخطي التوقيع وتحذيرات الجزء الجزئي) كنتائج ذات أهمية سياسية.
وضع الفشل
- الفشل مغلق عند المدخلات غير الصالحة أو الغامضة.
- يتم رفض الإضافات التي تنتهك حالة الشريحة أو استمرارية السلسلة.
- رفض تعريفات التكوين/التصفية/نطاق الوقت غير الصحيحة.
- Mark tampered bundles as
Invalidor fail verification with typed errors on قم بوسم الحزم المتلاعب بها على أنهاغير صالحةأو فشل التحقق مع أخطاء مكتوبة على عدم تطابق البيان/البنية التحتية. - لا تفترض الثقة في الحالة المستمرة دون إعادة التحقق من النزاهة.
نموذج تهديد دلتا (2026-02-08، أساسيات OSS + Docker)
- Initial Recorder repository threat model baseline added under Docs/security/threat_model.md.
- Mapped trust boundaries, controls, and residual risks to concrete current تم رسم حدود الثقة، والضوابط، والمخاطر المتبقية إلى ملفات التنفيذ الحالية المحددة.
- Closed signer/runtime wiring gap with profile-aware secure defaults, bounded تم سد فجوة التوقيع/التشغيل مع إعدادات افتراضية آمنة مدركة للملف الشخصي، وحدود مدخلات محدودة للتوقيع، ومعالجة المواد الرئيسية بطريقة تفشل في الإغلاق.
- Added explicit signer-rotation workflow with deterministic lifecycle events تم إضافة سير عمل تدوير الموقّعين بشكل صريح مع أحداث دورة حياة حتمية وبيانات تعريفية مستمرة.
- Added deterministic contract-generation boundary (
recorder-contract) with تحكمات تجزئة البيان والسلطة وفحص الانجراف. - Hardened
recorder-contractoutput-root handling to reject symlinked roots, hard-linked artifact files, and symlink traversal under generated artifact الأشجار في وضعي التوليد والتحقق. - Added first-party sidecar container deployment boundary: Dockerfile/Compose/config artifacts are now explicit attack surfaces and تمت إضافة حدود نشر حاويات sidecar من الطرف الأول: أصبحت ملفات Dockerfile/Compose/التكوين الآن أسطح هجوم واضحة وحدود ثقة للنشر.
- Added system-test Docker coverage for sidecar packaging hardening and تمت إضافة تغطية اختبار النظام لـ Docker لتقوية حزمة sidecar والتحقق من دورة حياة Docker Compose (فتح/تسجيل/استعلام).
- Closed tracked P1 system-test security-relevant coverage gaps for selector dedup, proof-anchor semantics, cross-segment mismatch fail-closed behavior, تم إغلاق الفجوات المتعلقة بالأمان في اختبار النظام P1 المتعقب المغلق للغطاء الخاص بـ selector dedup، ودلالات proof-anchor، وسلوك الفشل المغلق في حالة عدم التطابق عبر القطاعات، وسلوك الفشل المغلق في إغلاق المرفقات، وتوافق SQLite/في الذاكرة.
- Hardened
recorder-coreidentifier validation to reject whitespace-only and control-character string identifiers and require strict 64-char lowercase hex قيمkey_id. - Hardened deserialize boundaries so constrained identifier and envelope text تم تعزيز حدود فك التسلسل بحيث لا يمكن إنشاء حقول المعرف المقيد ونص الظرف من حمولات serde دون إجراء فحوصات المُنشئ.
- Hardened
recorderconfig and verifier boundaries: recorder startup rejects malformedrecorder_idvalues during config validation, phase-1 verification fail-closes on manifest structural mismatches, and verifier now يفرض حدودًا صريحة للعمل المحدود. - Hardened
recorderevidence-provider library boundaries with explicit حدود الفشل المغلقة لعمليات العمل القائمة/الاستعلام/التجسيد. - Hardened
recorder-storeSQLite connection dispatch with bounded queue capacity و semantics رفض التشبع الحتمي. - Added system-test coverage for malformed identifiers, bounded CLI file input surfaces, secure signer-file policy, signer-rotation recovery/corruption behavior, contract CLI symlink safety, manifest structural tamper cases, SQLite corruption materialization failures, and single-open-segment CLI تنفيذ.
- تم إغلاق جميع النتائج المتعقبة في Docs/security/audits/OSS_launch_0.md.
- Implemented
recorder-sidecaras a built-in HTTP/JSON boundary with fail-closed config validation, request auth/bounds controls, bounded queue/concurrency controls, structured error contract, and persistent idempotency semantics; updated trust boundaries, attack surfaces, mitigations, and residual risks to تعكس هذه السطحية في وقت التشغيل. - Implemented generated sidecar API artifact coverage
(
sidecar.openapi/errors/enums/examples/compat) with fail-closed CI compatibility gates enforcing current pre-release-break/v1, enum-wire stability, استقرار سجل رموز الخطأ، وعقود عدم التغير لنقاط النهاية المتغيرة. - Consolidated sidecar runtime config semantics into a dedicated
recorder-sidecar-configcrate and wired sidecar runtime startup to consume its تم كتابة حد التحقق من تكوين الفشل المغلق. - Expanded generated contract scope to include sidecar config artifacts
(
config/sidecar.schema.json,config/sidecar.compat.json,config/sidecar.example.toml,config/sidecar.md) emitted byrecorder-contractمنrecorder-sidecar-configمساعدات الإسقاط. - Extended sidecar compatibility gates to fail closed on sidecar config تم توسيع بوابات التوافق مع الـ sidecar لتفشل في حالة انحراف تكوين الـ sidecar وعدم التناسق بين العناصر (schema/compat/example/docs).
- Added sidecar integration/system validation for generated error-registry تم إضافة تكامل sidecar / التحقق من النظام لتوافق سجل الأخطاء المُولد واستمرارية إعادة التشغيل المعتمدة على الهوية.
نموذج التهديد دلتا (2026-02-08)
- Added enterprise sidecar boundary mode with explicit fail-closed config
validation (
enterprise.mode, control-plane URL/token requirements, and تمت إضافة وضع حدود sidecar المؤسسي مع التحقق من تكوين الفشل المغلق بشكل صريح (enterprise.mode، ومتطلبات URL/token لطبقة التحكم، ومتطلبات أمان وضع الرمز). - Added enterprise identity extraction boundary (
x-tenant-id,x-principal-id,x-authn-method, optional namespace) and fail-closed تمت إضافة حدود استخراج هوية المؤسسة (x-tenant-id,x-principal-id,x-authn-method, مساحة اسم اختيارية) وسلوك قبول مغلق عند وجود سياق هوية غير صحيح/مفقود. - Added pre-handler enterprise policy gate middleware that denies protected تمت إضافة وسيط سياسة بوابة المؤسسة قبل المعالجة الذي ينكر العمليات المحمية عندما تكون فحوصات تفويض/control-plane أو الحصص غير متاحة أو مرفوضة.
- Added managed-cloud writer-lease assertion gating for mutating operations
(
x-recorder-writer-lease=trueمطلوب عند التكوين). - Added explicit sidecar enterprise boundary hook emission to control-plane
(
/v1/enterprise/sidecar/hooks) atadmissionandresultphases with fail-closed behavior for successful protected operations when hook export يفشل. - Result: sidecar ingress now has an additional external dependency on enterprise control-plane availability/integrity; outage or invalid responses are handled as fail-closed admission denials and successful-hook export النتيجة: أصبح ingress الخاص بـ sidecar يعتمد الآن على توفر/سلامة وحدة التحكم المؤسسية؛ يتم التعامل مع الانقطاع أو الاستجابات غير الصالحة كرفض دخول مغلق، وتُعتبر حالات فشل تصدير الخطاف الناجحة أخطاء طلب مغلقة.
نموذج تهديد دلتا (2026-02-08، تعزيز الاستعداد والتحقيق)
- Added explicit startup probe route (
GET /startup) to sidecar entry-point تمت إضافة مسار فحص بدء التشغيل الصريح (GET /startup) إلى نقطة دخول sidecar سياسة تجاوز فحص المخزون والمصادقة. - Added fail-closed readiness dependency modes (
storage_only,storage_and_enterprise) with config validation and control-plane readiness تمت إضافة أوضاع الاعتماد على الجاهزية الفاشلة المغلقة (storage_only,storage_and_enterprise) مع التحقق من تكوين الاعتماد وفحوصات جاهزية وحدة التحكم في الأوضاع المفعلة للمؤسسات. - Added optional readiness fail-closed behavior when request admission/execution
تمت إضافة سلوك الفشل الاختياري عند الاستعداد للإغلاق عندما يتم استنفاد سعة قبول/تنفيذ الطلبات (
request_capacity_exhaustedسبب الاستعداد). - Added explicit probe-priority middleware behavior:
/health,/startup, and/readybypass normal auth/policy/bounds request تمت إضافة سلوك وسيط أولوية الاستقصاء بشكل صريح:/health،/startup، و/readyتتجاوز بوابات المصادقة/السياسة/الحدود العادية للحفاظ على قابلية مراقبة التنسيق أثناء الحمل الزائد. - Added Docker system-test probe coverage validating containerized
/startupand/readybehavior before and after segment-open lifecycle تمت إضافة تغطية اختبار النظام في Docker للتحقق من سلوك/startupو/readyالمعبأ في الحاويات قبل وبعد انتقالات دورة حياة فتح الشريحة.
نموذج تهديد دلتا (2026-02-08، مستمر)
- Renamed enterprise boundary adapter implementation from
enterprise.rstocontrol_plane_bridge.rsto make the trust-boundary intent explicit تم إعادة تسمية تنفيذ محول حدود المؤسسة منenterprise.rsإلىcontrol_plane_bridge.rsلجعل نية حدود الثقة واضحة (جسر التحكم فقط؛ لا سلطة رياضية للأدلة). - Centralized sidecar enterprise ingress/header/hook vocabulary in
crates/recorder-sidecar/src/contract.rsand wired middleware/bridge paths to تلك الثوابت لتقليل مخاطر تجاوز السياسات الناتجة عن الانجراف. - Added conformance tests to ensure sidecar operation labels, identity headers, and hook boundary/outcome labels remain synchronized with control-plane تم إضافة اختبارات التوافق لضمان بقاء تسميات تشغيل الـ sidecar، ورؤوس الهوية، وتسميات حدود/نتائج الـ hook متزامنة مع مفردات عقد التحكم.
- Added cross-repo end-to-end enterprise lane coverage proving control-plane deny decisions fail closed at sidecar mutation boundaries while successful تم إضافة تغطية شاملة عبر المستودعات لمسار المؤسسة من النهاية إلى النهاية، مما يثبت أن قرارات رفض التحكم في الطائرة تفشل في الإغلاق عند حدود تعديل الـ sidecar، بينما تحافظ المسارات المعتمدة الناجحة على نتائج تحقق الأدلة الحتمية.
نموذج التهديد دلتا (2026-02-08، توسيع CLI OSS)
- Added CLI operator command
recorder envelope record-with-attachmentswith تمت إضافة أمر مشغل CLIrecorder envelope record-with-attachmentsمع تحقق من حدود المرفقات الفاشلة المغلقة لمدخلات الملفات و inline base64. - Added CLI operator command
decision-gate ingest-fixturethat routes fixture inputs through productionrecorder-decision-gate-adapterintegrity and mapping السياسات. - Added CLI runtime config parity checks so malformed
recorder_idvalues fail closed duringconfig validateusing the same identity-shape constraints as وقت تشغيل المسجل. - Expanded CLI auto-seal boundary to include duration and combined policies, تم توسيع حدود الإغلاق التلقائي في واجهة سطر الأوامر لتشمل المدة والسياسات المجمعة، مع رفض مغلق بفشل لقيمة صفر لكل من عتبات العدد والمدة.
- Added CLI query page bounds (default
1000, max10000) and deterministic JSON pagination contract (envelopes+next_cursor) to prevent unbounded تمت إضافة حدود صفحة استعلام CLI (افتراضي1000، الحد الأقصى10000) وعقد ترقيم JSON الحتمي (envelopes+next_cursor) لمنع التشكيل غير المحدود عند حدود المشغل.
نموذج تهديد دلتا (2026-02-10، واجهة SDK + مكونات SDK)
- Added first-party Rust SDK facade crate (
recorder-sdk) that composes existing recorder/adapter/provider/store/verifier boundaries without introducing new دلالات البروتوكول. - Added SDK builder trust boundary inputs (storage path, recorder and adapter identifiers, signer/trust-root injection, startup policy knobs) and required سلوك التحقق من الفشل المغلق الموروث من طبقات المسجل / المزود.
- Expanded generated-contract asset inventory and controls to include SDK projection artifacts (Docs/generated/recorder/sdk/types.json, Docs/generated/recorder/sdk/methods.json, Docs/generated/recorder/sdk/test_vectors.json, Docs/generated/recorder/sdk/manifest.json) with manifest-hash authority and تنفيذ فحص الانجراف.
- Added SDK facade integration tests covering builder defaults, storage اختيار، تسجيل/بناء/التحقق من التدفقات، واستعلام/جلب/التحقق من مزود التكافؤ.
نموذج التهديد دلتا (2026-02-14، تقسيم مسار الأداء واحتجاز السعة المثبتة)
- Added explicit perf-harness trust boundary semantics: fixed-workload regression artifacts and saturation-capacity artifacts are distinct evidence فصول بقرارات تشغيلية مختلفة.
- Added lane identity and workload metadata requirements to sidecar perf
artifacts (
lane,workload.*) so downstream gates can fail closed on سياق الأداء المفقود/الغامض. - Added pinned-runner conditional gate requirement for capacity artifacts:
when pinned release jobs are configured for capacity enforcement, missing
تُعالج تقارير
sidecar_capacityكحالة فشل مغلقة. - Added anti-sandbagging policy coverage for capacity floors to prevent
تخفيضات العتبة لـ
max_sustainable_rpsبدون حوكمة صريحة. - Added resource-exhaustion saturation test notes: capacity sweeps are allowed
to intentionally drive bounded
429and elevated latency to identify sustainable operating region and knee point without relaxing fail-closed سلوك وقت التشغيل.
نموذج التهديد دلتا (2026-02-15، حوكمة سير العمل للأداء والمخطط v2)
- Added canonical perf orchestration boundary (
scripts/perf/run.py) that normalizes matrix artifacts into schema-v2 per-suite reports with explicit بيانات بصمة العداء وهُوية المسار. - Added baseline-governance update surface (
scripts/perf/update_baseline.py) requiring explicit sample-count/window/author/reason metadata on baseline تحديث. - Added per-suite macrobench artifact paths
(
target/performance/stress/latest.json,target/performance/bundle/latest.json) to reduce ambiguity and prevent دليل على تداخل الارتباك في تصنيف الأداء.
نموذج التهديد دلتا (2026-02-11، واجهة برمجة تطبيقات بايثون)
- Added first-party Python sidecar SDK (
sdk/python) as a committed projection مستهلك لـ Docs/generated/recorder/sdk/{types,methods,test_vectors,manifest}. - Added Python SDK trust boundary for endpoint/token/idempotency/retry inputs وسلوك فك تشفير الاستجابة مع موقف تحقق مغلق عند الفشل.
- Added deterministic Python contract-constants generator that derives
generated_contract.pyمباشرةً من مخرجات SDK المولدة القياسية. - Added strict Python client controls for unknown error-code rejection, content-type validation, operation-local error-contract validation, and إعادة استخدام مفتاح الاستقرارية القابلة للتكرار عبر محاولات العمليات المتغيرة.
- Added Python SDK unit and system tests and wired repository orchestration
(
scripts/ci/generate_all.sh) لتشغيل بوابات توليد/تحقق/اختبار Python SDK.
نموذج التهديد دلتا (2026-02-11، ضمان OSS WS1-WS3)
- Added deterministic verifier transcript artifact model
(
VerificationTranscript) and wired CLI export surface (bundle verify --verdict-transcript-output) for machine-verifiable دليل حزمة التحقق. - Added explicit OSS assurance command boundary
(
assurance startup,assurance trust-root,assurance gates) to provide fail-closed deployment assertions for startup verification depth, trust-root وضع، وتنفيذ بوابة العقد. - Added system-test coverage proving SQLite operation queue saturation is تم رفض الفشل وإغلاقه مع مخرجات ملخص حتمي للأثر.
نموذج تهديد دلتا (2026-02-13، تعزيز توازن توكن دوكر)
- تم القضاء على اعتماد ملف الرمز المربوط بالمضيف لملف تعريف Docker الجانبي.
- Added dedicated container bootstrap binary
(
recorder-sidecar-docker-bootstrap) that ingests token source material from Docker secret file/env input and writes runtime token file to configured مسار الهدف مع التحقق من الفشل المغلق وأذونات خاصة بالمالك فقط. - Updated Docker Compose profile to use a Docker secret source and tmpfs token target mount, preserving explicit non-root UID/GID mapping for writable data ودليل التشغيل.
- Expanded system-test Docker suite hardening checks to enforce سر-المصدر-إلى-tmpfs رمز سلوك التمهيد.
- Result: Windows host ACL variance no longer determines runtime token-file mode parity inside Linux containers because sidecar token file is now created داخل الحاوية مع دلالات إذن حتمية.
نموذج التهديد دلتا (2026-02-13، المرحلة 1 تعزيز حدود نوع الوسائط الصارمة)
- Replaced permissive sidecar media-type checks with strict fail-closed parser
السلوك لـ
Content-TypeوAcceptعند حدود HTTP. - Sidecar request-body endpoints now enforce exact
application/jsonwith optionalcharset=utf-8; unknown parameters, malformed values, and non-UTF-8 تُرفض قيم charset معunsupported_media_typeالمستقرة. - Sidecar response negotiation now enforces strict JSON-only
Acceptranges (application/jsonor*/*) with malformed/non-JSON ranges rejected via مستقرnot_acceptable. - Centralized route media-type policy in
recorder-sidecar-configand projected that policy into generated sidecar OpenAPI/compat artifacts and CI contract البوابات، مما يقلل من مخاطر انحراف وقت التشغيل / العقد عند توسيع حدود البروتوكول.
نموذج التهديد دلتا (2026-02-13، المرحلة 3 سطح التوافق OTel)
- Added production OTel compatibility adapter crate
(
crates/recorder-otel-adapter) and sidecar ingest route (POST /v1/ingest/otel) كحدود شبكة معادية جديدة. - New OTel ingest boundary enforces strict JSON-only media policy, bearer auth, enterprise policy middleware, bounded admission/execution controls, timeout controls, and idempotency-key requirements consistent with other mutating مسارات الجانبية.
- OTel adapter mapping is deterministic and fail-closed:
strict identifier/timestamp parsing, deterministic SHA-256-to-UUIDv7-shaped
IDs, deterministic event-type mapping (
otel.span,otel.log.<severity>), وتوقع الحمولة المحدودة/المحررة. - Added generated integration mapping contract artifacts for Decision Gate and OTel under Docs/generated/recorder/contracts/integrations/ with runtime/contract فحوصات الانجراف في تغطية اختبار المولد.
- Added CLI operator parity command
recorder otel ingest-fixture, expanding operator input attack surface while preserving bounded fixture reads and سلوك فشل المحول في الإغلاق.
نموذج تهديد دلتا (2026-02-13، اعتماد خطة التحكم المؤسسية الدائمة)
- Expanded enterprise dependency threat posture to include durable control-plane state backends (Postgres-backed fleet/governance/cloud-ops) hosted in أصول-النواة والمستهلكة بواسطة مسارات قبول المؤسسات الجانبية.
- Added explicit mutation-path outage fail-closed test coverage when control-
plane dependency becomes unavailable:
crates/recorder-sidecar/tests/enterprise_control_plane_e2e.rsandsystem-tests/tests/suites/sidecar_enterprise.rs. - Security effect: enterprise mode write paths deny on control-plane outage; لا يُسمح بسلوك التحور الذي يعتمد على أفضل جهد/يفتح الفشل.
نموذج التهديد دلتا (2026-02-14، إعادة هيكلة إدخال كاتب واحد في Sidecar)
- Replaced direct mutating envelope handler writes with a bounded ingest queue
plus dedicated single-writer runtime (
IngestGateway/IngestWriterRuntime) that owns durable commit and stream-position التكليف. - Added stream-scoped identity and ordering boundary to sidecar mutating and
query routes:
tenant_id + recorder_idnow define authoritative stream scope للطلب والتماثل. - Added persistent stream-scoped idempotency table
(
idempotency_entries) with deterministic request-hash replay/conflict دلالات واحتفاظ TTL/الحدود لكل دفق. - Added writer/projection persistence surfaces in SQLite schema v2:
streams,idempotency_entries, andquery_projection_envelopes; startup now fails closed on non-v2 databases and requires a fresh DB for this كسر ما قبل الإصدار. - Removed mutating segment HTTP routes (
POST /v1/segments,POST /v1/segments/seal) from sidecar runtime, reducing external mutation سطح الهجوم مع الحفاظ على مسارات الرؤية للجزء القابل للقراءة فقط.
نموذج تهديد دلتا (2026-02-14، إكمال أداء كاتب واحد)
- Completed hot-path migration to writer-native sealing and single-transaction
SQLite micro-batch commits; mutating sidecar ingest no longer depends on
تسجيل
RecorderEngine::record_envelopeيلتزم. - Added explicit SQLite durability/checkpoint tuning controls at sidecar config
boundary (
storage.sqlite_synchronous,storage.sqlite_wal_autocheckpoint_pages,storage.sqlite_busy_timeout_ms) with fail-closed validation andsynchronous=FULLآمن بشكل افتراضي. - Updated segment observability contract:
GET /v1/segments/activenow returns paginated active-segment lists with stream identity (tenant_id,recorder_id), reducing ambiguity in عمليات التدحرج/التصحيح لكل تدفق.
نموذج تهديد دلتا (2026-02-15، ملف تكوين Sidecar - تعزيز حدود القراءة)
- Hardened
recorder-sidecar-confighostile file-input boundaries to fail closed على ملفات config/secret/key الكبيرة قبل التحليل/الاستخدام. - Added explicit bounded file-read ceilings at sidecar config boundary:
sidecar config file
<= 1 MiB, token/control-plane-token files<= 4096بايت، ملف مفتاح الموقّع<= 65536بايت. - Added unit coverage proving oversize config/token/control-plane-token/signer يتم رفض المدخلات الرئيسية مع رموز أخطاء ثابتة من نوع محدد.
نموذج التهديد دلتا (2026-02-15، تعزيز سرية المسار Sidecar TOCTOU)
- Closed Unix and Windows token/control-plane-token path-check/use race windows
in
recorder-sidecar-configby opening secret files with no-follow/reparse-safe flags and applying validation to opened descriptors/handles before bounded يقرأ. - Added enterprise-path parity tests proving symlink and world-readable ملفات رموز التحكم في الطائرة يتم رفضها وتفشل بشكل مغلق.
- Added fail-closed unsupported-platform handling for non-Unix/non-Windows يستهدف تجنب سلوك التراجع المتساهل.
نموذج تهديد دلتا (2026-02-15، حارس فساد الشريحة النشطة في سجل التخزين)
- Hardened
recorder-storeactive-segment readback to fail closed when hostile حالة الاستمرار تحتوي على عدة مقاطع مفتوحة. - Added deterministic tie-break ordering (
created_at, then segment UUID bytes) for segment listings across in-memory and SQLite backends to remove عدم تحديد الوقت المتساوي. - Hardened SQLite filter handling for explicit empty
segment_idsand envelopeIN-list filter values so empty vectors deterministically return no matches بدلاً من ظهور أخطاء بناء جملة SQL. - Added regression tests in
recorder-storecovering multi-open-segment corruption الكشف، استقرار ترتيب الطوابع الزمنية المتساوية، ومعالجة تصفية القوائم الفارغة.
نموذج تهديد دلتا (2026-02-15، تعزيز سلامة كتالوج CLI I18n)
- Replaced permissive CLI localization behavior with build-validated,
fail-closed catalog generation (
crates/recorder-cli/build.rs) sourced from كتالوجات اللغات المتعقبة بواسطة المستودع (crates/recorder-cli/i18n/locales/*.toml). - Added strict controls that block build/test on localization drift:
required default locale
en, locale-tag uniqueness, mandatory provenance metadata (machineorhuman_reviewed), exact key parity across locales, وتماثل مجموعة العناصر النائبة بالضبط لكل مفتاح رسالة. - Added compile-fail misuse gates for typed i18n macro invocation
(
crates/recorder-cli/tests/i18n_compile_fail.rsand trybuild fixtures), منع استخدام المفاتيح غير المعروفة والنماذج الوهمية من التجميع. - Enforced no-silent-fallback rendering semantics: runtime now fail-closes i18n integrity violations (unknown key in compatibility path, placeholder mismatch, unresolved placeholder token) instead of تراجع متساهل إلى معرفات المفاتيح أو الإنجليزية.
- Added explicit locale provenance runtime behavior: machine-provenance locales emit a deterministic operator notice, while JSON تظل مخرجات وضع الآلة محايدة محليًا ومستقرة عبر اختيار الموقع.