Access control
20 guides tagged Access control, grouped by topic, with the SDLC phase and role each is written for.
Application security
8 guidesEnforce authorization for every object action
Authorize the authenticated subject, requested operation, and specific resource together; a valid login or unpredictable identifier is insufficient.
Development, Testing · Developers
Review tenant boundaries before implementation
Trace tenant identity through requests, data stores, caches, jobs, and administration, then turn plausible isolation failures into tests.
Design · Developers, AppSec engineers
Authorize functions and fields as well as objects
Prevent mass assignment, sensitive-field exposure and administrative actions that a valid object lookup alone cannot protect.
Development, Testing · Developers, AppSec engineers
Review a code change through its trust boundaries
Turn a pull request into a small set of security claims that can be checked against the surrounding system and tests.
Development, Testing · Developers, AppSec engineers
Keep untrusted object keys out of prototype and authority paths
Trace an actual nested-merge mutation, replace it with a narrow schema, and make authorization independent of inherited properties.
Development · Developers, AppSec engineers
Secure design patterns: a catalogue for insecure-design (A06)
A catalogue of reusable secure-design patterns, grouped by concern, each with when to use it, a short example and the failure it prevents: choke-point authorization, capability tokens, parse-don't-validate, safe-by-default APIs, tenant scoping, fail-closed, idempotency, and more.
Design · AppSec engineers
Case study: First American's EaglePro document exposure (2019)
How sequential IDs in unauthenticated links exposed First American's title documents in 2019, after its own penetration test found the flaw and a clerical error let it go unfixed.
Development, Testing, Maintenance, Security program · Developers, AppSec engineers, Security leaders
Case study: Spring4Shell (CVE-2022-22965)
How Spring's data binding let request parameters reach the class loader on JDK 9 and later in 2022, why the denylist workaround leaked, and what it teaches about framework-level mass assignment.
Development, Maintenance · Developers, AppSec engineers, Platform engineers and SREs
Runtime, cloud & APIs
6 guidesRun Kubernetes workloads with only the privileges they need
Review pod settings, service accounts and effective permissions together before treating a namespace as an isolation boundary.
Development, Release, Maintenance · Developers, Platform engineers and SREs
Prove network and admission policies enforce the intended boundary
Verify allowed traffic and rejected deployments in the cluster instead of treating policy files as evidence of isolation.
Development, Release, Maintenance · Platform engineers and SREs
Review cloud permissions and role trust together
Distinguish who can obtain a cloud identity from what that identity can do, then test the effective access path.
Release, Maintenance · Developers, Platform engineers and SREs
Authenticate workloads and authorize their service actions
Use service identities, mutual TLS and function permissions without mistaking an encrypted connection for complete authorization.
Release, Maintenance · Platform engineers and SREs
Prevent shared-cache poisoning and private-response deception
Define lookup and storage policy, trace cache/origin interpretation differences and verify both public reuse and private isolation.
Design, Maintenance · Developers, Platform engineers and SREs
Case study: Microsoft AI researchers' over-permissive SAS token (2023)
How an over-permissive Azure Storage SAS token in a public repository for AI models exposed internal Microsoft data in 2023, and how to scope, scan for and revoke signed URLs.
Maintenance · Platform engineers and SREs
Identity & cryptography
2 guidesAuthorization models: RBAC, ABAC, ReBAC and policy as code you can test
Translate roles, attributes and relationships into explicit subject-action-resource decisions, prevent broken object level authorization (BOLA), and verify ownership and tenant boundaries with tests.
Design, Development · Developers
Case study: the LastPass breach (2022)
How an attacker went from a compromised developer laptop to a DevOps engineer's home computer, the keys to LastPass's cloud backups and a copy of customer vaults; why each vault's safety then rested on its master password and PBKDF2 iteration count; and what it teaches about backup keys, privileged endpoints, KDF upgrades and unencrypted metadata.
Design, Development, Maintenance · AppSec engineers, Platform engineers and SREs
Governance & frameworks
1 guideAI security
3 guidesKeep retrieval inside the user’s data boundary
Carry document permissions through ingestion, retrieval, caching and citations so a model never receives another tenant’s records.
Design, Development · Developers, AppSec engineers, Platform engineers and SREs
Authorize agent tools outside the model
Bind each proposed action to the user, resource and approved arguments before allowing a tool to cause a side effect.
Design, Development · Developers, AppSec engineers, Platform engineers and SREs
Keep secrets and controls out of hidden context (OWASP LLM08:2026)
OWASP LLM08:2026 Hidden Context Exposure, which replaced System Prompt Leakage: why system prompts, tool schemas and retrieved policy text get extracted, what must never be in them, and how to enforce rules where a leak changes nothing.
Design, Development · Developers, AppSec engineers
Practice
Privileged container lab: Reject a privileged workload before deployment
A deployment review checks only the first container. A privileged init container slips through. Repair a deliberately small admission predicate and test all container lists.
RAG access control lab: Stop a retriever from returning another tenant’s documents
A search helper sends every matching document to a model and asks the model to respect permissions. Repair filtering before any content reaches the model.
Excessive agency lab: Bind an agent’s action to the approved arguments
An assistant receives approval to export one report, then substitutes a different report and destination. Repair the tool gateway that authorizes the final action.
IDOR lab: Repair an invoice authorization bug
Bob can retrieve Alice’s invoice by changing the URL. You own the endpoint’s permission check. Reproduce the leak, patch the function below, and prove that Alice can still read her invoice.
Mass assignment lab: Update only the fields users may edit
PATCH /me merges the whole request body into the stored user, so adding "role": "admin" turns a member into an administrator. Change only the fields a user may edit on their own profile.
NetworkPolicy lab: Lock down a shop namespace
One hurried NetworkPolicy lets every pod in every namespace reach the API, and nothing protects the web tier or the database. Rewrite the shop namespace’s policies so only the flows the application needs are allowed.
IAM trust policy lab: Evaluate a role trust policy against the confused deputy
An evaluator for AWS sts:AssumeRole trust policies matches the principal and action but ignores the Condition block and does not honour an explicit Deny, so a broad principal can assume a role without the external id — the confused deputy. Repair evaluate_trust to enforce conditions and Deny.
Missing object-level authorization (IDOR and BOLA)
Missing object-level authorization (IDOR, called BOLA in the OWASP API list) happens when an API checks that a caller is signed in and then loads whatever invoice, order or file the request names, so changing an ID in the URL, the query string or a bulk export returns someone else's data.
Mass assignment (over-posting)
Mass assignment, also called over-posting or autobinding, happens when an endpoint copies every field the request body names onto a stored object.