Secure reliable systems
Skill radkomih/claude-code-ext/plugins/secure-reliable-systems/skills/secure-reliable-systems
Use when designing, implementing, or reviewing systems for security and reliability — covers threat modeling, least privilege, resilience patterns, secure deployment, incident response, and security culture. Based on Google's "Building Secure and Reliable Systems".From its SKILL.md
npx -y skills add radkomih/claude-code-ext --skill secure-reliable-systemsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
11.3 KB, ~2.3k tokens by cl100k_base, as published. Nobody here has run it
Building Secure and Reliable Systems
Core Insight
Security and reliability are emergent properties — impossible to retrofit. Both must be designed in from the start. They share the same root causes: complexity, hidden assumptions, and cascading failures.
Fundamental tension: Reliability favors fail-open; security requires fail-closed. Resolve this tension explicitly at design time.
Understanding Adversaries
Before designing defenses, model who you're defending against.
Attacker Profiles
| Profile | Motivation | Capability |
|---|---|---|
| Hobbyist | Challenge, curiosity | Low — opportunistic |
| Vulnerability researcher | Recognition, bounties | Medium — targeted |
| Activist | Ideology, exposure | Medium — sustained |
| Criminal actor | Financial gain | High — persistent |
| Nation-state / law enforcement | Intelligence, control | Very high — patient |
| Insider | Grievance, profit, coercion | Very high — trusted access |
| AI/automation | Amplifies any of the above | Scales attack volume |
Insiders are the hardest threat: they have legitimate access, know systems deeply, and bypass perimeter controls. Design as if insiders will turn adversarial.
Attacker Methods
- Cyber kill chains: Reconnaissance → intrusion → lateral movement → exfiltration. Disrupt any link to stop the chain.
- TTPs (Tactics, Techniques, Procedures): Attackers reuse playbooks. Threat intelligence maps known TTPs to defenses.
- Risk = Probability × Impact: Prioritize mitigations by this product, not gut feeling.
Design Principles
Least Privilege
- Grant minimum access needed; reject ambient/implicit authority
- Zero Trust: network location grants nothing — require user + device credentials
- Zero Touch: automate production access; humans interact via controlled APIs
- Use narrow, typed APIs (CRUD on IDs) instead of broad POSIX-style interfaces
- Classify access by risk (public / sensitive / highly sensitive)
- Audit with structured justification (ticket IDs, case numbers)
- Multi-Party Authorization (MPA) for sensitive actions
- Breakglass for emergencies — restrict, monitor, always investigate after use
Understandability
- Decompose into independently-reasoned components with clear boundaries
- Centralize auth, logging, rate-limiting in frameworks — not scattered across services
- Use typed interfaces (SafeHtml, TrustedSqlString) to make invalid states unrepresentable
- Minimize Trusted Computing Base (TCB) — smaller = easier to reason about
- Design invariants: properties that hold even under malicious conditions
Resilience (Defense in Depth)
- Layer independent defenses — attackers must defeat each independently
- Controlled degradation: shed less-critical features to preserve essential ones
- Blast radius control: compartmentalize by role, location, and time
- Failure domains: partition into independent copies so one event can't take all
- Maintain three tiers: primary → cached/HA fallback → minimal-dependency fallback
- Redundancy expands attack surface — design both together
Recovery
- Decouple deployment speed from policy: same system for normal rollout and emergency rollback
- Know your intended state — continuously compare deployed vs. desired, auto-repair deviations
- Avoid wall-clock time dependencies; use version/epoch or validity lists instead
- Rollbacks restore reliability but can reintroduce vulnerabilities — use deny lists + Security Version Numbers
- Test recovery paths regularly — untested emergency procedures fail when needed
Design for Change
- Architecture must support fast, safe changes — security posture decays without it
- Rate-limit as isolated microservice, not embedded logic
- Progressive rollout (canary → tested → full) applies to security changes too
DoS Mitigation
Treat DoS as a design constraint, not an ops problem.
Attacker strategy: Exhaust the cheapest resource (bandwidth, memory, threads, DB connections) relative to defender cost.
Defender strategy: Make attacks expensive for the attacker and cheap to absorb.
- Defendable architecture: Push filtering upstream (CDN, load balancer, API gateway); never let cheap requests reach expensive backends
- Graceful degradation: Shed non-critical features first; maintain core functionality under load
- Rate limiting as isolated service: Failure of rate-limiting infra shouldn't take down the protected service
- Self-inflicted attacks: Client retry storms and thundering herds are the most common real-world DoS. Require exponential backoff + jitter in all clients.
- Strategic response: Have pre-negotiated upstream filtering; know your ISP/CDN escalation path before an attack
Implementation
Writing Secure Code
| Vulnerability | Mitigation |
|---|---|
| SQL Injection | Typed APIs (TrustedSqlString) |
| XSS | Type system + contextual escaping (SafeHtml) |
| Memory corruption | Use memory-safe languages (Go, Java) |
| Insecure deserialization | Protocol Buffers for untrusted input |
- Prefer frameworks over per-component implementations — fix once, protect all
- Strong static types for domain concepts (User, Width, Radius) not raw primitives
- YAGNI — don't add speculative features that expand attack surface
- Enable sanitizers (AddressSanitizer, ThreadSanitizer) in CI/CD
Deploying Securely
Threat model: benign insiders (mistakes) + malicious insiders + external attackers on insider accounts.
- Mandatory code review = multi-party authorization for code
- All build/test/deploy steps automated and locked down
- Verify what is deployed (artifact provenance), not just who triggered it
- Config-as-code: same review/test rigor as source code
- Never check secrets into version control; use dedicated secret management
- Binary provenance: document inputs, transformations, builder identity
- Route all deploys through choke points; breakglass with full audit trail
Logging and Investigation
Logs are your only source of truth during incidents. Design them as infrastructure, not afterthought.
- Immutable logs: Write to append-only storage; prevent modification even by privileged accounts
- Structured logging: Machine-parseable formats enable fast querying during crises; include request IDs for distributed tracing
- Privacy-aware: Log what happened not what was in the data — avoid logging PII, credentials, or sensitive content
- Budget explicitly: Logging has real cost; define retention tiers (hot/warm/cold) and stick to them
- Security logs to always retain: Auth events, privilege escalations, config changes, access to sensitive data
Debugging access security:
- Debugging paths are high-value attack targets — apply same access controls as production
- Require audit logging on all debug access
- Prefer read-only debugging interfaces; avoid live-attach debuggers in production
- Emergency debug access should follow breakglass patterns (restrict, monitor, investigate after use)
Testing
- Unit + integration + dynamic (fuzzing, sanitizers) + static analysis
- Test of least privilege: verify profiles have no excess permissions
- Test with least privilege: use separate credentials to prevent production impact
- Adversarial testing: simulate attacks from defined adversary perspective (reliability assumes independence; security cannot)
Incident Response
Crisis Management
- Declare early — false alarms cost less than delayed response
- Assign clear Incident Commander; avoid committee decisions under pressure
- Information sharing: reliability → broad; security → need-to-know (don't tip off adversaries)
- Keep a live incident doc; communicate status at regular intervals
- After recovery: blameless postmortem, fix root causes, update runbooks
Recovery Aftermath
After containment, recovery is its own discipline:
- Scope before acting: Enumerate all affected systems before remediating any — incomplete recovery is worse than slow recovery
- Quarantine first: Isolate compromised assets; preserve forensic state before wiping
- Credential rotation: Rotate all secrets that could have been exposed — assume broader exposure than confirmed
- System rebuilds over patching: For serious compromises, rebuild from known-good images rather than patching in place
- Recovery data integrity: Verify backups weren't themselves compromised before restoring from them
- Postmortems: Blameless, written, shared. Focus on systemic fixes not individual fault. Track action items to completion.
Disaster Planning
- Define disaster tiers with pre-agreed response strategies
- Pre-stage systems and people before incidents occur
- Tabletop exercises and game days — untested plans fail
- Emergency access: low-dependency, tested regularly, integrated into on-call
Culture
| Culture | Practice |
|---|---|
| Review | Code, config, and access changes all require peer review |
| Awareness | Just-in-time education > passive documentation |
| Yes (managed risk) | Measure risk; layered defenses reduce individual reviewer burden |
| Inevitability | Blameless postmortems; study failures to build resilience |
| Sustainability | Balance reactive work with proactive investment; prevent burnout |
Roles and responsibilities:
-
Security is everyone's job, but specialists amplify it — embed security engineers in teams rather than isolating in a separate org
-
Red teams simulate realistic attacks; blue teams detect and respond. Both are needed; red-only gives a false sense of offense advantage.
-
External researchers (bug bounty, academic) find what internal teams miss — build a responsible disclosure program
-
Certifications signal baseline knowledge but don't substitute for engineering judgment
-
Leadership buy-in: align security investment with business metrics
-
Reduce fear through canary deploys, dogfooding, progressive rollout
-
Job shadowing breaks silos — empathy across teams improves shared ownership
Quick Checklist
Design phase:
- Least privilege on all access paths
- Failure domains and blast radius explicitly defined
- Invariants documented and testable
- Recovery path designed and tested
Implementation:
- Memory-safe language or memory-safe wrappers
- Typed interfaces for security-sensitive data
- Centralized auth/logging/rate-limiting framework
- No secrets in version control
Deployment:
- Mandatory code review enforced
- Artifact provenance verified
- Incremental rollout with rollback capability
- Config changes treated as code
Operations:
- Runbooks tested under realistic conditions
- Emergency access provisioned and exercised
- Blameless postmortem process established
- Immutable, privacy-aware logging in place
- DoS mitigation: rate limiting upstream, client retry backoff enforced
- Threat model includes insider and automated adversaries
- Credential rotation runbook ready before incidents
- Red team / external disclosure program established
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.