Documentos de Decision Gate

Evaluación de puertas determinista, reproducible con decisiones auditables.

Documentación de Asset Core

Modelo de Amenaza de Puerta de Decisión

Resumen

Decision Gate es un plano de control determinista y reproducible para la divulgación controlada y el avance de etapas. Evalúa condiciones respaldadas por evidencia, emite decisiones auditables y admite verificación fuera de línea a través de runpacks. No ejecuta conversaciones de agentes.

La Puerta de Decisión está compuesta por:

  • Control plane core (scenario engine, evidence evaluation, run state, runpack Núcleo del plano de control (motor de escenarios, evaluación de evidencia, estado de ejecución, constructor/verificador de runpack).
  • Servidor MCP (JSON-RPC sobre stdio/HTTP/SSE) y herramientas de línea de comandos.
  • Federación de proveedores (proveedores integrados más proveedores MCP externos).
  • Capa de despacho/corretaje (resolución y entrega de carga útil).
  • Storage layers (SQLite or in-memory run state + schema registry, optional Capas de almacenamiento (SQLite o estado de ejecución en memoria + registro de esquemas, almacenamiento de objetos opcional para runpacks).
  • Visión general del repositorio y postura de seguridad: README.md y SECURITY.md.
  • Orientación operativa y controles: Guía de seguridad.
  • Standards and investigation workflow: Docs/standards/codebase_engineering_standards.md, Normas y flujo de trabajo de investigación: 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, Referencias de arquitectura: 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, READMEs de componentes: crates/decision-gate-core/README.md, crates/decision-gate-mcp/README.md, crates/decision-gate-broker/README.md, crates/decision-gate-providers/README.md.

Objetivos de Seguridad

  • Evaluación determinista sin mutación oculta del estado.
  • Evidence-backed disclosure only; fail closed on missing, invalid, or Divulgación respaldada por evidencia únicamente; falla cerrada ante evidencia faltante, inválida o no verificable.
  • Auditabilidad y detección de manipulación para el estado de ejecución y runpacks.
  • Exposición de datos minimizada; por defecto a resúmenes seguros y evidencia redactada.
  • Clear trust boundaries between control plane, providers, dispatch targets, Límites de confianza claros entre el plano de control, proveedores, objetivos de despacho y almacenamiento.
  • Acceso a herramientas y operaciones de registro con el principio de menor privilegio y autorización explícita.
  • Uso de recursos limitados (tamaño de la solicitud, tamaño de la respuesta del proveedor, límites de tasa).

Non-Goals / Fuera de Alcance

  • Proteger la confidencialidad después de que los datos se divulgan a sistemas posteriores.
  • Proteger contra el compromiso total del host o del núcleo sin controles externos.
  • Asegurando proveedores externos de MCP, sumideros aguas abajo o aplicaciones cliente.
  • Atestación de hardware, garantías de enclave seguro o servicios de custodia de claves.
  • Firma criptográfica de runpacks o registros de esquema (más allá de los campos de metadatos).
  • Terminación de TLS y confianza en el proxy (responsabilidad de implementación).

Activos

  • Especificaciones de escenarios, condiciones y etiquetas de políticas (lógica de seguridad).
  • Run state logs: triggers, gate evaluations, decisions, packets, submissions, Registros de estado de ejecución: disparadores, evaluaciones de puertas, decisiones, paquetes, envíos, llamadas a herramientas.
  • Valores de evidencia, hashes, anclajes y firmas.
  • Configuración de la autoridad del espacio de nombres y asignaciones de espacio de nombres.
  • Data shape registry records (JSON Schemas), versions, and optional signing Registros del registro de forma de datos (JSON Schemas), versiones y metadatos de firma opcionales.
  • Despachar cargas, sobres y recibos.
  • Ejecutar artefactos de Runpack, manifiestos e informes de verificación.
  • Contratos de proveedores (contratos de capacidad) y esquemas.
  • Typed runtime auth descriptors (scheme_name, credential_binding, apiKey name/location) incrustados en perfiles de tiempo de ejecución.
  • Registros de auditoría (autorización de herramientas, verificación previa, ACL de registro, autorización de inquilinos, uso).
  • Configuration files, provider auth tokens, registry ACL/principal mappings, Archivos de configuración, tokens de autenticación del proveedor, mapeos de ACL/principal del registro y claves de verificación de firma.
  • Run state store (SQLite or in-memory), schema registry store, and runpack Ejecutar el almacenamiento de estado (SQLite o en memoria), el almacenamiento del registro de esquemas y el directorio de salida de runpack.
  • Cubos de almacenamiento de objetos para artefactos y archivos de runpack (compatibles con S3).
  • Contenido del catálogo de documentos y cualquier documento adicional ingerido desde el disco.

Modelo de Adversario

  • Adversarios de estados-nación con pleno conocimiento del comportamiento de Decision Gate.
  • Clientes no confiables o comprometidos que emiten disparadores o llamadas a herramientas.
  • Proveedores de evidencia maliciosos o defectuosos y servidores MCP externos.
  • Insiders comprometidos con acceso a configuración, almacenamiento o registros.
  • Atacantes de red capaces de realizar MITM, reproducir o interrumpir el tráfico.
  • Autores de escenarios maliciosos o erróneos que pueden definir especificaciones inseguras.
  • Malicious schema registrants or policy administrators who can poison registry Registrantes de esquemas maliciosos o administradores de políticas que pueden envenenar las entradas del registro.
  • Attackers controlling content references or broker sources (SSRF/exfiltration Atacantes que controlan referencias de contenido o fuentes de intermediarios (riesgo de SSRF/exfiltración).
  • Attackers who can tamper with on-disk provider contracts, configs, or runpack Atacantes que pueden manipular contratos de proveedores en disco, configuraciones o artefactos de runpack.

Límites de Confianza

  • Los transportes del servidor MCP (stdio, HTTP, SSE): todas las entradas JSON-RPC no son de confianza.
  • Definición del escenario de entrada: las especificaciones pueden codificar la lógica de divulgación y el acceso a datos.
  • Límite del proveedor de evidencia: proveedores integrados vs proveedores MCP externos.
  • Namespace authority backend (Asset Core or registry): namespace validation is Autoridad del espacio de nombres backend (Asset Core o registro): la validación del espacio de nombres es externa y debe fallar de manera segura.
  • Contratos de proveedor y archivos de configuración en disco.
  • 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 v2 with Argon2id-derived keys and AES-256-GCM at rest; legacy metadata v1 is hard-rejected. Explicit env:// resolution is development-only and gated by dev.allow_dev_env_credentials.
  • Backend del registro de esquemas (en memoria/SQLite) y decisiones de ACL del registro.
  • Ejecutar el almacenamiento de estado y los artefactos de runpack: tratar el almacenamiento como no confiable.
  • Runpack object storage (S3-compatible) and metadata: treat as untrusted and Almacenamiento de objetos Runpack (compatible con S3) y metadatos: tratar como no confiable y verificar los hashes de cada artefacto.
  • Fuentes de corredor (http/archivo/en línea) y sumideros (sistemas externos).
  • Objetivos de despacho y sistemas descendentes que reciben divulgaciones.
  • Entorno de verificación fuera de línea y lectores de artefactos.
  • Tenant authorization adapters and usage meters (if configured) are external Los adaptadores de autorización de inquilinos y los medidores de uso (si están configurados) son puntos de decisión externos.
  • Ingesta de extra_paths de Docs (disco local) y recursos/listar/leer de MCP.

Puntos de Entrada y Superficies de Ataque

  • MCP JSON-RPC methods: tools/list, tools/call, resources/list, Métodos 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).
  • Archivo de configuración y variable de entorno DECISION_GATE_CONFIG.
  • Procesos de proveedores MCP externos y puntos finales HTTP.
  • Typed provider artifacts (capabilities_path, runtime_profile_path) loaded desde el disco local.
  • Built-in providers: env, json, http, rest, time (filesystem, environment, red).
  • External content references for packet payloads (http://, https://, Referencias de contenido externo para cargas útiles de paquetes (http://, https://, file://, inline:).
  • Rutas de configuración, contratos de proveedor, comandos/URLs de proveedor, rutas adicionales de documentación.
  • Destinos de almacenamiento de Runpack (directorio de salida local o almacenamiento de objetos).

Controles de Seguridad e Invariantes

  • Canonical JSON hashing (RFC 8785) with non-finite float rejection for specs, Hashing JSON canónico (RFC 8785) con rechazo de flotantes no finitos para especificaciones, registros, paquetes de ejecución y hashes.
  • Evaluación de tres estados con Unknown tratado como no aprobado.
  • Evidence hash normalization; optional signature verification (ed25519) when Normalización del hash de evidencia; verificación de firma opcional (ed25519) cuando está configurado.
  • Provider contract registry validates provider check params and allowed El registro de contratos de proveedores valida los parámetros de verificación de proveedores y los comparadores permitidos; la validación estricta de comparadores/tipos está activada por defecto.
  • Namespace authority checks enforce tenant/namespace scoping and fail closed Las verificaciones de autoridad de espacio de nombres imponen el alcance de inquilinos/espacios de nombres y fallan de manera cerrada en catálogos desconocidos o no disponibles.
  • Evidence trust lanes enforced (verified by default); dev-permissive explicitly Se aplican carriles de confianza de evidencia (verificados por defecto); el modo dev-permissive reduce explícitamente la confianza a afirmada solo para proveedores no exentos.
  • Schema registry ACL enforces role/policy-class access and can require signing El ACL del registro de esquemas impone el acceso basado en roles/clases de políticas y puede requerir la firma de metadatos; las operaciones del registro son auditadas.
  • Anchor policy enforcement rejects evidence missing required anchors and La aplicación de la política de anclaje rechaza la evidencia que falta anclajes requeridos y propaga los requisitos de anclaje en la verificación de runpack.
  • Size and path limits for config files, provider contracts, run state stores, Límites de tamaño y ruta para archivos de configuración, contratos de proveedor, almacenes de estado de ejecución, ingestión de documentos, artefactos de runpack y claves de objeto-almacen.
  • JSON provider enforces root-bound relative paths and emits El proveedor de JSON impone rutas relativas vinculadas a la raíz y emite anclajes file_path_rooted con root_id + path normalizado.
  • 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 entradas.
  • HTTP/SSE request body limits, stdio framing header limits (8 KiB cumulative), fail-closed duplicate Content-Length rejection, provider-specific response límites de tamaño y tiempos de espera del proveedor.
  • Typed runtime profiles enforce deterministic digest validation before provider activación y fallo cerrado en contenido de perfil no coincidente.
  • Typed OpenAPI import enforces operation-effective security resolution (operation.security precedence, explicit unauthenticated alternatives) and rechaza formas de requisitos de seguridad no soportados/ambiguos que fallan en cerrado.
  • 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 respuestas de object/array-complex faltan proyecciones requeridas.
  • Typed runtime auth is operation-scoped and explicit: only bearer/basic/apiKey(header|query|cookie) are supported; oauth2 and openIdConnect permanece fuera de alcance y falla de manera cerrada.
  • Typed OpenAPI imports require an explicit credential_bindings field; omitted fields and missing secured-scheme mappings are rejected before importación/ejecución en tiempo de ejecución.
  • Each secured credential binding requires explicit wire render metadata (value_render), evitando la deriva de formato de autenticación implícita.
  • Credential locator parsing is fail-closed at import/register/runtime boundaries: only secret:// and env:// schemes are accepted; bare env se rechazan nombres y esquemas desconocidos.
  • Runtime auth credential values are stored as raw secrets and rendered deterministically at use-time (identity or prefix). Preformatted-prefix las colisiones son rechazadas con errores de remediación de secreto en bruto.
  • secret:// paths enforce anti-traversal and bounded syntax (./.. rejected, max path length 256 chars, max 8 segments, max segment longitud 64, [A-Za-z0-9_.-] conjunto de caracteres de segmento).
  • Typed runtime outbound controls enforce per-provider inflight caps and bounded política de reintentos para timeout/429/503, incluyendo el uso limitado de Retry-After.
  • Límites de solicitudes en vuelo y limitación de tasa opcional para llamadas a la herramienta MCP.
  • MCP tool calls require explicit authn/authz (local-only by default; bearer or Las llamadas a la herramienta MCP requieren autenticación/autorización explícita (solo local por defecto; listas de permitidos de portador o mTLS cuando están configuradas) con registro de auditoría.
  • Debug mutation diagnostics endpoint (/debug/mutation_stats) is protected by the same auth model as MCP tool calls and fails closed (401/403) on solicitudes no autenticadas/no autorizadas.
  • Tool visibility filters list/call surfaces; docs search/resources can be Los filtros de visibilidad de herramientas enumeran/superficies de llamada; la búsqueda de documentos/recursos puede ser desactivada.
  • El gancho de autorización del inquilino (si está configurado) controla las llamadas a la herramienta y se audita.
  • Precheck is read-only: asserted evidence validated against schemas, no run La prevalidación es de solo lectura: evidencia afirmada validada contra esquemas, sin mutación del estado de ejecución ni divulgaciones.
  • Resúmenes seguros para el estado orientado al cliente; redacción de evidencia según la política.
  • scenario_submit.payload and scenario_trigger.payload are persisted as run scenario_submit.payload y scenario_trigger.payload se persisten como registros de ejecución e incluidos en los paquetes de ejecución; trátalos como canales de datos de auditoría no secretos.
  • SQLite run state uses canonical JSON + hash verification on load; runpack El estado de ejecución de SQLite utiliza JSON canónico + verificación de hash al cargar; los manifiestos de runpack utilizan hashes de archivos + hash raíz para la integridad.

Amenazas y Mitigaciones

Autenticación, Autorización y Control de Acceso

  • Unauthorized tool access: local-only defaults, bearer/mTLS modes, per-tool allowlists, tool visibility filters, auth-gated debug diagnostics endpoints, y registro de auditoría.
  • Tenant/namespace abuse: namespace authority checks, default namespace Abuso de inquilinos/nombres de espacio: comprobaciones de autoridad de nombres de espacio, denegación por defecto del nombre de espacio predeterminado, ganchos de autorización de inquilinos y ACLs de registro.
  • Registry poisoning/leakage: ACL rules and optional signing metadata Envenenamiento/fugas del registro: reglas de ACL y requisitos opcionales de metadatos de firma con registros de auditoría.

Validación y análisis de entrada

  • Untrusted JSON-RPC/config inputs: strict typed decoding, comparator Entradas JSON-RPC/config no confiables: decodificación estrictamente tipada, validación de comparadores, normalización de JSON canónico y límites de tamaño/ruta.
  • JSONPath/YAML parsing in json provider: root-bound relative paths (absolute Análisis de JSONPath/YAML en el proveedor json: rutas relativas vinculadas a la raíz (rutas absolutas rechazadas), verificaciones de recorrido, límites de tamaño y manejo estructurado de errores.
  • JSONPath/header extraction in rest provider: GET-only request surface, bounded responses, JSON content-type enforcement for json_path, strict validación de encabezados de solicitud y rechazo de anulación de encabezado de autenticación.
  • Provider contract tampering: contract path validation and canonical hashing Manipulación del contrato del proveedor: validación de la ruta del contrato y hash canónico de las cargas útiles del contrato.
  • Typed provider artifact tampering: config validation requires typed artifact paths/protocol metadata and runtime loading verifies canonical profile digest integridad antes de la ejecución.
  • Typed runtime request-binding abuse: path bindings are percent-encoded before template substitution, typed header bindings reject reserved/auth-owned names, y los límites de seguridad en tiempo de ejecución imponen techos de tiempo de espera/tamaño de respuesta.
  • Typed OpenAPI security-shape abuse: importer rejects multi-scheme AND requirements, missing security scheme refs, malformed security requirement objetos/alcances, y apiKey name/in inválido/faltante.
  • Typed OpenAPI projection abuse: importer rejects malformed projection arrays, duplicate projection ids, invalid RFC6901 pointers, and invalid projection esquemas; los fallos de extracción de punteros JSON en tiempo de ejecución permanecen cerrados por fallo.

Integridad y Autenticidad de la Evidencia

  • Malicious or faulty providers: trust lanes, optional signature verification, Proveedores maliciosos o defectuosos: carriles de confianza, verificación de firma opcional, aplicación de políticas de anclaje y hash de evidencia canónica.
  • External MCP providers: response size limits, timeouts, and correlation ID sanitization. Stdio framing headers are size-capped and duplicate Content-Length headers are rejected before payload parsing; treat providers como procesos no confiables o servicios remotos.
  • Typed runtime providers: profile/source digests are bound into runtime execution and evidence anchors; tampered runtime profile artifacts are rechazado antes de que se ejecuten las verificaciones.

Divulgación y Exposición de Datos

  • Evidence leakage through tools: evidence redaction policies for Filtración de evidencia a través de herramientas: políticas de redacción de evidencia para evidence_query y comentarios de scenario_next; resúmenes seguros por defecto.
  • Sensitive data in submit/trigger payloads: payloads are intentionally durable for audit/replay; mitigated by integration policy (no raw secrets, use opaque manejadores y almacenes de secretos externos).
  • Policy bypass in dispatch: optional policy engine (permit_all, deny_all, Bypass de políticas en el despacho: motor de políticas opcional (permit_all, deny_all, o reglas estáticas) controla la divulgación antes del despacho.

Almacenamiento e Integridad de Runpack

  • Run state tampering: SQLite store verifies canonical hash on load and fails Manipulación del estado de ejecución: la tienda SQLite verifica el hash canónico al cargar y falla cerrada; las versiones del estado de ejecución son solo de anexado (con poda de retención opcional).
  • Runpack tampering: verifier checks artifact hashes, root hash, and anchor policy; no built-in signing (external signing/WORM required for no repudio).

Proveedores Externos, Fuentes y Despacho

  • 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 aplicación de ruta (archivo).
  • Built-in providers: allowlists/denylists and size limits for env, root restrictions and size limits for json, and host allowlists + DNS-pinned validación entre pares + denegación por defecto de privada/enlace local para http y rest.
  • Typed OpenAPI HTTP providers: runtime execution reuses hardened HTTP controls (DNS pinning, redirect rejection, status/content-type validation, bounded la respuesta se lee) con anclajes tipados deterministas.
  • Typed import + lifecycle tooling enforces bounded timeout_ms, bounded max_response_bytes, bounded operation_allowlist cardinality, bounded outbound inflight/retry controls, required credential_binding mapping, y rechazo de duplicados check_id en contratos/perfiles de tiempo de ejecución en modo de fallo cerrado.

Disponibilidad y Agotamiento de Recursos

  • Large requests/responses: max_body_bytes, provider response caps, schema size limits, runpack artifact limits, and optional rate limiting/inflight límites.
  • Tiempo de espera del proveedor: tiempos de espera del proveedor HTTP y límites de respuesta del proveedor MCP.
  • Typed outbound retry bursts: bounded attempts/backoff and per-provider las tapas de vuelo saliente mitigan las tormentas de reintentos y la amplificación de difusión.

Cadena de Suministro y Entorno de Ejecución

  • Release workflows enforce full artifact supply-chain evidence generation and verificación antes de la elegibilidad para la liberación o la publicación puede proceder.
  • Every release subject requires SBOM coverage, provenance, and signature verificación; la cobertura faltante es un fallo grave.
  • Keyless OIDC signing (cosign) is required in CI with certificate issuer and verificación de identity-regexp.
  • Vulnerability policy is fail-closed: block High/Critical vulnerabilities más cualquier CVE en el feed de Vulnerabilidades Conocidas Explotadas de CISA.
  • Supply-chain evidence artifacts are retained with release artifacts for audit y verificación fuera de línea.
  • External providers execute with local privileges; use OS sandboxing, scoped Los proveedores externos ejecutan con privilegios locales; utilizan sandboxing del sistema operativo, credenciales limitadas y permisos mínimos.
  • Provider contracts, configs, and docs extra_paths are local file inputs and Los contratos de proveedores, configuraciones y documentos extra_paths son entradas de archivos locales y deben estar protegidos por ACLs del sistema de archivos y controles de integridad.

Multi-Inquilino y Aislamiento

  • Tenant/namespace IDs are labels, not access controls: enforce authn/authz, Los IDs de inquilino/espacio de nombres son etiquetas, no controles de acceso: hacer cumplir la autenticación/autorización, los ganchos de autorización del inquilino y las ACL del registro en implementaciones compartidas.

Auditoría y Observabilidad

  • Auth decisions, registry access, tenant authz, and usage are logged with Las decisiones de autorización, el acceso al registro, la autorización del inquilino y el uso se registran con eventos de auditoría estructurados; los registros de prechequeo son solo hash por defecto.

Referencias de Implementación (Controles y Protecciones)

Núcleo de Ejecución

  • Canonical JSON hashing and non-finite float rejection: Hashing JSON canónico y rechazo de flotantes no finitos: crates/decision-gate-core/src/core/hashing.rs.
  • Tri-state comparator evaluation: Evaluación del comparador de tres estados: crates/decision-gate-core/src/runtime/comparator.rs.
  • Trust lane enforcement and anchor policy validation: crates/decision-gate-core/src/runtime/engine.rs, Aplicación de la vía de confianza y validación de políticas ancla: crates/decision-gate-core/src/runtime/engine.rs, crates/decision-gate-core/src/core/evidence.rs.
  • Safe summaries: Resúmenes seguros: crates/decision-gate-core/src/core/summary.rs.
  • Runpack build/verify and artifact size limits: Ejecutar la construcción/verificación de Runpack y límites de tamaño de artefacto: crates/decision-gate-core/src/runtime/runpack.rs.

Servidor MCP y Herramientas

  • Authn/authz, tool allowlists, bearer parsing, and auth audit: Authn/authz, listas de herramientas permitidas, análisis de portadores y auditoría de autenticación: crates/decision-gate-mcp/src/auth.rs, crates/decision-gate-config/src/config.rs.
  • Request limits (max body, inflight, rate limiting) and transport handling: Límites de solicitud (cuerpo máximo, en vuelo, limitación de tasa) y manejo de transporte: 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: Sanitización del ID de correlación: 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: Cargas útiles de eventos de auditoría: crates/decision-gate-mcp/src/audit.rs.
  • Tenant authz and usage meter seams: Costuras de autorización de inquilinos y medidor de uso: crates/decision-gate-mcp/src/tenant_authz.rs, crates/decision-gate-mcp/src/usage.rs.
  • Provider contract validation + strict comparator validation: Validación del contrato del proveedor + validación de comparador estricto: 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.

Proveedores y Corredor

  • 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: Política de permitir/denegar proveedores: 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, Validación de carga del broker y restricciones de origen: 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.

Almacenamiento y Contratos

  • SQLite run state + schema registry integrity and size limits: Estado de ejecución de SQLite + integridad del registro de esquemas y límites de tamaño: crates/decision-gate-store-sqlite/src/store.rs.
  • In-memory stores (tests/demos only): Almacenes en memoria (solo pruebas/demos): crates/decision-gate-core/src/runtime/store.rs.
  • Object-store runpack export key validation: Validación de la clave de exportación de runpack del objeto de almacenamiento: crates/decision-gate-mcp/src/runpack_object_store.rs.
  • Config file size/path validation and defaults: Validación del tamaño/ruta del archivo de configuración y valores predeterminados: crates/decision-gate-config/src/config.rs.
  • Canonical tool and schema contracts: Contratos de herramienta y esquema canónicos: 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: Herramientas de autoría/ejecución de CLI: crates/decision-gate-cli/src/main.rs.

Liberación de la Cadena de Suministro 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.

Requisitos Operacionales

  • Restrict MCP access to authenticated transports (mTLS, IPC ACLs, reverse Restringir el acceso a MCP a transportes autenticados (mTLS, IPC ACLs, autenticación de proxy inverso) y hacer cumplir TLS para HTTP/SSE (o terminación explícita en el upstream).
  • Configure server.auth for non-loopback deployments; rotate tokens and Configurar server.auth para implementaciones que no sean de bucle; rotar tokens y mantener listas de herramientas permitidas.
  • Mantener dev-permissive deshabilitado en producción; requerir carriles de confianza verificados.
  • Require signature verification for external providers where integrity Requerir verificación de firma para proveedores externos donde la integridad sea importante; gestionar la distribución de claves de manera segura.
  • Configure allowlists for env, json, http, and rest providers; avoid acceso de archivos sin restricciones.
  • For typed providers, protect capabilities_path and runtime_profile_path artifacts with filesystem ACLs and integrity controls; treat these files as entrada no confiable hasta que la verificación del resumen tenga éxito.
  • Restrict schemas_register, schemas_get, schemas_list, precheck, and scenarios_list to trusted callers (tool allowlists + tenant authz + registry ACLs). Restrict provider discovery tools with tool allowlists and provider_discovery listas de permitidos/prohibidos.
  • Configure schema registry ACL rules and signing metadata requirements where Configure las reglas de ACL del registro de esquemas y los requisitos de metadatos de firma donde la procedencia sea importante; proteja el almacenamiento del registro.
  • Limit or disable runpack_export for untrusted callers; restrict output Limitar o deshabilitar runpack_export para llamadores no confiables; restringir las rutas de salida y los prefijos del almacén de objetos.
  • Store run state and runpacks in tamper-evident storage; sign manifests Almacenar el estado de ejecución y los runpacks en un almacenamiento a prueba de manipulaciones; firmar los manifiestos externamente cuando se requiera no repudio.
  • Aplicar sandboxing a nivel de sistema operativo para proveedores externos y fuentes de intermediarios.
  • Set server.max_body_bytes, server.limits, and provider timeouts to Establecer server.max_body_bytes, server.limits y los tiempos de espera del proveedor para prevenir el agotamiento de recursos.
  • Disable docs search/resources in untrusted environments or restrict extra Desactivar la búsqueda de documentos/recursos en entornos no confiables o restringir rutas adicionales a ubicaciones de solo lectura.

Postura de Fallo

  • Fallar cerrado ante evidencia faltante, inválida o no verificable.
  • Rechazar configuraciones, llamadas a herramientas y registros de esquemas no válidos.
  • No divulgar datos sobre resultados Desconocidos o ambiguos.

Modelo de Amenaza Delta (2026-02-01)

  • Added explicit coverage for docs search/resources, tool visibility filters, Se añadió cobertura explícita para la búsqueda de documentos/recursos, filtros de visibilidad de herramientas, saneamiento de ID de correlación y redacción de cargas de auditoría.
  • Ampliación de las protecciones para corredores/fuentes y cobertura de validación de claves de almacenamiento de objetos.
  • Mapeo de controles de seguridad a ubicaciones de código concretas para trazabilidad.
  • Se añadieron límites explícitos de tamaño/profundidad de entrada de autoría en la normalización de contratos.
  • Se añadió una política de permitir/denegar el host de origen HTTP con guardias de IP privadas/locales de enlace.
  • Se abren fuentes de archivos seguras para enlaces simbólicos forzados para divulgaciones de archivos con privilegios de root.

Modelo de Amenaza Delta (2026-02-14)

  • Tightened debug diagnostics boundary: /debug/mutation_stats now follows MCP semántica de autenticación y falla cerrada para llamadores no autorizados.
  • Added end-to-end auth/schema coverage for debug mutation diagnostics to keep el contrato auditable y determinista bajo regresión de seguridad.

Modelo de Amenaza Delta (2026-02-15)

  • Added explicit coverage for CLI stdio MCP framing header limits and rechazo duplicado de Content-Length en escenarios de transporte hostiles.
  • Added MCP server and external provider framing-header caps (8 KiB cumulative) para cerrar los caminos de agotamiento de recursos de pre-análisis.
  • Added fail-closed duplicate Content-Length rejection for MCP stdio framing en adaptadores de transporte tanto de servidor como de proveedor externo.
  • Added deterministic, bounded docs ingestion references for docs.extra_paths para reducir la no determinación de recorrido y el riesgo de amplificación en el inicio.
  • Added built-in HTTP provider DNS resolution pinning and default private / denegación de destino link-local para cerrar rutas de bypass SSRF solo con nombre de host.
  • Added descriptor-relative no-follow file operations and atomic sibling-temp writes for contract artifact generation/verification to reduce TOCTOU risk bajo la mutación concurrente del sistema de archivos local.

Modelo de Amenaza Delta (2026-02-17)

  • Added built-in REST provider attack-surface coverage for GET-only external Extracción de evidencia de API (json_path, header) sin adaptadores MCP externos.
  • Added REST-specific header hygiene controls, including reserved-header rechazo y denegación de anulación de encabezado gestionado por autenticación.
  • Extended provider hardening references to include REST provider DNS pinning, private/link-local deny-by-default, JSON content-type gating for json_path, y manejo de respuestas limitadas.
  • Added typed provider boundary coverage for local capability/runtime artifacts y validación de resumen de perfil de tiempo de ejecución de tipo fail-closed.
  • Added typed OpenAPI runtime attack-surface coverage for profile-driven request vinculación, validación estricta de respuestas y anclajes tipados deterministas.
  • Added typed runtime header-reservation and auth-header ownership enforcement más codificación de parámetros de ruta segura para bloquear la inyección de delimitadores.
  • Added typed import/runtime hard limits (timeout_ms, max_response_bytes, y la longitud de operation_allowlist) con validación de cierre en caso de fallo.
  • Mapped typed import/codegen/runtime protections to OSS implementation files para una revisión de seguridad rastreable.

Modelo de Amenaza Delta (2026-02-19)

  • Hardened typed lifecycle tool boundaries: all typed_providers_* mutations now require explicit tenant_id + namespace_id and pass scoped context a través de authz, autoridad de espacio de nombres y ganchos de medidor de uso.
  • Extended tenant-authz request context with optional provider_id for provider-scoped tool calls (typed_providers_*, evidence_query) so el RBAC empresarial puede hacer cumplir la política a nivel de proveedor en la unión.
  • Added scoped typed runtime resolution seam (TypedProfileResolver) keyed by (tenant_id, namespace_id, provider_id) to prevent cross-scope profile selección cuando el estado del ciclo de vida comparte identificadores de proveedor.
  • Resolver invocation now snapshots the configured typed resolver before calling it, avoiding lock-held resolver execution and reducing deadlock/DoS riesgo de implementaciones de resolutores reentrantes.
  • Added REST runtime policy hook seam (RestPolicyEvaluator) for fail-closed decisiones de denegación previas a la red sobre el uso de host/esquema de salida y esquema de autenticación.
  • Added deterministic REST policy deny-code coverage in provider tests to keep vocabulario de cumplimiento/auditoría estable en todas las integraciones.
  • Updated release supply-chain posture to implemented state: complete artifact-level SBOM/provenance/signature verification with keyless OIDC política de vulnerabilidad de firma y puertas de acceso (Alta/Critica + KEV).
  • Added release CI implementation references for supply-chain generation, verificación y aplicación del flujo de trabajo.

Modelo de Amenaza Delta (2026-02-20)

  • Added CI workflow hardening policy enforcement via scripts/ci/workflow_hardening_check.py for immutable full-SHA action fijación y rechazo de cierre por fallo de patrones de tubería a shell de instalador mutables.
  • 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 escribir uso para liberar/publicar trabajos que firman/verifican evidencia de la cadena de suministro.
  • Tightened keyless signature verification scope in release/publish by binding cert identidad regexp al repositorio + ruta de flujo de trabajo + etiquetas refs.