Illustrative only - not an engagement finding
Model Output Can Select an Unapproved Downstream Action
Critical
See where this finding applies on the diagrams: model output path · bounded output handling · CP5 AI-call boundary
Illustrative only - not an engagement finding
Model Output Can Select an Unapproved Downstream Action
- Business Summary
- A model may recommend an action, but it should not decide what the application is authorized to change, send or delete. High-impact authority belongs to deterministic code and accountable people.
- Possible Weakness
- Free-form model output is interpreted as a tool, destination or operation and executed without an allow-list, independent authorization or human approval.
- Potential Impact
- Manipulated or malformed output could trigger data disclosure, destructive changes, external communication or paid processing beyond the intended workflow.
- What an Assessment Verifies
- Trace every consumer of Azure OpenAI output, tool permission, destination rule, authorization check and approval step from response parsing in the async worker to the final side effect.
- Expected Fix
- Map model output only to closed, schema-validated actions in the async worker, reauthorize in code and require human approval for external, irreversible or high-impact operations.
- How to Check the Fix
- Actions, destinations and parameters outside the approved set must be rejected, and every high-impact test request must stop at a recorded human approval before any side effect occurs.
Cross-Reference Evidence (Illustrative). This is cross-reference evidence showing how the model-output consumer, tool policy and approval test are connected. In a real engagement each item below is a live pointer: a file-and-line link into the source repository, a reproducible read-only query against the deployed Azure environment, or replayable tool output. Here they lead to newly authored public demonstrations.
-
Example source reference for mapping output to actions
This is cross-reference evidence. A real assessment links the reviewed commit and exact lines across the route, service and data boundary so another reader can follow the complete control path.
if actor.tenant_id != record.tenant_id: raise Forbidden() -
Example test rejecting an unsafe action
This is cross-reference evidence. A real report retains the tool version, safe test case, expected result and output needed to reproduce the conclusion.
security-regression --case "<illustrative-case>" --format json Illustrative output: {"result":"blocked as expected"} -
Example least-privilege workload record
This is cross-reference evidence. A real assessment records a dated read-only identity or configuration query and explains what that result does and does not prove.
az resource show --ids "<illustrative-resource-id>" \ --query "identity.type" Illustrative output: "SystemAssigned"