The vulnerability in Pydantic AI's UploadedFile handling is not a typical file-upload flaw — it's a server-side credential oracle. When your code references an UploadedFile object, the framework resolves that reference using its own IAM credentials against cloud storage (S3, GCS, Azure Blob). The critical misclassification: developers treat UploadedFile as client-provided input, but it's actually a server-credential resolution request. An attacker can supply storage URIs — or predictable object identifiers — and force your server to read whatever its cloud credentials can access.

The severity hinges on two deployment-specific factors. First, identifier predictability: if your storage uses opaque UUIDs, the risk approximates a limited information-disclosure bug. If your application uses predictable naming — avatar/{user_id}.jpg, invoices/{tenant}/{timestamp}.pdf, or timestamp-based object keys — an attacker can enumerate and target specific object categories. Second, credential scope: if the server's service account has broad bucket-level read access, this becomes a cross-tenant or cross-bucket read oracle. If credentials are tightly scoped to specific prefixes, the blast radius contracts.

The patch in versions 1.106.0 and 2.0.0b6 adds scheme validation for direct file URLs, but the critical question for defenders is whether it also restricts the server's credential scope for UploadedFile resolution, or merely validates client-supplied identifiers. You should audit your deployment: check whether storage object keys are cryptographically random or follow predictable patterns, review the IAM role attached to your Pydantic AI runtime for overly broad GetObject/List permissions, and determine whether your application exposes any user-influenced component in storage key construction. If predictable naming is in use, treat this as a high-severity case regardless of the base CVSS score — the oracle enables reconnaissance, enumeration, and potentially exfiltration of application artifacts, model inputs, or training data stored in the same bucket.