AID-H-032.002: Cross-Tenant Serving-State Isolation
This control should explicitly govern prompt-prefix reuse, request coalescing, warm caches, worker reuse, region generation and revocation, restart/failover behavior, and serving-placement decisions, because these performance features are common leakage and cross-tenant contamination paths in shared inference systems.
Pillars: infra, model, app
Lifecycle: building, operation
Scope boundary
Owns cross-tenant isolation of request queues, batching groups, prefix and KV state, sessions, warm workers, memory pools, shared-memory regions and IPC handles, failover state, serving pools, and placement remediation. It governs registry-authorized serving-state lifecycle and logical serving topology rather than general application-resource authorization, cache-object integrity, or hardware residue clearing.
AID-H-027: AID-H-032.002 enforces tenant-isolated placement and serving-state topology; AID-H-027 verifies cache keys, envelopes, authorization context, invalidation, and safe object reuse. Where both touch caches, this control consumes cache evidence and disables sharing or remediates placement.
AID-H-009.004: AID-H-032.002 isolates logical serving state above the hardware layer; AID-H-009.004 clears GPU or accelerator residue and verifies low-level compute hygiene. Worker and queue isolation do not prove VRAM sanitization.
AID-H-018.002: AID-H-032.002 owns tenant-isolated inference serving state, including shared-memory and IPC region lifecycles; AID-H-018.002 authorizes application and service resource handles at the final action adapter. An authorized business resource does not authorize inference-memory attachment, and an isolated inference region does not authorize the later business action.
Implementation guidance
- AID-H-032.002-G001: Partition serving state by tenant; authorize every shared-memory and IPC lifecycle transition through an authoritative generation-bound registry; and disable cross-tenant prefix, queue, batch, warm-state, or failover reuse unless the serving platform can prove tenant-safe isolation and pass cache-timing evidence gates.
AID-H-032.002-G001
Concept:
Shared-state optimizations are attractive because they reduce latency and cost, but they can also create covert channels. The isolation design should start from a simple rule: queues, batching groups, worker state, failover state, and serving pools are tenant-scoped unless there is explicit evidence that stronger sharing is safe. Cache-object key correctness and cache-timing probes are produced by AID-H-027; this sub-technique consumes those findings and changes the serving topology or placement.
Example: tenant-scoped serving boundaries
# File: serving/tenant_state_policy.yaml
cache:
key_template: "{tenant_id}:{model_id}:{prompt_prefix_hash}"
prefix_or_kv_cache_shared_across_tenants: false
cache_timing_evidence_source: "AID-H-027"
on_cache_timing_failure: "dedicated_pool_or_disable_prefix_reuse"
batching:
group_template: "{tenant_id}:{model_id}"
queue:
partition_template: "{tenant_id}:{model_id}"
sessions:
namespace_template: "{tenant_id}:{session_id}"
workers:
warm_pool_template: "{tenant_id}:{model_family}"
failover:
require_fresh_tenant_rebind: true
Authoritative shared-memory and IPC registry
Never expose a runtime-owned shared-memory name, file descriptor, region key, or IPC object directly as a caller-chosen identifier. Keep caller and internal namespaces disjoint. A serving-control-plane registry must create collision-safe opaque region IDs and bind each one to the authenticated owner workload, tenant, object type, byte size, access mode, generation, job or model, creation and expiry times, and current lifecycle state.
shared_memory_ipc:
caller_namespace_template: "tenant/{tenant_id}/request/{request_id}"
internal_namespace_template: "runtime/{workload_id}/region/{region_id}"
accept_caller_supplied_internal_names: false
registry:
authority: "serving-control-plane"
required_binding_fields:
- owner_workload_id
- tenant_id
- object_type
- size_bytes
- access_mode
- generation
- job_or_model_id
- created_at
- expires_at
- lifecycle_state
authorized_operations:
- create
- map
- attach
- read
- write
- unmap
- destroy
- restart_rebind
- failover_rebind
- ownership_handoff
require_atomic_generation_lease: true
require_current_lease_at_use: true
tombstone_destroyed_generations: true
require_fresh_rebind_after_restart_or_handoff: true
fail_closed_dependencies:
- authenticated_identity
- tenant_policy
- region_registry
- scheduler
- lifecycle_readback
For every lifecycle operation, the broker derives workload and tenant identity from the authenticated channel, resolves the opaque region ID in the authoritative registry, verifies type, size, mode, job or model, generation, expiry, revocation and destroy state, and acquires an atomic generation lease before returning a descriptor or performing the operation. The final runtime must consume that exact lease and generation, then independently read back the transition. A lookup followed by an unbound map is a TOCTOU bypass. Restart, failover, worker replacement, or ownership handoff invalidates the old lease and requires a fresh authorized binding; a stale generation or destroyed tombstone never reactivates.
Shared-memory and IPC negative verification
Reconcile the complete region population and every lifecycle operation with queue, batch, warm-worker, memory-pool, scheduler, restart, failover, and handoff evidence. Test guessed and copied handles, caller-selected internal names, namespace collisions, cross-tenant attach, read-to-write escalation, wrong type or oversize mapping, stale generations, use after revoke or destroy, worker restart, failover, ownership transfer, direct runtime-API bypass, and identity, policy, scheduler, registry, or readback outages. Every mismatch or unavailable required authority fails closed; an absent shared-memory or IPC architecture is NOT_APPLICABLE for this method rather than PASS.
Additional serving-state checklist
- Do not co-batch requests from different tenants into the same optimization group unless the provider can prove tenant-safe batching semantics.
- Do not reuse warm workers, prefix-prefill state, KV-cache state, speculative execution state, or failover state across tenants without explicit isolation guarantees.
- Consume
AID-H-027cache-timing probe results before approving shared serving tiers; a failed probe requires placement remediation here. - On restart or failover, require fresh tenant rebinds before any cached state, worker context, or scheduler state is reused.
- Treat undocumented scheduler, queue, cache, warm-worker, or failover behavior as shared-without-proof and keep sensitive workloads off that tier.
Action: require the serving platform to document how cache keys, batching groups, queue partitions, warm-worker pools, failover state boundaries, and placement tiers are derived. If tenant identity is not part of those boundaries, or if AID-H-027 evidence shows cross-tenant prefix-cache observability, treat the platform as shared-without-proof and keep sensitive workloads off it until this sub-technique enforces a tenant-isolated or dedicated serving topology.
Keep the action safely bounded
Reconcile the complete population of every eligible request plus every serving-state lookup, batch membership, worker assignment, restart, and failover transition; reject expired, revoked, or stale policy and asset bindings under the policy-defined freshness window.
Derive all partitions from authenticated server-side identity, prohibit mixed-tenant batching and state reuse unless the exact mechanism has independently verified isolation, consume H-027 cache findings, and move affected traffic to isolated placement or disable reuse on any mismatch.
Open-source tools
- vLLM
- KServe
- Envoy (routing only; use tenant-dedicated upstream pools)
- Istio (routing only; use tenant-dedicated upstream pools)
Commercial / hosted tools
- F5 Distributed Cloud (routing only; use tenant-dedicated upstream pools)
- Kong Gateway Enterprise (routing only; use tenant-dedicated upstream pools)
- Kong Konnect (routing only; use tenant-dedicated upstream pools)
- NGINX Plus (routing only; use tenant-dedicated upstream pools)
Threat mappings
MITRE ATLAS
- AML.T0025 Exfiltration via Cyber Means
MAESTRO
- Data Leakage (Cross-Layer)
OWASP LLM Top 10 2026
- LLM02:2026 Sensitive Information Disclosure
OWASP ML Top 10 2023
- N/A
OWASP Top 10 for Agentic Applications 2026
- ASI06:2026 Memory & Context Poisoning (cross-tenant serving-state reuse can contaminate or expose context)
NIST Adversarial Machine Learning 2025
- NISTAML.036 Leaking information from user interactions
Cisco Integrated AI Security and Safety Framework
- AISubtech-14.1.2 Insufficient Access Controls
- AISubtech-4.2.2 Session Boundary Violation
- AITech-14.1 Unauthorized Access
- AITech-4.2 Context Boundary Attacks
- AITech-8.2 Data Exfiltration / Exposure
- AITech-8.3 Information Disclosure
Google Secure AI Framework 2.0 - Risks
- SDD: Sensitive Data Disclosure
Databricks AI Security Framework 3.0
- Model Serving - Inference requests 9.10: Accidental exposure of unauthorized data to models
- Model Serving - Inference response 10.6: Sensitive data output from a model