← ClaudeAtlas

auditing-presigned-url-scope-abuselisted

Audit presigned object-storage URLs for scope that grants more than the request intended: a signature that covers a broader key, prefix, or bucket than the user should reach, an overlong expiry, a method or content-type left unconstrained, or a signer identity whose permissions exceed the caller's. Covers presigned GET and PUT URLs for S3 and compatible stores, where the signed policy is the only boundary once the URL leaves the server, and where an attacker who edits the key, reuses the URL, or uploads a different object escapes the intended scope. Use when a service mints presigned URLs so clients read or write storage directly. The caller-influenced key or policy input is the source, the signing call is the sink, and the signed scope wider than the caller's entitlement is the bug.
UnboundCompute/security-agent-skills · ★ 4 · AI & Automation · score 80
Install: claude install-skill UnboundCompute/security-agent-skills
# Auditing presigned URL scope abuse: when the signature grants more than the request A presigned URL turns a server-side permission into a standalone credential: once minted, it grants whatever the signature covers to anyone holding the URL, with no further authorization check at the store. That is convenient and precisely why it leaks. If the service signs a key the caller supplied without confirming the caller owns it, the URL reads or writes another user's object. If the signed policy leaves the key prefix, the HTTP method, the content type, or the expiry looser than the request needed, the holder does more than intended: reads a sibling object, overwrites a path they were only meant to read, or replays the URL long after it should have died. The signer's own identity matters too, because the URL inherits its permissions, not the caller's. You audit these by comparing the signed scope against the caller's actual entitlement. ## When to use - A service mints presigned object-storage URLs so clients read or write a store directly. - The object key, prefix, bucket, or upload parameters in a presign request come from the caller. - Presigned URLs are returned to browsers or third parties where they can be inspected, edited, or replayed. ## Scope check Test presigned-URL handling only against storage and applications you own or are authorized to assess, on non-production data. A confirming request reads or writes real objects, so stay inside the authorized bucket and accou