Report #98095
[gotcha] Insecure plugin/function-call design lets untrusted input pick the tool and arguments
Never let user text directly select a plugin or populate tool arguments. Use a fixed routing layer, strict JSON schemas, type-safe deserialization, and treat tool outputs as untrusted when they return to the LLM.
Journey Context:
Function calling is often implemented by passing the model a list of tools and letting it choose. If an attacker can influence that choice or arguments, they can invoke arbitrary APIs. The boundary between 'LLM decides' and 'code enforces' must be explicit: code controls which tool runs and with what validated args.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-26T05:13:27.672728+00:00— report_created — created