security-fundamentals — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited security-fundamentals (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
What it is: Security fundamentals are the design principles and threat-modeling habits that decide whether a system can safely handle data, identity, and authority under adversarial conditions.
Mental model: Start with assets, adversaries, trust boundaries, and privileged actions. Every mitigation should be traceable to what crosses a boundary, who controls each side, what can go wrong, and how much damage remains if the boundary fails.
Why it exists: Security added after the system works is expensive and incomplete. Designing security in early makes attacks harder, slower, easier to detect, and smaller in blast radius.
What it is NOT: It is not an OWASP deep audit, LLM prompt-injection architecture, vendor webhook mechanics, scanner configuration, cryptographic primitive implementation, or legal compliance workflow.
Adjacent concepts: owasp-security owns category-specific application-security review; prompt-injection-defense owns LLM instruction-channel threats; type-safety carries validated values after boundary parsing; api-design and http-semantics shape public interfaces; webhook-integration owns vendor webhook mechanics.
One-line analogy: Security fundamentals are like structural engineering for software: load-bearing decisions must be in the design before people move in.
Common misconception: A pile of controls is not the same as a security argument; controls matter only when they are placed at the right trust boundaries and fail safely.
The cross-cutting design principles, threat-modeling discipline, and recurring vulnerability classes that determine whether a system can safely handle data, identity, and authority under adversarial conditions. Covers the foundational discipline upstream of any specific vulnerability or tool: Shostack's four threat-modeling questions, Saltzer and Schroeder's eight design principles (1975), trust boundaries, the authentication/authorization distinction, input validation as a boundary discipline, defense in depth, least privilege, and the OWASP Top 10 as a working enumeration of recurring failure classes. Does NOT cover the implementation of specific cryptographic primitives, the configuration of specific scanners, the regulatory artifacts of compliance regimes, the LLM-specific specialization to prompt injection, or the organizational/social side of security.
Security is a property of the design, not a feature added after the system works. The cost of designing security in is small; the cost of retrofitting it is order-of-magnitude larger and produces worse results. The discipline of security fundamentals is the discipline of paying these costs early — at the threat-modeling stage, at the trust-boundary stage, at the authentication-design stage — before the system has accumulated the structural debt that makes retrofitting expensive.
The discipline does not promise prevention of attacks. Any non-trivial system will be attacked; some attacks will succeed. The goal is to make attacks expensive, slow, traceable, and limited in blast radius. Every design choice is evaluated by what it costs the defender vs what it costs the attacker. Secure-by-default choices cost the defender slightly more code upfront but cost the attacker a working exploit; opt-in security features cost the defender nothing upfront but cost the attacker very little when the developer inevitably forgets. The discipline is the deliberate placement of costs on the attacker rather than the defender.
For agents writing code, the discipline is what lets the agent reason about a security-relevant change without having to read the entire system. An agent that knows the trust boundaries, the authn/authz distinction, and the input-validation discipline can look at a new endpoint and ask: 'where is this endpoint receiving data from?' 'Is the data validated at the boundary?' 'Is authentication checked?' 'Is authorization checked at the moment of the privileged action?' 'What's the blast radius if any of these fail?' These questions produce the right code without the agent having to recall every OWASP entry.
| Question | What it produces | Common failure |
|---|---|---|
| What are we working on? | The system diagram, asset inventory, data classification, trust boundaries | Skipped; analysis proceeds against an unstated model |
| What can go wrong? | The threat list: STRIDE categories, attacker scenarios, abuse cases | Jumped to mitigation without enumerating threats |
| What are we going to do about it? | The mitigations: design choices, controls, monitoring | The bulk of effort goes here; without the first two, mitigations are random |
| Did we do a good job? | Verification: tests, reviews, ongoing monitoring | Declared without testing; threat model never revisited |
A team that answers all four iteratively, with each system change, is doing security fundamentals. A team that answers only three, or answers them once, is doing security theater.
These predate every modern technology and remain canonical because they describe properties, not implementations.
| Principle | One-line gloss | What it forbids |
|---|---|---|
| Economy of mechanism | Keep it simple | Sprawling, complex security architectures with many components |
| Fail-safe defaults | Deny by default; permit by exception | "is_admin defaults to true" patterns |
| Complete mediation | Check every access; never cache "I checked this earlier" | First-request-only auth checks; trust-on-session |
| Open design | Don't depend on secrecy of the design (Kerckhoffs) | Security through obscurity; secret algorithms |
| Separation of privilege | Require multiple independent conditions for sensitive operations | Single-credential vault access for irreversible actions |
| Least privilege | Minimum permissions per entity | Service accounts with admin keys; over-scoped tokens |
| Least common mechanism | Minimize shared mechanism across users | Global state that leaks information between requests |
| Psychological acceptability | Security users will bypass is not security | Onerous policies that drive workarounds (sticky-note passwords) |
| Concern | Question it answers | Verified by | Where it lives | When it runs |
|---|---|---|---|---|
| Authentication | "Who are you?" | Credentials (password, token, certificate, MFA) | Auth middleware, login flow | At session establishment |
| Authorization | "Are you allowed to do this?" | Policy against identity (RBAC, ABAC, ACLs) | At every privileged action | Every request to a protected resource |
Conflating these is the #1 issue in the OWASP Top 10. The pattern: authenticate at the entry point; authorize at every privileged action. Never short-circuit authorization on the basis of having a valid session.
The pattern, in order:
type-safety — the type system carries the validation forward.| Boundary | Untrusted source | Validation discipline |
|---|---|---|
| User → application | HTTP request bodies, form inputs, query params, headers | Schema-based parsing at the entry point |
| External API → application | Webhook payloads, third-party responses, OAuth callbacks | Signature verification + schema validation |
| Database → application | (Trust your DB, but validate cross-tenant) | Org-scoped queries; row-level security |
| Client → server (API) | API requests | Schema validation + authn + authz |
| Process boundary (microservices) | Inter-service calls | mTLS or signed tokens + schema validation |
| Untrusted file → application | Uploaded files | Type detection, size limits, sandbox parsing |
| LLM → application (tool calls) | Tool arguments produced by LLM | Treat as untrusted; validate against tool schema |
| Layer | Purpose | Failure mode when missing |
|---|---|---|
| Network | Firewall, segmentation, WAF | Direct exposure of internal services to internet |
| Identity | Authn, MFA, SSO | Credential stuffing, account takeover |
| Application authz | RBAC/ABAC, per-action checks | Broken access control (OWASP A01) |
| Input validation | Schema parse, sanitize | Injection (OWASP A03) |
| Data encryption | At-rest, in-transit, end-to-end | Cryptographic failure (OWASP A02) |
| Output encoding | Escape on output (XSS, log forging) | XSS, log poisoning |
| Rate limiting | Throttling, anomaly detection | Brute force, scraping, DoS |
| Logging & monitoring | Audit trails, alerts | Undetected breach (OWASP A09) |
| Incident response | Playbooks, forensics, recovery | Slow response when attacks succeed |
The property of defense in depth is the composition — no single layer is the security; the security is what remains when one layer fails.
After applying this skill, verify:
| Instead of this skill | Use | Why |
|---|---|---|
| Defending an LLM agent against prompt injection | prompt-injection-defense | prompt-injection-defense owns the LLM-specific specialization; this skill is the broader framing |
| Encrypting stored credentials (envelope encryption, KMS) | Vendor/KMS/library docs, then owasp-security for review | implementation mechanics are outside this active skill library; this skill owns deciding what counts as a secret |
| OWASP-category code audit or vulnerability triage | owasp-security | owasp-security owns category-specific security review; this skill owns the upstream design principles |
| Choosing and configuring a SAST/DAST/dependency scanner | Scanner/vendor docs, then owasp-security for review | scanner setup is tooling-specific; this skill owns why the scan exists |
| GDPR / data-subject rights / regulatory artifacts | Legal/compliance docs | compliance workflow is outside this active skill library; this skill owns the underlying security design properties |
| Implementing a specific cryptographic primitive (AES, RSA, hashing) | Well-reviewed crypto library docs (libsodium, BouncyCastle, native APIs) | Implementation is library territory; this skill is upstream of "which primitive" |
| Webhook signature verification for a specific platform (Shopify, Stripe) | webhook-integration | webhook-integration owns vendor-specific patterns; this skill provides the framing |
| Social engineering, phishing, organizational security awareness | (no skill — out of scope) | Organizational security is a separate discipline |
| Penetration testing methodology | (no skill — out of scope) | A specialized professional discipline |
owasp-security for OWASP-category deep review and newer Top 10 release-candidate mapping.prompt-injection-defense for that territory.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.