8
Security: Boundaries, Data and Trust
Know what is sensitive, where the boundaries are, and who is allowed to do what.
Why it matters when agents do the typing
The insecure version of a feature usually works just as well in a demo, so only deliberate attention separates the two. Agents also add attack surface of their own, because they read untrusted content, hold credentials and take actions. Security means knowing what must be protected, making sure every path through the system respects that, and answering for it when data leaks.
-
Depth: do
Security Boundaries and Threat Modeling
Finding where trust changes in a system, what crosses each boundary, and what an attacker would try there.
A mistake it teaches you to catch: An internal service that trusts any caller on the network because it is considered internal.
-
Core 16
Depth: do
Authentication and Authorization
Proving who someone is and deciding what they are allowed to do, on every request and for every object.
A mistake it teaches you to catch: An endpoint that returns any record whose ID you put in the URL, because it checks that you are logged in but not that the record is yours.
-
Core 17
Depth: do
Sensitive Data and Secrets
Knowing which data is sensitive and which is not, where it travels, and how to keep the sensitive set small.
A mistake it teaches you to catch: API keys or passwords hardcoded in source code or committed to the repository.
-
Depth: explain
Protecting Data in Transit and at Rest
How data moves securely between systems, and how it stays protected where it is stored.
A mistake it teaches you to catch: TLS certificate verification disabled in a client to get past an error.
-
Core 18
Depth: do
Untrusted Input and Injection
Treating every input as hostile, and understanding the family of attacks where data ends up executed as code or commands.
A mistake it teaches you to catch: A database query or shell command built by string concatenation with user input.
-
Depth: explain
Dependencies and the Supply Chain
Every package you install, and every package it pulls in, is code you run with your own permissions.
A mistake it teaches you to catch: An import of a package that does not exist, or of a lookalike name an attacker registered to catch exactly that mistake.