The vulnerability exists in the saveAsset function within the src/gql/resolvers/mutations/Asset.php file. The provided patch ac7edf868c1a81fd9c4dc49d3b3edf1cce113409 clearly shows the fix. The root cause of the privilege escalation is a missing authorization check. The saveAsset function is responsible for handling asset mutations via the GraphQL API. Before the patch, the function would fetch an asset using the ID from the mutation's arguments ($arguments['id']) but would only validate the user's permissions against the volume resolved from the GraphQL schema context ($volume). It failed to check if the fetched asset actually belonged to that authorized volume. This oversight allowed an authenticated user with write access to a single asset volume to craft a GraphQL mutation that specified a volume they had access to, but contained the ID of an asset in a different, restricted volume. The system would then incorrectly apply the mutation to the asset in the restricted volume. The patch rectifies this by adding a crucial check: if ($asset->volumeId !== $volume->id). This condition verifies if the asset's actual volume matches the one the user is authorized for. If they don't match, it triggers an additional authorization check (requireSchemaAction) for the asset's true volume, effectively closing the security hole.