@ghostbyte/agent-docs-kit 4.0.2 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +32 -0
- package/README.md +43 -37
- package/SECURITY.md +11 -0
- package/content/catalog.json +191 -22
- package/content/documentation/01-system-documentation.md +13 -0
- package/content/documentation/02-project-governance.md +13 -0
- package/content/documentation/03-development-records.md +13 -0
- package/content/documentation/04-testing-evidence.md +13 -0
- package/content/documentation/05-operations-runbooks.md +13 -0
- package/content/documentation/06-future-proposals.md +13 -0
- package/content/documentation/07-archive-governance.md +13 -0
- package/content/documentation/full-reference.md +24 -0
- package/content/engineering/01-query-performance.md +17 -27
- package/content/engineering/02-networking-fundamentals.md +17 -27
- package/content/engineering/03-rate-limiting-algorithms.md +18 -28
- package/content/engineering/04-production-debugging.md +17 -27
- package/content/engineering/05-code-review-practices.md +17 -27
- package/content/engineering/06-data-modeling.md +17 -27
- package/content/engineering/07-cloud-cost-saving.md +17 -27
- package/content/engineering/08-testing-types.md +17 -27
- package/content/engineering/09-message-queues.md +17 -27
- package/content/engineering/10-api-design-compatibility.md +14 -0
- package/content/engineering/11-reliability-slos.md +14 -0
- package/content/engineering/12-observability-telemetry.md +14 -0
- package/content/engineering/13-deployment-change-safety.md +14 -0
- package/content/engineering/14-capacity-concurrency.md +14 -0
- package/content/engineering/full-reference.md +24 -144
- package/content/security/01-design-architecture.md +11 -19
- package/content/security/02-local-development.md +13 -21
- package/content/security/03-database-backend.md +18 -26
- package/content/security/04-api-layer.md +23 -31
- package/content/security/05-frontend-ui.md +16 -24
- package/content/security/06-application-security-testing.md +22 -28
- package/content/security/07-cicd-release-engineering.md +13 -21
- package/content/security/08-cloud-infrastructure.md +17 -25
- package/content/security/09-edge-cdn-dns.md +16 -24
- package/content/security/10-release-rollout.md +13 -21
- package/content/security/11-post-release-monitoring-ir.md +15 -23
- package/content/security/12-ongoing-operations.md +24 -32
- package/content/security/full-reference.md +30 -3163
- package/docs/ARCHITECTURE.md +31 -92
- package/docs/CONTENT_MAINTENANCE.md +5 -1
- package/docs/GITHUB_AND_NPM_SETUP.md +1 -1
- package/docs/RELEASE_PROCESS.md +5 -5
- package/package.json +12 -5
- package/scripts/build-site.mjs +13 -0
- package/scripts/build-skill.mjs +24 -0
- package/scripts/check-links.mjs +56 -0
- package/scripts/check-review-dates.mjs +21 -0
- package/scripts/preview-site.mjs +43 -0
- package/scripts/smoke-package.mjs +58 -0
- package/scripts/validate-content.mjs +85 -0
- package/site/app.js +121 -0
- package/site/index.html +346 -0
- package/site/styles.css +159 -0
- package/skills/manage-project-quality/SKILL.md +18 -2
- package/skills/manage-project-quality/assets/documentation-report.md +3 -3
- package/skills/manage-project-quality/assets/engineering-report.md +3 -3
- package/skills/manage-project-quality/assets/security-report.md +3 -3
- package/skills/manage-project-quality/references/documentation-01-system-documentation.md +13 -0
- package/skills/manage-project-quality/references/documentation-02-project-governance.md +13 -0
- package/skills/manage-project-quality/references/documentation-03-development-records.md +13 -0
- package/skills/manage-project-quality/references/documentation-04-testing-evidence.md +13 -0
- package/skills/manage-project-quality/references/documentation-05-operations-runbooks.md +13 -0
- package/skills/manage-project-quality/references/documentation-06-future-proposals.md +13 -0
- package/skills/manage-project-quality/references/documentation-07-archive-governance.md +13 -0
- package/skills/manage-project-quality/references/documentation-full-reference.md +24 -0
- package/skills/manage-project-quality/references/documentation-governance.md +2 -2
- package/skills/manage-project-quality/references/engineering-01-query-performance.md +17 -27
- package/skills/manage-project-quality/references/engineering-02-networking-fundamentals.md +17 -27
- package/skills/manage-project-quality/references/engineering-03-rate-limiting-algorithms.md +18 -28
- package/skills/manage-project-quality/references/engineering-04-production-debugging.md +17 -27
- package/skills/manage-project-quality/references/engineering-05-code-review-practices.md +17 -27
- package/skills/manage-project-quality/references/engineering-06-data-modeling.md +17 -27
- package/skills/manage-project-quality/references/engineering-07-cloud-cost-saving.md +17 -27
- package/skills/manage-project-quality/references/engineering-08-testing-types.md +17 -27
- package/skills/manage-project-quality/references/engineering-09-message-queues.md +17 -27
- package/skills/manage-project-quality/references/engineering-10-api-design-compatibility.md +14 -0
- package/skills/manage-project-quality/references/engineering-11-reliability-slos.md +14 -0
- package/skills/manage-project-quality/references/engineering-12-observability-telemetry.md +14 -0
- package/skills/manage-project-quality/references/engineering-13-deployment-change-safety.md +14 -0
- package/skills/manage-project-quality/references/engineering-14-capacity-concurrency.md +14 -0
- package/skills/manage-project-quality/references/engineering-full-reference.md +24 -144
- package/skills/manage-project-quality/references/engineering-protocol.md +1 -1
- package/skills/manage-project-quality/references/security-01-design-architecture.md +11 -19
- package/skills/manage-project-quality/references/security-02-local-development.md +13 -21
- package/skills/manage-project-quality/references/security-03-database-backend.md +18 -26
- package/skills/manage-project-quality/references/security-04-api-layer.md +23 -31
- package/skills/manage-project-quality/references/security-05-frontend-ui.md +16 -24
- package/skills/manage-project-quality/references/security-06-application-security-testing.md +22 -28
- package/skills/manage-project-quality/references/security-07-cicd-release-engineering.md +13 -21
- package/skills/manage-project-quality/references/security-08-cloud-infrastructure.md +17 -25
- package/skills/manage-project-quality/references/security-09-edge-cdn-dns.md +16 -24
- package/skills/manage-project-quality/references/security-10-release-rollout.md +13 -21
- package/skills/manage-project-quality/references/security-11-post-release-monitoring-ir.md +15 -23
- package/skills/manage-project-quality/references/security-12-ongoing-operations.md +24 -32
- package/skills/manage-project-quality/references/security-full-reference.md +30 -3163
- package/skills/manage-project-quality/scripts/check-report.mjs +67 -16
- package/src/api/index.mjs +4 -0
- package/src/cli/arguments.mjs +27 -3
- package/src/cli/help.mjs +53 -18
- package/src/cli/main.mjs +66 -9
- package/src/commands/audit.mjs +146 -31
- package/src/commands/doctor.mjs +1 -1
- package/src/commands/guide.mjs +12 -0
- package/src/commands/list.mjs +1 -1
- package/src/commands/setup.mjs +9 -4
- package/src/commands/skill.mjs +1 -0
- package/src/commands/template.mjs +32 -0
- package/src/commands/validate.mjs +36 -4
- package/src/commands/website.mjs +26 -0
- package/src/core/config.mjs +61 -0
- package/src/core/files.mjs +47 -6
- package/templates/adr.md +20 -0
- package/templates/change-record.md +18 -0
- package/templates/incident-review.md +20 -0
- package/templates/runbook.md +18 -0
- package/templates/test-evidence.md +18 -0
- package/tests/cli.test.mjs +226 -0
- package/tests/content.test.mjs +18 -0
|
@@ -1,3173 +1,40 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Security Assurance Reference
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
deployment, and the surrounding program (compliance, vendors, incident response).
|
|
5
|
-
Originally organized as 151 separate files; merged here into one document so an
|
|
6
|
-
agent or reviewer can work through it end to end without switching files.
|
|
3
|
+
This index routes reviewers to the smallest relevant phase. The phase files are canonical; generated worksheets record evidence and status.
|
|
7
4
|
|
|
8
|
-
|
|
9
|
-
a **severity** rating, one **concrete example test step**, a **last reviewed**
|
|
10
|
-
date, and (where relevant) **see also** cross-links to related items.
|
|
5
|
+
## Review contract
|
|
11
6
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
7
|
+
- Passive repository review is the default.
|
|
8
|
+
- Active testing requires explicit authorization, a named non-production target, stop conditions, rate limits, and synthetic data.
|
|
9
|
+
- Use `Pass`, `Fail`, `Unverified`, or `N/A`. Missing evidence is `Unverified`.
|
|
10
|
+
- Record evidence, remediation, owner, and verification for every actionable finding.
|
|
11
|
+
- Unresolved Critical or High failures block release unless an accountable owner approves a time-bounded exception.
|
|
15
12
|
|
|
16
|
-
##
|
|
13
|
+
## Current baselines
|
|
17
14
|
|
|
18
|
-
-
|
|
19
|
-
written permission to test.
|
|
20
|
-
- Prefer staging/QA environments over production for anything in
|
|
21
|
-
**Web Vulnerabilities**, **Cloud Infra & Deployment**, and
|
|
22
|
-
**DNS, Email & Domain Security** — some checks there can have live side effects.
|
|
23
|
-
- Decide who signs off that a section is done, even if it's just you.
|
|
15
|
+
Reviewed 2026-10-14; review due 2027-01-14.
|
|
24
16
|
|
|
25
|
-
|
|
17
|
+
- [OWASP Top 10:2025](https://owasp.org/Top10/2025/)
|
|
18
|
+
- [OWASP API Security Top 10:2023](https://owasp.org/API-Security/)
|
|
19
|
+
- [OWASP ASVS 5.0.0](https://github.com/OWASP/ASVS/releases/tag/v5.0.0)
|
|
20
|
+
- [NIST Secure Software Development Framework 1.1](https://csrc.nist.gov/pubs/sp/800/218/final)
|
|
21
|
+
- [NIST Incident Response Recommendations, SP 800-61 Rev. 3](https://csrc.nist.gov/pubs/sp/800/61/r3/final)
|
|
26
22
|
|
|
23
|
+
Draft standards may inform future work, but must not be represented as finalized requirements.
|
|
27
24
|
|
|
28
|
-
|
|
29
|
-
- [02_Web_Vulnerabilities — Web Vulnerabilities](#02_web_vulnerabilities)
|
|
30
|
-
- [03_Access_Control_Session_Auth — Access Control, Session & Auth](#03_access_control_session_auth)
|
|
31
|
-
- [04_UI_Framework_Security — UI / Framework Security](#04_ui_framework_security)
|
|
32
|
-
- [05_Backend_Handling — Backend Handling](#05_backend_handling)
|
|
33
|
-
- [06_Data_Protection_Secrets — Data Protection & Secrets](#06_data_protection_secrets)
|
|
34
|
-
- [07_Cloud_Infra_Deployment — Cloud Infra & Deployment](#07_cloud_infra_deployment)
|
|
35
|
-
- [08_Release_Engineering_Version_Control — Release Engineering & Version Control](#08_release_engineering_version_control)
|
|
36
|
-
- [09_Release_Pipeline_Stages — Release Pipeline Stages](#09_release_pipeline_stages)
|
|
37
|
-
- [10_Dependency_Supply_Chain — Dependency & Supply Chain](#10_dependency_supply_chain)
|
|
38
|
-
- [11_Logging_Monitoring — Logging & Monitoring](#11_logging_monitoring)
|
|
39
|
-
- [12_Third_Party_Integration_Vendor_Risk — Third-Party Integration & Vendor Risk](#12_third_party_integration_vendor_risk)
|
|
40
|
-
- [13_Backup_DR_Resilience — Backup, DR & Resilience](#13_backup_dr_resilience)
|
|
41
|
-
- [14_Incident_Response_Security_Ops — Incident Response & Security Ops](#14_incident_response_security_ops)
|
|
42
|
-
- [15_Architecture_Compliance — Architecture & Compliance](#15_architecture_compliance)
|
|
43
|
-
- [16_Edge_CDN_Security — Edge / CDN Security](#16_edge_cdn_security)
|
|
44
|
-
- [17_DNS_Email_Domain_Security — DNS, Email & Domain Security](#17_dns_email_domain_security)
|
|
45
|
-
- [18_Mobile_App_Security — Mobile App Security](#18_mobile_app_security)
|
|
46
|
-
- [19_Security_Checklists — Security Checklists (Reference Rollups)](#19_security_checklists)
|
|
25
|
+
## Phase index
|
|
47
26
|
|
|
27
|
+
1. Design and architecture
|
|
28
|
+
2. Local development
|
|
29
|
+
3. Database and backend
|
|
30
|
+
4. API layer
|
|
31
|
+
5. Frontend and UI
|
|
32
|
+
6. Application security testing
|
|
33
|
+
7. CI/CD and release engineering
|
|
34
|
+
8. Cloud infrastructure
|
|
35
|
+
9. Edge, CDN, and DNS
|
|
36
|
+
10. Release and rollout
|
|
37
|
+
11. Post-release monitoring and incident response
|
|
38
|
+
12. Ongoing operations
|
|
48
39
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
## 01_API_Security — API Security
|
|
52
|
-
|
|
53
|
-
### `01_API_Security/01_rate_limiting.md`
|
|
54
|
-
|
|
55
|
-
# Rate Limiting
|
|
56
|
-
|
|
57
|
-
## What it is
|
|
58
|
-
Restricting how many requests a client can make in a given time window.
|
|
59
|
-
|
|
60
|
-
## Why it matters
|
|
61
|
-
Prevents brute force, scraping, and denial-of-service abuse.
|
|
62
|
-
|
|
63
|
-
## Test checklist
|
|
64
|
-
- [ ] Verify limits per IP / per API key / per user
|
|
65
|
-
- [ ] Check for proper 429 responses with Retry-After header
|
|
66
|
-
- [ ] Test burst vs sustained limits
|
|
67
|
-
- [ ] Confirm limits can't be bypassed via header spoofing (X-Forwarded-For)
|
|
68
|
-
- [ ] Check distributed rate limiting across multiple servers/regions
|
|
69
|
-
|
|
70
|
-
## References
|
|
71
|
-
- OWASP API Security Top 10 - API4:2023 Unrestricted Resource Consumption
|
|
72
|
-
|
|
73
|
-
**Severity:** High
|
|
74
|
-
**Example test:** Fire 200 requests/sec at a login endpoint from one IP and confirm 429s with Retry-After start well before account lockout thresholds are reachable.
|
|
75
|
-
**Last reviewed:** 2026-08-29
|
|
76
|
-
|
|
77
|
-
### `01_API_Security/02_api_keys.md`
|
|
78
|
-
|
|
79
|
-
# API Keys
|
|
80
|
-
|
|
81
|
-
## What it is
|
|
82
|
-
Static credentials used to identify and authenticate calling applications.
|
|
83
|
-
|
|
84
|
-
## Why it matters
|
|
85
|
-
Weak key management leads to unauthorized access and abuse.
|
|
86
|
-
|
|
87
|
-
## Test checklist
|
|
88
|
-
- [ ] Keys are not exposed in client-side code/URLs
|
|
89
|
-
- [ ] Keys can be rotated without downtime
|
|
90
|
-
- [ ] Keys are scoped to least privilege
|
|
91
|
-
- [ ] Key usage is logged and monitored
|
|
92
|
-
- [ ] Revoked/expired keys are rejected immediately
|
|
93
|
-
|
|
94
|
-
## References
|
|
95
|
-
- OWASP API Security Top 10 - API2:2023 Broken Authentication
|
|
96
|
-
|
|
97
|
-
**Severity:** High
|
|
98
|
-
**Example test:** Grep the built client bundle and mobile binary for hardcoded key patterns, then rotate one key and confirm the old value is rejected within minutes.
|
|
99
|
-
**Last reviewed:** 2026-08-29
|
|
100
|
-
|
|
101
|
-
### `01_API_Security/03_oauth2.md`
|
|
102
|
-
|
|
103
|
-
# OAuth 2.0
|
|
104
|
-
|
|
105
|
-
## What it is
|
|
106
|
-
Delegated authorization framework for granting limited access without sharing credentials.
|
|
107
|
-
|
|
108
|
-
## Why it matters
|
|
109
|
-
Misconfiguration leads to token theft, account takeover, and privilege escalation.
|
|
110
|
-
|
|
111
|
-
## Test checklist
|
|
112
|
-
- [ ] Validate redirect_uri strictly (no open redirect)
|
|
113
|
-
- [ ] Enforce PKCE for public clients
|
|
114
|
-
- [ ] Verify state parameter to prevent CSRF
|
|
115
|
-
- [ ] Check token expiration and refresh token rotation
|
|
116
|
-
- [ ] Confirm scopes are enforced server-side, not just requested
|
|
117
|
-
|
|
118
|
-
## References
|
|
119
|
-
- OAuth 2.0 Security Best Current Practice (RFC 9700)
|
|
120
|
-
|
|
121
|
-
**Severity:** Critical
|
|
122
|
-
**Example test:** Attempt the authorization flow with a modified redirect_uri (e.g. attacker.com) and confirm the server rejects it rather than redirecting.
|
|
123
|
-
**Last reviewed:** 2026-08-29
|
|
124
|
-
|
|
125
|
-
### `01_API_Security/04_jwt_validation.md`
|
|
126
|
-
|
|
127
|
-
# JWT Validation
|
|
128
|
-
|
|
129
|
-
## What it is
|
|
130
|
-
Verifying the signature, claims, and integrity of JSON Web Tokens.
|
|
131
|
-
|
|
132
|
-
## Why it matters
|
|
133
|
-
Improper validation allows token forgery and privilege escalation.
|
|
134
|
-
|
|
135
|
-
## Test checklist
|
|
136
|
-
- [ ] Algorithm confirmed server-side (reject 'alg: none')
|
|
137
|
-
- [ ] Signature verified before trusting claims
|
|
138
|
-
- [ ] exp/nbf/iat claims enforced
|
|
139
|
-
- [ ] Audience (aud) and issuer (iss) validated
|
|
140
|
-
- [ ] Key rotation (kid) handled securely (JWKS)
|
|
141
|
-
|
|
142
|
-
## References
|
|
143
|
-
- RFC 7519 JSON Web Token
|
|
144
|
-
- OWASP JWT Cheat Sheet
|
|
145
|
-
|
|
146
|
-
**Severity:** Critical
|
|
147
|
-
**Example test:** Submit a token with 'alg' changed to 'none' and an empty signature; confirm the API rejects it instead of trusting the claims.
|
|
148
|
-
**Last reviewed:** 2026-08-29
|
|
149
|
-
**See also:** `03_Access_Control_Session_Auth/07_session_management.md`
|
|
150
|
-
|
|
151
|
-
### `01_API_Security/05_input_sanitation.md`
|
|
152
|
-
|
|
153
|
-
# Input Sanitation
|
|
154
|
-
|
|
155
|
-
## What it is
|
|
156
|
-
Validating and cleaning all incoming data before processing.
|
|
157
|
-
|
|
158
|
-
## Why it matters
|
|
159
|
-
Root cause of injection attacks (SQLi, XSS, command injection, etc).
|
|
160
|
-
|
|
161
|
-
## Test checklist
|
|
162
|
-
- [ ] Allowlist validation over denylist
|
|
163
|
-
- [ ] Type/length/format checks on every field
|
|
164
|
-
- [ ] Sanitize on both client and server side
|
|
165
|
-
- [ ] Encode output based on context (HTML, JS, SQL, URL)
|
|
166
|
-
- [ ] Test with boundary and malformed payloads
|
|
167
|
-
|
|
168
|
-
## References
|
|
169
|
-
- OWASP Input Validation Cheat Sheet
|
|
170
|
-
|
|
171
|
-
**Severity:** High
|
|
172
|
-
**Example test:** Submit oversized, wrong-type, and boundary values (e.g. negative quantity, 10k-char string) on every field and confirm consistent server-side rejection.
|
|
173
|
-
**Last reviewed:** 2026-08-29
|
|
174
|
-
|
|
175
|
-
### `01_API_Security/06_cors_policy.md`
|
|
176
|
-
|
|
177
|
-
# CORS Policy
|
|
178
|
-
|
|
179
|
-
## What it is
|
|
180
|
-
Browser mechanism controlling which origins can call an API from client-side JS.
|
|
181
|
-
|
|
182
|
-
## Why it matters
|
|
183
|
-
Overly permissive CORS enables cross-origin data theft.
|
|
184
|
-
|
|
185
|
-
## Test checklist
|
|
186
|
-
- [ ] Avoid wildcard '*' with credentials enabled
|
|
187
|
-
- [ ] Explicit origin allowlist, not reflected origin
|
|
188
|
-
- [ ] Preflight (OPTIONS) requests handled correctly
|
|
189
|
-
- [ ] Test with null origin and subdomain spoofing
|
|
190
|
-
|
|
191
|
-
## References
|
|
192
|
-
- OWASP CORS Misconfiguration Guide
|
|
193
|
-
|
|
194
|
-
**Severity:** High
|
|
195
|
-
**Example test:** Send a fetch with Origin: https://evil.com and credentials:'include'; confirm the Access-Control-Allow-Origin response does not reflect evil.com.
|
|
196
|
-
**Last reviewed:** 2026-08-29
|
|
197
|
-
|
|
198
|
-
### `01_API_Security/07_mtls.md`
|
|
199
|
-
|
|
200
|
-
# Mutual TLS (mTLS)
|
|
201
|
-
|
|
202
|
-
## What it is
|
|
203
|
-
Both client and server present certificates to authenticate each other.
|
|
204
|
-
|
|
205
|
-
## Why it matters
|
|
206
|
-
Provides strong service-to-service identity verification.
|
|
207
|
-
|
|
208
|
-
## Test checklist
|
|
209
|
-
- [ ] Certificate chain validated against trusted CA
|
|
210
|
-
- [ ] Certificate revocation checked (CRL/OCSP)
|
|
211
|
-
- [ ] Expired/self-signed certs rejected
|
|
212
|
-
- [ ] Cert rotation process tested
|
|
213
|
-
|
|
214
|
-
## References
|
|
215
|
-
- NIST SP 800-52
|
|
216
|
-
|
|
217
|
-
**Severity:** Medium
|
|
218
|
-
**Example test:** Present an expired or self-signed client certificate to the mTLS endpoint and confirm the connection is rejected, not silently accepted.
|
|
219
|
-
**Last reviewed:** 2026-08-29
|
|
220
|
-
|
|
221
|
-
### `01_API_Security/08_request_signing.md`
|
|
222
|
-
|
|
223
|
-
# Request Signing
|
|
224
|
-
|
|
225
|
-
## What it is
|
|
226
|
-
Cryptographically signing requests (e.g. HMAC) to prove authenticity and integrity.
|
|
227
|
-
|
|
228
|
-
## Why it matters
|
|
229
|
-
Prevents tampering and replay attacks even over secure channels.
|
|
230
|
-
|
|
231
|
-
## Test checklist
|
|
232
|
-
- [ ] Signature includes timestamp/nonce to prevent replay
|
|
233
|
-
- [ ] Signature covers full payload, not just headers
|
|
234
|
-
- [ ] Clock skew tolerance tested
|
|
235
|
-
- [ ] Key used for signing is rotated and stored securely
|
|
236
|
-
|
|
237
|
-
## References
|
|
238
|
-
- AWS Signature Version 4 docs (as reference pattern)
|
|
239
|
-
|
|
240
|
-
**Severity:** Medium
|
|
241
|
-
**Example test:** Replay a previously captured signed request unmodified after its timestamp window; confirm it is rejected as a replay.
|
|
242
|
-
**Last reviewed:** 2026-08-29
|
|
243
|
-
|
|
244
|
-
### `01_API_Security/09_ip_allowlisting.md`
|
|
245
|
-
|
|
246
|
-
# IP Allowlisting
|
|
247
|
-
|
|
248
|
-
## What it is
|
|
249
|
-
Restricting API access to a known set of source IP addresses/ranges.
|
|
250
|
-
|
|
251
|
-
## Why it matters
|
|
252
|
-
Reduces attack surface for internal/partner APIs.
|
|
253
|
-
|
|
254
|
-
## Test checklist
|
|
255
|
-
- [ ] Verify enforcement at network + application layer
|
|
256
|
-
- [ ] Test allowlist bypass via spoofed headers
|
|
257
|
-
- [ ] Confirm process exists for updating allowlist safely
|
|
258
|
-
- [ ] Check behavior for IPv6 vs IPv4 coverage
|
|
259
|
-
|
|
260
|
-
## References
|
|
261
|
-
- NIST SP 800-41
|
|
262
|
-
|
|
263
|
-
**Severity:** Medium
|
|
264
|
-
**Example test:** Send a request from a disallowed IP with a spoofed X-Forwarded-For header set to an allowlisted IP and confirm it is still blocked.
|
|
265
|
-
**Last reviewed:** 2026-08-29
|
|
266
|
-
|
|
267
|
-
### `01_API_Security/10_security_headers.md`
|
|
268
|
-
|
|
269
|
-
# Security Headers (added)
|
|
270
|
-
|
|
271
|
-
## What it is
|
|
272
|
-
HTTP response headers that instruct browsers to enforce protections.
|
|
273
|
-
|
|
274
|
-
## Why it matters
|
|
275
|
-
Missing headers weaken defense-in-depth against XSS, clickjacking, downgrade attacks.
|
|
276
|
-
|
|
277
|
-
## Test checklist
|
|
278
|
-
- [ ] Content-Security-Policy configured and tested
|
|
279
|
-
- [ ] Strict-Transport-Security (HSTS) enabled
|
|
280
|
-
- [ ] X-Content-Type-Options: nosniff present
|
|
281
|
-
- [ ] X-Frame-Options / frame-ancestors set
|
|
282
|
-
|
|
283
|
-
## References
|
|
284
|
-
- OWASP Secure Headers Project
|
|
285
|
-
|
|
286
|
-
**Severity:** Medium
|
|
287
|
-
**Example test:** Run curl -I against each public endpoint and confirm CSP, HSTS, X-Content-Type-Options, and frame-ancestors are all present.
|
|
288
|
-
**Last reviewed:** 2026-08-29
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
---
|
|
292
|
-
|
|
293
|
-
## 02_Web_Vulnerabilities — Web Vulnerabilities
|
|
294
|
-
|
|
295
|
-
### `02_Web_Vulnerabilities/01_sql_injection.md`
|
|
296
|
-
|
|
297
|
-
> **Authorization reminder:** Only run these checks against systems you own or have explicit written permission to test. Prefer staging/QA over production — several checks here (injection probes, IAM changes, DNS record edits) can have live side effects.
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
# SQL Injection
|
|
301
|
-
|
|
302
|
-
## What it is
|
|
303
|
-
Untrusted input alters the structure of a SQL query.
|
|
304
|
-
|
|
305
|
-
## Why it matters
|
|
306
|
-
Can lead to full database compromise.
|
|
307
|
-
|
|
308
|
-
## Test checklist
|
|
309
|
-
- [ ] Test parameterized queries are used everywhere
|
|
310
|
-
- [ ] Test error messages don't leak query structure
|
|
311
|
-
- [ ] Test with encoded/blind injection payload classes
|
|
312
|
-
- [ ] Verify ORM usage doesn't fall back to raw string concat
|
|
313
|
-
|
|
314
|
-
## References
|
|
315
|
-
- OWASP SQL Injection Prevention Cheat Sheet
|
|
316
|
-
|
|
317
|
-
**Severity:** Critical
|
|
318
|
-
**Example test:** Submit a single quote and boolean/time-based payloads (e.g. ' OR '1'='1, SLEEP(5)) in every input field and inspect responses/timing for injection signals.
|
|
319
|
-
**Last reviewed:** 2026-08-29
|
|
320
|
-
|
|
321
|
-
### `02_Web_Vulnerabilities/02_xss.md`
|
|
322
|
-
|
|
323
|
-
> **Authorization reminder:** Only run these checks against systems you own or have explicit written permission to test. Prefer staging/QA over production — several checks here (injection probes, IAM changes, DNS record edits) can have live side effects.
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
# Cross-Site Scripting (XSS)
|
|
327
|
-
|
|
328
|
-
## What it is
|
|
329
|
-
Injection of malicious scripts into pages viewed by other users.
|
|
330
|
-
|
|
331
|
-
## Why it matters
|
|
332
|
-
Enables session hijacking, defacement, credential theft.
|
|
333
|
-
|
|
334
|
-
## Test checklist
|
|
335
|
-
- [ ] Test reflected, stored, and DOM-based XSS
|
|
336
|
-
- [ ] Verify output encoding per context
|
|
337
|
-
- [ ] Confirm CSP is enforced and restrictive
|
|
338
|
-
- [ ] Test rich text / file upload fields for stored XSS
|
|
339
|
-
|
|
340
|
-
## References
|
|
341
|
-
- OWASP XSS Prevention Cheat Sheet
|
|
342
|
-
|
|
343
|
-
**Severity:** Critical
|
|
344
|
-
**Example test:** Submit <script>alert(document.domain)</script> and common encoded variants into every reflected, stored, and DOM-rendered field.
|
|
345
|
-
**Last reviewed:** 2026-08-29
|
|
346
|
-
|
|
347
|
-
### `02_Web_Vulnerabilities/03_csrf.md`
|
|
348
|
-
|
|
349
|
-
> **Authorization reminder:** Only run these checks against systems you own or have explicit written permission to test. Prefer staging/QA over production — several checks here (injection probes, IAM changes, DNS record edits) can have live side effects.
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
# Cross-Site Request Forgery (CSRF)
|
|
353
|
-
|
|
354
|
-
## What it is
|
|
355
|
-
Tricking an authenticated user's browser into making unwanted requests.
|
|
356
|
-
|
|
357
|
-
## Why it matters
|
|
358
|
-
Can perform state-changing actions on behalf of the victim.
|
|
359
|
-
|
|
360
|
-
## Test checklist
|
|
361
|
-
- [ ] Anti-CSRF tokens present on state-changing requests
|
|
362
|
-
- [ ] SameSite cookie attribute set appropriately
|
|
363
|
-
- [ ] Verify tokens are validated server-side, not just present
|
|
364
|
-
- [ ] Test GET requests don't perform state changes
|
|
365
|
-
|
|
366
|
-
## References
|
|
367
|
-
- OWASP CSRF Prevention Cheat Sheet
|
|
368
|
-
|
|
369
|
-
**Severity:** High
|
|
370
|
-
**Example test:** Build an auto-submitting HTML form on a separate origin targeting a state-changing endpoint using the victim's real session cookie, and confirm it is rejected.
|
|
371
|
-
**Last reviewed:** 2026-08-29
|
|
372
|
-
|
|
373
|
-
### `02_Web_Vulnerabilities/04_ssrf.md`
|
|
374
|
-
|
|
375
|
-
> **Authorization reminder:** Only run these checks against systems you own or have explicit written permission to test. Prefer staging/QA over production — several checks here (injection probes, IAM changes, DNS record edits) can have live side effects.
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
# Server-Side Request Forgery (SSRF)
|
|
379
|
-
|
|
380
|
-
## What it is
|
|
381
|
-
Server is tricked into making requests to unintended destinations.
|
|
382
|
-
|
|
383
|
-
## Why it matters
|
|
384
|
-
Can expose internal services, cloud metadata endpoints, etc.
|
|
385
|
-
|
|
386
|
-
## Test checklist
|
|
387
|
-
- [ ] Test allowlisting of outbound destinations
|
|
388
|
-
- [ ] Test cloud metadata endpoint (169.254.169.254) is blocked
|
|
389
|
-
- [ ] Test URL parsing against redirect-based bypass
|
|
390
|
-
- [ ] Test DNS rebinding protections
|
|
391
|
-
|
|
392
|
-
## References
|
|
393
|
-
- OWASP SSRF Prevention Cheat Sheet
|
|
394
|
-
|
|
395
|
-
**Severity:** Critical
|
|
396
|
-
**Example test:** Submit a URL-fetching parameter pointing at http://169.254.169.254/latest/meta-data/ and confirm the server does not fetch it.
|
|
397
|
-
**Last reviewed:** 2026-08-29
|
|
398
|
-
|
|
399
|
-
### `02_Web_Vulnerabilities/05_idor.md`
|
|
400
|
-
|
|
401
|
-
> **Authorization reminder:** Only run these checks against systems you own or have explicit written permission to test. Prefer staging/QA over production — several checks here (injection probes, IAM changes, DNS record edits) can have live side effects.
|
|
402
|
-
|
|
403
|
-
|
|
404
|
-
# Insecure Direct Object Reference (IDOR)
|
|
405
|
-
|
|
406
|
-
## What it is
|
|
407
|
-
Access to objects via user-supplied identifiers without authorization checks.
|
|
408
|
-
|
|
409
|
-
## Why it matters
|
|
410
|
-
Allows access to other users' data by guessing/incrementing IDs.
|
|
411
|
-
|
|
412
|
-
## Test checklist
|
|
413
|
-
- [ ] Test object-level authorization on every endpoint
|
|
414
|
-
- [ ] Test with another user's ID/token combination
|
|
415
|
-
- [ ] Use non-sequential/opaque identifiers where possible
|
|
416
|
-
- [ ] Confirm authorization checked server-side, not inferred from UI
|
|
417
|
-
|
|
418
|
-
## References
|
|
419
|
-
- OWASP API Security Top 10 - API1:2023 Broken Object Level Authorization
|
|
420
|
-
|
|
421
|
-
**Severity:** Critical
|
|
422
|
-
**Example test:** Log in as User A, capture an object ID from a request, then repeat the identical request as User B and confirm access is denied.
|
|
423
|
-
**Last reviewed:** 2026-08-29
|
|
424
|
-
**See also:** `03_Access_Control_Session_Auth/02_backend_access_control.md`
|
|
425
|
-
|
|
426
|
-
### `02_Web_Vulnerabilities/06_clickjacking.md`
|
|
427
|
-
|
|
428
|
-
> **Authorization reminder:** Only run these checks against systems you own or have explicit written permission to test. Prefer staging/QA over production — several checks here (injection probes, IAM changes, DNS record edits) can have live side effects.
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
# Clickjacking
|
|
432
|
-
|
|
433
|
-
## What it is
|
|
434
|
-
Tricking a user into clicking something different from what they perceive via an invisible iframe.
|
|
435
|
-
|
|
436
|
-
## Why it matters
|
|
437
|
-
Can be used to trigger unintended actions on a victim's account.
|
|
438
|
-
|
|
439
|
-
## Test checklist
|
|
440
|
-
- [ ] X-Frame-Options / frame-ancestors CSP directive set
|
|
441
|
-
- [ ] Test framing the page from an external origin
|
|
442
|
-
- [ ] Verify sensitive actions require re-confirmation
|
|
443
|
-
|
|
444
|
-
## References
|
|
445
|
-
- OWASP Clickjacking Defense Cheat Sheet
|
|
446
|
-
|
|
447
|
-
**Severity:** Medium
|
|
448
|
-
**Example test:** Embed the target page in an <iframe> on a test page and confirm the browser refuses to render it (frame-ancestors/X-Frame-Options enforced).
|
|
449
|
-
**Last reviewed:** 2026-08-29
|
|
450
|
-
|
|
451
|
-
### `02_Web_Vulnerabilities/07_open_redirect.md`
|
|
452
|
-
|
|
453
|
-
> **Authorization reminder:** Only run these checks against systems you own or have explicit written permission to test. Prefer staging/QA over production — several checks here (injection probes, IAM changes, DNS record edits) can have live side effects.
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
# Open Redirect
|
|
457
|
-
|
|
458
|
-
## What it is
|
|
459
|
-
Application redirects to a URL controlled by attacker-supplied input.
|
|
460
|
-
|
|
461
|
-
## Why it matters
|
|
462
|
-
Used for phishing and OAuth token theft.
|
|
463
|
-
|
|
464
|
-
## Test checklist
|
|
465
|
-
- [ ] Test redirect parameters against external domains
|
|
466
|
-
- [ ] Use allowlist of permitted redirect targets
|
|
467
|
-
- [ ] Test partial-match bypass tricks (e.g. evil.com/trusted.com)
|
|
468
|
-
|
|
469
|
-
## References
|
|
470
|
-
- OWASP Unvalidated Redirects and Forwards Cheat Sheet
|
|
471
|
-
|
|
472
|
-
**Severity:** Medium
|
|
473
|
-
**Example test:** Set the redirect parameter to an external domain (and bypass tricks like //evil.com or trusted.com.evil.com) and confirm the app refuses or rewrites it.
|
|
474
|
-
**Last reviewed:** 2026-08-29
|
|
475
|
-
|
|
476
|
-
### `02_Web_Vulnerabilities/08_path_traversal.md`
|
|
477
|
-
|
|
478
|
-
> **Authorization reminder:** Only run these checks against systems you own or have explicit written permission to test. Prefer staging/QA over production — several checks here (injection probes, IAM changes, DNS record edits) can have live side effects.
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
# Path Traversal
|
|
482
|
-
|
|
483
|
-
## What it is
|
|
484
|
-
Manipulating file paths to access files outside the intended directory.
|
|
485
|
-
|
|
486
|
-
## Why it matters
|
|
487
|
-
Can expose source code, config files, or credentials.
|
|
488
|
-
|
|
489
|
-
## Test checklist
|
|
490
|
-
- [ ] Test with ../ and encoded variants
|
|
491
|
-
- [ ] Confirm file access is restricted to an allowlisted directory
|
|
492
|
-
- [ ] Test null byte and unicode normalization bypasses
|
|
493
|
-
|
|
494
|
-
## References
|
|
495
|
-
- OWASP Path Traversal Cheat Sheet
|
|
496
|
-
|
|
497
|
-
**Severity:** Critical
|
|
498
|
-
**Example test:** Submit ../../../../etc/passwd and URL-encoded/unicode variants in any file-path parameter and confirm access stays within the intended directory.
|
|
499
|
-
**Last reviewed:** 2026-08-29
|
|
500
|
-
|
|
501
|
-
### `02_Web_Vulnerabilities/09_insecure_deserialization.md`
|
|
502
|
-
|
|
503
|
-
> **Authorization reminder:** Only run these checks against systems you own or have explicit written permission to test. Prefer staging/QA over production — several checks here (injection probes, IAM changes, DNS record edits) can have live side effects.
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
# Insecure Deserialization
|
|
507
|
-
|
|
508
|
-
## What it is
|
|
509
|
-
Deserializing untrusted data can lead to remote code execution or object injection.
|
|
510
|
-
|
|
511
|
-
## Why it matters
|
|
512
|
-
One of the most severe vulnerability classes when exploitable.
|
|
513
|
-
|
|
514
|
-
## Test checklist
|
|
515
|
-
- [ ] Avoid deserializing untrusted input where possible
|
|
516
|
-
- [ ] Use safe/allowlisted formats (e.g. JSON over native serialization)
|
|
517
|
-
- [ ] Test with tampered serialized objects
|
|
518
|
-
- [ ] Integrity-check serialized data (signing)
|
|
519
|
-
|
|
520
|
-
## References
|
|
521
|
-
- OWASP Deserialization Cheat Sheet
|
|
522
|
-
|
|
523
|
-
**Severity:** Critical
|
|
524
|
-
**Example test:** Tamper with a serialized object/cookie (flip a field, change a type) and submit it; confirm the server rejects it rather than deserializing blindly.
|
|
525
|
-
**Last reviewed:** 2026-08-29
|
|
526
|
-
|
|
527
|
-
### `02_Web_Vulnerabilities/10_broken_authentication.md`
|
|
528
|
-
|
|
529
|
-
> **Authorization reminder:** Only run these checks against systems you own or have explicit written permission to test. Prefer staging/QA over production — several checks here (injection probes, IAM changes, DNS record edits) can have live side effects.
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
# Broken Authentication
|
|
533
|
-
|
|
534
|
-
## What it is
|
|
535
|
-
Flaws in login, session management, or credential handling.
|
|
536
|
-
|
|
537
|
-
## Why it matters
|
|
538
|
-
Leads to account takeover.
|
|
539
|
-
|
|
540
|
-
## Test checklist
|
|
541
|
-
- [ ] Test password policy and brute-force protections
|
|
542
|
-
- [ ] Test session fixation and session expiry
|
|
543
|
-
- [ ] Test MFA bypass paths
|
|
544
|
-
- [ ] Test credential stuffing resilience
|
|
545
|
-
|
|
546
|
-
## References
|
|
547
|
-
- OWASP Authentication Cheat Sheet
|
|
548
|
-
|
|
549
|
-
**Severity:** Critical
|
|
550
|
-
**Example test:** Run a scripted credential-stuffing pass against the login endpoint using a small known-breached credential list and confirm lockout/rate-limit triggers.
|
|
551
|
-
**Last reviewed:** 2026-08-29
|
|
552
|
-
|
|
553
|
-
### `02_Web_Vulnerabilities/11_ssti.md`
|
|
554
|
-
|
|
555
|
-
> **Authorization reminder:** Only run these checks against systems you own or have explicit written permission to test. Prefer staging/QA over production — several checks here (injection probes, IAM changes, DNS record edits) can have live side effects.
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
# Server-Side Template Injection (SSTI) (added)
|
|
559
|
-
|
|
560
|
-
## What it is
|
|
561
|
-
User input is evaluated by a server-side template engine.
|
|
562
|
-
|
|
563
|
-
## Why it matters
|
|
564
|
-
Can lead to remote code execution.
|
|
565
|
-
|
|
566
|
-
## Test checklist
|
|
567
|
-
- [ ] Test template syntax injection in all user-controlled fields
|
|
568
|
-
- [ ] Confirm templates render with sandboxing where supported
|
|
569
|
-
- [ ] Never build templates via string concatenation with user input
|
|
570
|
-
|
|
571
|
-
## References
|
|
572
|
-
- OWASP SSTI reference
|
|
573
|
-
|
|
574
|
-
**Severity:** Critical
|
|
575
|
-
**Example test:** Submit template syntax such as {{7*7}} or ${7*7} into user-controlled text fields and check whether the output evaluates to 49.
|
|
576
|
-
**Last reviewed:** 2026-08-29
|
|
577
|
-
|
|
578
|
-
### `02_Web_Vulnerabilities/12_xxe.md`
|
|
579
|
-
|
|
580
|
-
> **Authorization reminder:** Only run these checks against systems you own or have explicit written permission to test. Prefer staging/QA over production — several checks here (injection probes, IAM changes, DNS record edits) can have live side effects.
|
|
581
|
-
|
|
582
|
-
|
|
583
|
-
# XML External Entity (XXE) Injection (added)
|
|
584
|
-
|
|
585
|
-
## What it is
|
|
586
|
-
XML parsers process external entity references from untrusted XML.
|
|
587
|
-
|
|
588
|
-
## Why it matters
|
|
589
|
-
Can lead to file disclosure, SSRF, or DoS.
|
|
590
|
-
|
|
591
|
-
## Test checklist
|
|
592
|
-
- [ ] Disable external entity resolution in XML parsers
|
|
593
|
-
- [ ] Use allowlisted/least-feature parser configuration
|
|
594
|
-
- [ ] Test with DTD-based payload classes
|
|
595
|
-
|
|
596
|
-
## References
|
|
597
|
-
- OWASP XXE Prevention Cheat Sheet
|
|
598
|
-
|
|
599
|
-
**Severity:** Critical
|
|
600
|
-
**Example test:** Submit an XML payload with a DOCTYPE defining an external entity pointing to a local file and confirm the parser refuses to resolve it.
|
|
601
|
-
**Last reviewed:** 2026-08-29
|
|
602
|
-
|
|
603
|
-
### `02_Web_Vulnerabilities/13_mass_assignment.md`
|
|
604
|
-
|
|
605
|
-
> **Authorization reminder:** Only run these checks against systems you own or have explicit written permission to test. Prefer staging/QA over production — several checks here (injection probes, IAM changes, DNS record edits) can have live side effects.
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
# Mass Assignment (added)
|
|
609
|
-
|
|
610
|
-
## What it is
|
|
611
|
-
Binding user input directly to internal objects/fields without filtering.
|
|
612
|
-
|
|
613
|
-
## Why it matters
|
|
614
|
-
Can allow attackers to set privileged fields (e.g. isAdmin).
|
|
615
|
-
|
|
616
|
-
## Test checklist
|
|
617
|
-
- [ ] Explicit allowlist of bindable fields per endpoint
|
|
618
|
-
- [ ] Test submitting extra/unexpected fields in requests
|
|
619
|
-
- [ ] Confirm role/privilege fields are never client-settable
|
|
620
|
-
|
|
621
|
-
## References
|
|
622
|
-
- OWASP API Security Top 10 - API6:2023 Unrestricted Access to Business Flows
|
|
623
|
-
|
|
624
|
-
**Severity:** High
|
|
625
|
-
**Example test:** Add an unexpected field such as "isAdmin": true to a normal profile-update request body and confirm it is ignored, not applied.
|
|
626
|
-
**Last reviewed:** 2026-08-29
|
|
627
|
-
|
|
628
|
-
### `02_Web_Vulnerabilities/14_race_conditions.md`
|
|
629
|
-
|
|
630
|
-
> **Authorization reminder:** Only run these checks against systems you own or have explicit written permission to test. Prefer staging/QA over production — several checks here (injection probes, IAM changes, DNS record edits) can have live side effects.
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
# Race Conditions (added)
|
|
634
|
-
|
|
635
|
-
## What it is
|
|
636
|
-
Concurrent requests exploit timing gaps in business logic.
|
|
637
|
-
|
|
638
|
-
## Why it matters
|
|
639
|
-
Can lead to duplicate discounts, double-spending, inventory bypass.
|
|
640
|
-
|
|
641
|
-
## Test checklist
|
|
642
|
-
- [ ] Test parallel/concurrent request submission on critical flows
|
|
643
|
-
- [ ] Confirm atomic operations / locking on shared resources
|
|
644
|
-
- [ ] Test idempotency key enforcement
|
|
645
|
-
|
|
646
|
-
## References
|
|
647
|
-
- PortSwigger Race Condition research
|
|
648
|
-
|
|
649
|
-
**Severity:** High
|
|
650
|
-
**Example test:** Fire 20 identical concurrent requests at a discount/redeem endpoint and confirm only one succeeds, not all twenty.
|
|
651
|
-
**Last reviewed:** 2026-08-29
|
|
652
|
-
|
|
653
|
-
### `02_Web_Vulnerabilities/15_request_smuggling.md`
|
|
654
|
-
|
|
655
|
-
> **Authorization reminder:** Only run these checks against systems you own or have explicit written permission to test. Prefer staging/QA over production — several checks here (injection probes, IAM changes, DNS record edits) can have live side effects.
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
# HTTP Request Smuggling (added)
|
|
659
|
-
|
|
660
|
-
## What it is
|
|
661
|
-
Discrepancies in how front-end and back-end servers parse requests.
|
|
662
|
-
|
|
663
|
-
## Why it matters
|
|
664
|
-
Can bypass security controls and access other users' requests.
|
|
665
|
-
|
|
666
|
-
## Test checklist
|
|
667
|
-
- [ ] Test Content-Length vs Transfer-Encoding handling discrepancies
|
|
668
|
-
- [ ] Test across all proxy/load balancer layers
|
|
669
|
-
- [ ] Keep proxy and origin server HTTP parsing aligned
|
|
670
|
-
|
|
671
|
-
## References
|
|
672
|
-
- PortSwigger HTTP Request Smuggling research
|
|
673
|
-
|
|
674
|
-
**Severity:** Critical
|
|
675
|
-
**Example test:** Send a request with conflicting Content-Length and Transfer-Encoding headers through the full proxy chain and observe whether front-end/back-end parsing disagrees.
|
|
676
|
-
**Last reviewed:** 2026-08-29
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
---
|
|
680
|
-
|
|
681
|
-
## 03_Access_Control_Session_Auth — Access Control, Session & Auth
|
|
682
|
-
|
|
683
|
-
### `03_Access_Control_Session_Auth/01_ui_ux_access_control.md`
|
|
684
|
-
|
|
685
|
-
# UI/UX-Level Access Control
|
|
686
|
-
|
|
687
|
-
## What it is
|
|
688
|
-
Hiding buttons/menus based on role, purely on the client side.
|
|
689
|
-
|
|
690
|
-
## Why it matters
|
|
691
|
-
Cosmetic only — must never be the sole enforcement layer.
|
|
692
|
-
|
|
693
|
-
## Test checklist
|
|
694
|
-
- [ ] Confirm hidden UI elements are also blocked server-side
|
|
695
|
-
- [ ] Test direct API calls bypassing the UI
|
|
696
|
-
- [ ] Test role-based visibility across all user tiers
|
|
697
|
-
|
|
698
|
-
## References
|
|
699
|
-
- OWASP Access Control Cheat Sheet
|
|
700
|
-
|
|
701
|
-
**Severity:** Medium
|
|
702
|
-
**Example test:** Call the underlying API directly with a lower-privilege token, bypassing the UI that hides the button, and confirm the server still denies it.
|
|
703
|
-
**Last reviewed:** 2026-08-29
|
|
704
|
-
|
|
705
|
-
### `03_Access_Control_Session_Auth/02_backend_access_control.md`
|
|
706
|
-
|
|
707
|
-
# Backend Access Control
|
|
708
|
-
|
|
709
|
-
## What it is
|
|
710
|
-
Server-side enforcement of who can do what to which resource.
|
|
711
|
-
|
|
712
|
-
## Why it matters
|
|
713
|
-
The real security boundary; UI hiding is not sufficient.
|
|
714
|
-
|
|
715
|
-
## Test checklist
|
|
716
|
-
- [ ] Every endpoint enforces authN + authZ independently
|
|
717
|
-
- [ ] Test vertical privilege escalation (user -> admin)
|
|
718
|
-
- [ ] Test horizontal privilege escalation (user A -> user B's data)
|
|
719
|
-
- [ ] Deny-by-default posture confirmed
|
|
720
|
-
|
|
721
|
-
## References
|
|
722
|
-
- OWASP Access Control Cheat Sheet
|
|
723
|
-
|
|
724
|
-
**Severity:** Critical
|
|
725
|
-
**Example test:** Using User A's valid session, request User B's resource ID directly and confirm a 403, not the data.
|
|
726
|
-
**Last reviewed:** 2026-08-29
|
|
727
|
-
**See also:** `02_Web_Vulnerabilities/05_idor.md`, `03_Access_Control_Session_Auth/01_ui_ux_access_control.md`
|
|
728
|
-
|
|
729
|
-
### `03_Access_Control_Session_Auth/03_cache_invalidation_on_auth_change.md`
|
|
730
|
-
|
|
731
|
-
# Cache Invalidation on Auth/Privilege Change
|
|
732
|
-
|
|
733
|
-
## What it is
|
|
734
|
-
Ensuring cached session/permission data is invalidated immediately when auth state changes.
|
|
735
|
-
|
|
736
|
-
## Why it matters
|
|
737
|
-
Stale cached permissions can let a de-privileged or logged-out user keep acting with old rights.
|
|
738
|
-
|
|
739
|
-
## Test checklist
|
|
740
|
-
- [ ] Test that logout invalidates cached session data immediately, not just client-side
|
|
741
|
-
- [ ] Test that a role/permission downgrade takes effect without requiring re-login
|
|
742
|
-
- [ ] Confirm password change invalidates other active sessions (or as designed)
|
|
743
|
-
- [ ] Test cache TTLs aren't so long that revocation is effectively delayed
|
|
744
|
-
|
|
745
|
-
## References
|
|
746
|
-
- OWASP Session Management Cheat Sheet
|
|
747
|
-
|
|
748
|
-
**Severity:** High
|
|
749
|
-
**Example test:** Downgrade a test user's role, then immediately retry a privileged action with their still-active session and confirm it's now denied.
|
|
750
|
-
**Last reviewed:** 2026-08-29
|
|
751
|
-
|
|
752
|
-
### `03_Access_Control_Session_Auth/04_device_trust_fingerprinting.md`
|
|
753
|
-
|
|
754
|
-
# Device Trust & Fingerprinting
|
|
755
|
-
|
|
756
|
-
## What it is
|
|
757
|
-
Recognizing a returning trusted device to reduce friction (e.g. skip MFA on known devices).
|
|
758
|
-
|
|
759
|
-
## Why it matters
|
|
760
|
-
Weak device trust can be spoofed to bypass MFA entirely.
|
|
761
|
-
|
|
762
|
-
## Test checklist
|
|
763
|
-
- [ ] Confirm device trust is tied to a secure, unpredictable device identifier, not just User-Agent
|
|
764
|
-
- [ ] Test that device trust expires and re-verification is required periodically
|
|
765
|
-
- [ ] Confirm new/unrecognized devices always trigger full auth + MFA
|
|
766
|
-
- [ ] Test for device trust bypass via spoofed identifiers
|
|
767
|
-
|
|
768
|
-
## References
|
|
769
|
-
- NIST SP 800-63B
|
|
770
|
-
|
|
771
|
-
**Severity:** Medium
|
|
772
|
-
**Example test:** Replay a captured device-trust identifier from a different browser/device and confirm it does not skip MFA.
|
|
773
|
-
**Last reviewed:** 2026-08-29
|
|
774
|
-
|
|
775
|
-
### `03_Access_Control_Session_Auth/05_rbac_abac.md`
|
|
776
|
-
|
|
777
|
-
# RBAC / ABAC Models (added)
|
|
778
|
-
|
|
779
|
-
## What it is
|
|
780
|
-
Role-Based vs Attribute-Based access control models.
|
|
781
|
-
|
|
782
|
-
## Why it matters
|
|
783
|
-
Choosing/implementing the wrong model leads to over-permissioning.
|
|
784
|
-
|
|
785
|
-
## Test checklist
|
|
786
|
-
- [ ] Roles/attributes map to least privilege
|
|
787
|
-
- [ ] Role assignment changes are logged and reviewed
|
|
788
|
-
- [ ] Test for privilege creep in long-lived accounts
|
|
789
|
-
|
|
790
|
-
## References
|
|
791
|
-
- NIST RBAC/ABAC guidance
|
|
792
|
-
|
|
793
|
-
**Severity:** Medium
|
|
794
|
-
**Example test:** Pick a long-lived test account and diff its current granted permissions against what its role should have today, looking for accumulated excess access.
|
|
795
|
-
**Last reviewed:** 2026-08-29
|
|
796
|
-
|
|
797
|
-
### `03_Access_Control_Session_Auth/06_forced_reauth_sensitive_actions.md`
|
|
798
|
-
|
|
799
|
-
# Forced Re-Authentication for Sensitive Actions
|
|
800
|
-
|
|
801
|
-
## What it is
|
|
802
|
-
Requiring fresh credential/MFA confirmation before high-risk actions, even within an active session.
|
|
803
|
-
|
|
804
|
-
## Why it matters
|
|
805
|
-
Auto-login/remember-me sessions shouldn't be enough to authorize account takeover-level changes.
|
|
806
|
-
|
|
807
|
-
## Test checklist
|
|
808
|
-
- [ ] Test that changing password/email/MFA requires re-entering current credentials
|
|
809
|
-
- [ ] Test that a session restored via remember-me token still requires step-up auth for sensitive actions
|
|
810
|
-
- [ ] Confirm step-up auth prompt can't be bypassed by replaying an old confirmation
|
|
811
|
-
- [ ] Test time window after step-up auth before it expires again
|
|
812
|
-
|
|
813
|
-
## References
|
|
814
|
-
- OWASP Authentication Cheat Sheet - Re-authentication
|
|
815
|
-
|
|
816
|
-
**Severity:** High
|
|
817
|
-
**Example test:** From an already-logged-in session, attempt to change the account email/password without re-entering credentials and confirm it's blocked.
|
|
818
|
-
**Last reviewed:** 2026-08-29
|
|
819
|
-
|
|
820
|
-
### `03_Access_Control_Session_Auth/07_session_management.md`
|
|
821
|
-
|
|
822
|
-
# Session Management (added)
|
|
823
|
-
|
|
824
|
-
## What it is
|
|
825
|
-
Handling of session tokens/cookies across the user's authenticated lifecycle.
|
|
826
|
-
|
|
827
|
-
## Why it matters
|
|
828
|
-
Weak session handling enables hijacking and fixation attacks.
|
|
829
|
-
|
|
830
|
-
## Test checklist
|
|
831
|
-
- [ ] Session ID regenerated on login/privilege change
|
|
832
|
-
- [ ] Sessions expire after inactivity and absolute timeout
|
|
833
|
-
- [ ] Secure, HttpOnly, SameSite cookie flags set
|
|
834
|
-
- [ ] Logout invalidates session server-side
|
|
835
|
-
|
|
836
|
-
## References
|
|
837
|
-
- OWASP Session Management Cheat Sheet
|
|
838
|
-
|
|
839
|
-
**Severity:** High
|
|
840
|
-
**Example test:** Capture the session cookie before and after login and confirm the session ID value actually changes (regenerates) rather than persisting.
|
|
841
|
-
**Last reviewed:** 2026-08-29
|
|
842
|
-
**See also:** `01_API_Security/04_jwt_validation.md`, `03_Access_Control_Session_Auth/10_remember_me_persistent_login.md`
|
|
843
|
-
|
|
844
|
-
### `03_Access_Control_Session_Auth/08_mfa.md`
|
|
845
|
-
|
|
846
|
-
# Multi-Factor Authentication (added)
|
|
847
|
-
|
|
848
|
-
## What it is
|
|
849
|
-
Requiring a second verification factor beyond password.
|
|
850
|
-
|
|
851
|
-
## Why it matters
|
|
852
|
-
Significantly reduces account takeover risk.
|
|
853
|
-
|
|
854
|
-
## Test checklist
|
|
855
|
-
- [ ] Test MFA cannot be bypassed via password reset flow
|
|
856
|
-
- [ ] Test backup codes are single-use and rate-limited
|
|
857
|
-
- [ ] Confirm MFA enforced for privileged accounts at minimum
|
|
858
|
-
|
|
859
|
-
## References
|
|
860
|
-
- NIST SP 800-63B
|
|
861
|
-
|
|
862
|
-
**Severity:** Critical
|
|
863
|
-
**Example test:** Attempt the password-reset flow and confirm it cannot be used to fully log in while skipping the MFA step.
|
|
864
|
-
**Last reviewed:** 2026-08-29
|
|
865
|
-
|
|
866
|
-
### `03_Access_Control_Session_Auth/09_session_store_caching.md`
|
|
867
|
-
|
|
868
|
-
# Session Store Security (Redis/Memcached)
|
|
869
|
-
|
|
870
|
-
## What it is
|
|
871
|
-
Securing the backing store used to hold server-side session data.
|
|
872
|
-
|
|
873
|
-
## Why it matters
|
|
874
|
-
A compromised or exposed session store can leak or forge every active session.
|
|
875
|
-
|
|
876
|
-
## Test checklist
|
|
877
|
-
- [ ] Confirm session store requires authentication and isn't publicly reachable
|
|
878
|
-
- [ ] Confirm sensitive session data is encrypted at rest in the store
|
|
879
|
-
- [ ] Test session store connection uses TLS where it crosses network boundaries
|
|
880
|
-
- [ ] Confirm session store access is least-privilege (app can't run arbitrary admin commands)
|
|
881
|
-
|
|
882
|
-
## References
|
|
883
|
-
- OWASP Session Management Cheat Sheet
|
|
884
|
-
|
|
885
|
-
**Severity:** High
|
|
886
|
-
**Example test:** Attempt to connect directly to the Redis/Memcached session store from outside the app network and confirm authentication is required and it isn't publicly reachable.
|
|
887
|
-
**Last reviewed:** 2026-08-29
|
|
888
|
-
|
|
889
|
-
### `03_Access_Control_Session_Auth/10_remember_me_persistent_login.md`
|
|
890
|
-
|
|
891
|
-
# "Remember Me" & Persistent Login Tokens
|
|
892
|
-
|
|
893
|
-
## What it is
|
|
894
|
-
Long-lived tokens that let a user skip login on return visits, and the rotation
|
|
895
|
-
strategy used to keep those long-lived tokens safe over time (including
|
|
896
|
-
refresh-token rotation patterns).
|
|
897
|
-
|
|
898
|
-
## Why it matters
|
|
899
|
-
A stolen remember-me or persistent-login token is effectively a stolen account
|
|
900
|
-
if not designed carefully — and if the token never rotates, a single leak gives
|
|
901
|
-
an attacker indefinite access.
|
|
902
|
-
|
|
903
|
-
## Test checklist
|
|
904
|
-
- [ ] Confirm tokens are long, random, and stored hashed server-side
|
|
905
|
-
- [ ] Confirm tokens rotate on each use (rotating refresh-token pattern), not a static reusable value
|
|
906
|
-
- [ ] Test that reuse of an already-rotated-out token triggers alerting/session revocation (breach detection)
|
|
907
|
-
- [ ] Test token doesn't grant access to sensitive actions without step-up auth
|
|
908
|
-
- [ ] Confirm tokens can be individually revoked (e.g. "log out all devices")
|
|
909
|
-
- [ ] Confirm a maximum absolute lifetime is enforced even with continuous rotation
|
|
910
|
-
|
|
911
|
-
## References
|
|
912
|
-
- OWASP Authentication Cheat Sheet - Remember Me section
|
|
913
|
-
- OAuth 2.0 Security Best Current Practice - Refresh Token Rotation
|
|
914
|
-
|
|
915
|
-
**Severity:** High
|
|
916
|
-
**Example test:** Use a captured remember-me token once, then reuse the same (now-rotated-out) token value again and confirm it triggers revocation/alerting rather than silent success.
|
|
917
|
-
**Last reviewed:** 2026-08-29
|
|
918
|
-
**See also:** `03_Access_Control_Session_Auth/07_session_management.md`
|
|
919
|
-
|
|
920
|
-
|
|
921
|
-
---
|
|
922
|
-
|
|
923
|
-
## 04_UI_Framework_Security — UI / Framework Security
|
|
924
|
-
|
|
925
|
-
### `04_UI_Framework_Security/01_framework_xss_sinks.md`
|
|
926
|
-
|
|
927
|
-
# Framework-Specific XSS Sinks
|
|
928
|
-
|
|
929
|
-
## What it is
|
|
930
|
-
Bypassing a framework's built-in auto-escaping via dangerous APIs (dangerouslySetInnerHTML, v-html, [innerHTML]).
|
|
931
|
-
|
|
932
|
-
## Why it matters
|
|
933
|
-
Frameworks auto-escape by default, but these escape hatches reintroduce raw XSS.
|
|
934
|
-
|
|
935
|
-
## Test checklist
|
|
936
|
-
- [ ] Grep codebase for dangerouslySetInnerHTML / v-html / innerHTML / bypassSecurityTrust*
|
|
937
|
-
- [ ] Confirm any raw HTML rendering is sanitized (e.g. DOMPurify) before use
|
|
938
|
-
- [ ] Test rich text editor output specifically
|
|
939
|
-
- [ ] Confirm third-party embedded widgets don't inject unsanitized HTML
|
|
940
|
-
|
|
941
|
-
## References
|
|
942
|
-
- OWASP XSS Prevention Cheat Sheet
|
|
943
|
-
- React/Vue/Angular security docs
|
|
944
|
-
|
|
945
|
-
**Severity:** High
|
|
946
|
-
**Example test:** grep -r 'dangerouslySetInnerHTML\|v-html\|innerHTML' across the frontend source and confirm every hit sanitizes input (e.g. via DOMPurify) first.
|
|
947
|
-
**Last reviewed:** 2026-08-29
|
|
948
|
-
|
|
949
|
-
### `04_UI_Framework_Security/02_client_side_routing_auth.md`
|
|
950
|
-
|
|
951
|
-
# Client-Side Routing & Route Guards
|
|
952
|
-
|
|
953
|
-
## What it is
|
|
954
|
-
SPA route guards (React Router, Vue Router) that hide pages based on client-side auth state.
|
|
955
|
-
|
|
956
|
-
## Why it matters
|
|
957
|
-
Route guards are UX only; the underlying API/data must be protected server-side too.
|
|
958
|
-
|
|
959
|
-
## Test checklist
|
|
960
|
-
- [ ] Directly call underlying API/data endpoints without going through the guarded route
|
|
961
|
-
- [ ] Confirm sensitive data isn't fetched before the auth check resolves
|
|
962
|
-
- [ ] Test back-button/cached-page access after logout
|
|
963
|
-
- [ ] Verify server-side authorization on every data-fetching call, not just route entry
|
|
964
|
-
|
|
965
|
-
## References
|
|
966
|
-
- OWASP Access Control Cheat Sheet
|
|
967
|
-
|
|
968
|
-
**Severity:** High
|
|
969
|
-
**Example test:** Call the data-fetching API endpoint behind a guarded route directly via curl/Postman without going through the SPA route guard, and confirm it's still blocked server-side.
|
|
970
|
-
**Last reviewed:** 2026-08-29
|
|
971
|
-
|
|
972
|
-
### `04_UI_Framework_Security/03_state_management_leaks.md`
|
|
973
|
-
|
|
974
|
-
# State Management Data Leaks
|
|
975
|
-
|
|
976
|
-
## What it is
|
|
977
|
-
Sensitive data stored in global client state (Redux/Vuex/Context) visible via devtools.
|
|
978
|
-
|
|
979
|
-
## Why it matters
|
|
980
|
-
Devtools extensions and browser inspection can expose tokens, PII, or internal data left in state.
|
|
981
|
-
|
|
982
|
-
## Test checklist
|
|
983
|
-
- [ ] Inspect Redux/Vuex devtools in production build for sensitive fields
|
|
984
|
-
- [ ] Confirm devtools are disabled/stripped in production builds
|
|
985
|
-
- [ ] Test that tokens/secrets are never placed in global state, only in memory scoped narrowly
|
|
986
|
-
- [ ] Check persisted state (redux-persist, localStorage) for sensitive data
|
|
987
|
-
|
|
988
|
-
## References
|
|
989
|
-
- OWASP Client-Side Storage guidance
|
|
990
|
-
|
|
991
|
-
**Severity:** Medium
|
|
992
|
-
**Example test:** Open Redux/Vuex devtools against the production build and search global state for tokens, secrets, or full user PII objects.
|
|
993
|
-
**Last reviewed:** 2026-08-29
|
|
994
|
-
|
|
995
|
-
### `04_UI_Framework_Security/04_build_config_exposure.md`
|
|
996
|
-
|
|
997
|
-
# Build Config & Source Map Exposure
|
|
998
|
-
|
|
999
|
-
## What it is
|
|
1000
|
-
Environment variables bundled into client JS, and source maps left accessible in production.
|
|
1001
|
-
|
|
1002
|
-
## Why it matters
|
|
1003
|
-
Anything bundled client-side is public; exposed source maps make reversing trivial.
|
|
1004
|
-
|
|
1005
|
-
## Test checklist
|
|
1006
|
-
- [ ] Confirm only public-safe env vars are exposed to the client bundle
|
|
1007
|
-
- [ ] Test that .map files are not accessible in production
|
|
1008
|
-
- [ ] Search built JS bundle for accidentally-included secrets/API keys
|
|
1009
|
-
- [ ] Confirm build pipeline separates client-safe vs server-only config
|
|
1010
|
-
|
|
1011
|
-
## References
|
|
1012
|
-
- OWASP Configuration Cheat Sheet
|
|
1013
|
-
|
|
1014
|
-
**Severity:** Medium
|
|
1015
|
-
**Example test:** Fetch every .map file path from the production bundle directly and confirm 404s; grep the deployed JS bundle for API key-shaped strings.
|
|
1016
|
-
**Last reviewed:** 2026-08-29
|
|
1017
|
-
|
|
1018
|
-
### `04_UI_Framework_Security/05_csp_framework_compatibility.md`
|
|
1019
|
-
|
|
1020
|
-
# CSP Compatibility with UI Frameworks
|
|
1021
|
-
|
|
1022
|
-
## What it is
|
|
1023
|
-
Configuring Content-Security-Policy so it works with a framework's inline styles/scripts without weakening it.
|
|
1024
|
-
|
|
1025
|
-
## Why it matters
|
|
1026
|
-
A CSP with 'unsafe-inline' to make a framework work defeats much of its purpose.
|
|
1027
|
-
|
|
1028
|
-
## Test checklist
|
|
1029
|
-
- [ ] Use nonces or hashes instead of 'unsafe-inline' where the framework requires inline scripts/styles
|
|
1030
|
-
- [ ] Test CSP doesn't break in production build vs dev build
|
|
1031
|
-
- [ ] Confirm CSP report-uri/report-to is monitored
|
|
1032
|
-
|
|
1033
|
-
## References
|
|
1034
|
-
- OWASP Content Security Policy Cheat Sheet
|
|
1035
|
-
|
|
1036
|
-
**Severity:** Medium
|
|
1037
|
-
**Example test:** Check the deployed CSP header for 'unsafe-inline'; if present, test whether nonces/hashes can replace it without breaking the framework's inline scripts.
|
|
1038
|
-
**Last reviewed:** 2026-08-29
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
---
|
|
1042
|
-
|
|
1043
|
-
## 05_Backend_Handling — Backend Handling
|
|
1044
|
-
|
|
1045
|
-
### `05_Backend_Handling/01_business_logic_validation.md`
|
|
1046
|
-
|
|
1047
|
-
# Business Logic Validation
|
|
1048
|
-
|
|
1049
|
-
## What it is
|
|
1050
|
-
Enforcing that requests follow intended workflows/state transitions, not just syntactic validation.
|
|
1051
|
-
|
|
1052
|
-
## Why it matters
|
|
1053
|
-
Technically valid requests can still violate business rules (e.g. skipping payment step).
|
|
1054
|
-
|
|
1055
|
-
## Test checklist
|
|
1056
|
-
- [ ] Test skipping steps in a multi-step workflow (e.g. checkout without payment)
|
|
1057
|
-
- [ ] Test submitting negative quantities/prices where not expected
|
|
1058
|
-
- [ ] Test state transitions that shouldn't be reachable (e.g. cancelled -> shipped)
|
|
1059
|
-
- [ ] Confirm server re-validates business rules, not just trusting client-submitted state
|
|
1060
|
-
|
|
1061
|
-
## References
|
|
1062
|
-
- OWASP Business Logic Testing Guide
|
|
1063
|
-
|
|
1064
|
-
**Severity:** High
|
|
1065
|
-
**Example test:** Attempt to call the 'ship order' step of a checkout flow while skipping the 'payment' step and confirm the server rejects the out-of-order transition.
|
|
1066
|
-
**Last reviewed:** 2026-08-29
|
|
1067
|
-
|
|
1068
|
-
### `05_Backend_Handling/02_file_upload_handling.md`
|
|
1069
|
-
|
|
1070
|
-
# File Upload Handling
|
|
1071
|
-
|
|
1072
|
-
## What it is
|
|
1073
|
-
Validating, storing, and serving user-uploaded files safely.
|
|
1074
|
-
|
|
1075
|
-
## Why it matters
|
|
1076
|
-
Improper handling leads to RCE, stored XSS, or storage abuse.
|
|
1077
|
-
|
|
1078
|
-
## Test checklist
|
|
1079
|
-
- [ ] Validate file type by content (magic bytes), not just extension/MIME header
|
|
1080
|
-
- [ ] Store uploads outside the web root or in isolated object storage
|
|
1081
|
-
- [ ] Enforce file size limits and scan for malware
|
|
1082
|
-
- [ ] Serve uploaded files with safe Content-Disposition/Content-Type, no inline execution
|
|
1083
|
-
|
|
1084
|
-
## References
|
|
1085
|
-
- OWASP File Upload Cheat Sheet
|
|
1086
|
-
|
|
1087
|
-
**Severity:** Critical
|
|
1088
|
-
**Example test:** Upload a file with a .jpg extension but executable/script magic bytes inside, and confirm the server validates content type by inspecting bytes, not just the extension.
|
|
1089
|
-
**Last reviewed:** 2026-08-29
|
|
1090
|
-
|
|
1091
|
-
### `05_Backend_Handling/03_orm_database_security.md`
|
|
1092
|
-
|
|
1093
|
-
# ORM & Database Layer Security
|
|
1094
|
-
|
|
1095
|
-
## What it is
|
|
1096
|
-
Ensuring the data access layer enforces the same protections as raw SQL would need.
|
|
1097
|
-
|
|
1098
|
-
## Why it matters
|
|
1099
|
-
ORMs reduce but don't eliminate injection and over-fetching risks.
|
|
1100
|
-
|
|
1101
|
-
## Test checklist
|
|
1102
|
-
- [ ] Confirm raw query escape hatches in the ORM are parameterized
|
|
1103
|
-
- [ ] Test for excessive data exposure (ORM returning full objects instead of needed fields)
|
|
1104
|
-
- [ ] Review database user permissions (least privilege, no superuser for app connection)
|
|
1105
|
-
- [ ] Confirm connection strings/credentials aren't hardcoded
|
|
1106
|
-
|
|
1107
|
-
## References
|
|
1108
|
-
- OWASP SQL Injection Prevention Cheat Sheet
|
|
1109
|
-
|
|
1110
|
-
**Severity:** High
|
|
1111
|
-
**Example test:** Search the codebase for any raw-query escape hatches in the ORM and confirm every one uses parameter binding, not string concatenation.
|
|
1112
|
-
**Last reviewed:** 2026-08-29
|
|
1113
|
-
|
|
1114
|
-
### `05_Backend_Handling/04_background_job_queue_security.md`
|
|
1115
|
-
|
|
1116
|
-
# Background Job & Queue Security
|
|
1117
|
-
|
|
1118
|
-
## What it is
|
|
1119
|
-
Securing async job processing (queues, workers, cron jobs) from injection and abuse.
|
|
1120
|
-
|
|
1121
|
-
## Why it matters
|
|
1122
|
-
Queued jobs often skip the validation that sits in front of synchronous API endpoints.
|
|
1123
|
-
|
|
1124
|
-
## Test checklist
|
|
1125
|
-
- [ ] Confirm queued job payloads are validated the same as API input
|
|
1126
|
-
- [ ] Test for job payload tampering (signed/authenticated messages)
|
|
1127
|
-
- [ ] Confirm job retries can't be abused for duplicate side effects (idempotency)
|
|
1128
|
-
- [ ] Review access control on queue management/admin interfaces
|
|
1129
|
-
|
|
1130
|
-
## References
|
|
1131
|
-
- OWASP Asynchronous Processing guidance
|
|
1132
|
-
|
|
1133
|
-
**Severity:** Medium
|
|
1134
|
-
**Example test:** Submit a queued job payload with malformed/malicious data directly (bypassing the API layer) and confirm the worker validates it the same way the API would.
|
|
1135
|
-
**Last reviewed:** 2026-08-29
|
|
1136
|
-
|
|
1137
|
-
### `05_Backend_Handling/05_error_handling_stack_traces.md`
|
|
1138
|
-
|
|
1139
|
-
# Error Handling & Stack Trace Exposure
|
|
1140
|
-
|
|
1141
|
-
## What it is
|
|
1142
|
-
Ensuring errors are handled gracefully without leaking internal details.
|
|
1143
|
-
|
|
1144
|
-
## Why it matters
|
|
1145
|
-
Verbose errors reveal file paths, stack traces, and internal architecture to attackers.
|
|
1146
|
-
|
|
1147
|
-
## Test checklist
|
|
1148
|
-
- [ ] Confirm production mode disables detailed error pages/stack traces
|
|
1149
|
-
- [ ] Test that generic error messages are returned to clients
|
|
1150
|
-
- [ ] Confirm full error detail is only logged server-side, not returned in response
|
|
1151
|
-
- [ ] Test unexpected input types (wrong content-type, malformed JSON) for graceful handling
|
|
1152
|
-
|
|
1153
|
-
## References
|
|
1154
|
-
- OWASP Error Handling Cheat Sheet
|
|
1155
|
-
|
|
1156
|
-
**Severity:** Medium
|
|
1157
|
-
**Example test:** Send a malformed request (bad JSON, wrong content-type) to a production endpoint and confirm the response is a generic error, not a stack trace or file path.
|
|
1158
|
-
**Last reviewed:** 2026-08-29
|
|
1159
|
-
|
|
1160
|
-
|
|
1161
|
-
---
|
|
1162
|
-
|
|
1163
|
-
## 06_Data_Protection_Secrets — Data Protection & Secrets
|
|
1164
|
-
|
|
1165
|
-
### `06_Data_Protection_Secrets/01_encryption_at_rest.md`
|
|
1166
|
-
|
|
1167
|
-
# Encryption at Rest
|
|
1168
|
-
|
|
1169
|
-
## What it is
|
|
1170
|
-
Encrypting stored data (databases, backups, file storage) so raw access doesn't expose plaintext.
|
|
1171
|
-
|
|
1172
|
-
## Why it matters
|
|
1173
|
-
Protects data if physical storage or backups are stolen or improperly accessed.
|
|
1174
|
-
|
|
1175
|
-
## Test checklist
|
|
1176
|
-
- [ ] Confirm databases/disks/object storage have encryption at rest enabled
|
|
1177
|
-
- [ ] Confirm backups are encrypted, not just the live database
|
|
1178
|
-
- [ ] Test that encryption keys are stored separately from the encrypted data
|
|
1179
|
-
- [ ] Confirm sensitive fields (PII, secrets) use field-level encryption where appropriate
|
|
1180
|
-
|
|
1181
|
-
## References
|
|
1182
|
-
- NIST SP 800-111 Storage Encryption
|
|
1183
|
-
|
|
1184
|
-
**Severity:** High
|
|
1185
|
-
**Example test:** Confirm via cloud console/CLI that the database volume, backups, and object storage all show encryption-at-rest enabled, not just the primary disk.
|
|
1186
|
-
**Last reviewed:** 2026-08-29
|
|
1187
|
-
|
|
1188
|
-
### `06_Data_Protection_Secrets/02_encryption_in_transit.md`
|
|
1189
|
-
|
|
1190
|
-
# Encryption in Transit
|
|
1191
|
-
|
|
1192
|
-
## What it is
|
|
1193
|
-
Encrypting data as it moves between clients, services, and internal components.
|
|
1194
|
-
|
|
1195
|
-
## Why it matters
|
|
1196
|
-
Prevents interception/tampering on the network, including internal service-to-service traffic.
|
|
1197
|
-
|
|
1198
|
-
## Test checklist
|
|
1199
|
-
- [ ] Confirm all external traffic is HTTPS-only (no plain HTTP fallback)
|
|
1200
|
-
- [ ] Confirm internal service-to-service traffic is also encrypted, not assumed 'trusted network'
|
|
1201
|
-
- [ ] Test for TLS downgrade attack resistance
|
|
1202
|
-
- [ ] Confirm database connections use TLS, not plaintext
|
|
1203
|
-
|
|
1204
|
-
## References
|
|
1205
|
-
- NIST SP 800-52
|
|
1206
|
-
|
|
1207
|
-
**Severity:** High
|
|
1208
|
-
**Example test:** Attempt to connect to the database and any internal service-to-service endpoint over plaintext and confirm the connection is refused, TLS-only.
|
|
1209
|
-
**Last reviewed:** 2026-08-29
|
|
1210
|
-
|
|
1211
|
-
### `06_Data_Protection_Secrets/03_pii_data_classification.md`
|
|
1212
|
-
|
|
1213
|
-
# PII & Data Classification
|
|
1214
|
-
|
|
1215
|
-
## What it is
|
|
1216
|
-
Identifying and labeling data by sensitivity so appropriate controls are applied.
|
|
1217
|
-
|
|
1218
|
-
## Why it matters
|
|
1219
|
-
You can't protect what you haven't identified; misclassified data gets under-protected.
|
|
1220
|
-
|
|
1221
|
-
## Test checklist
|
|
1222
|
-
- [ ] Data inventory identifies where PII/sensitive data lives
|
|
1223
|
-
- [ ] Access controls scale with data sensitivity classification
|
|
1224
|
-
- [ ] Confirm data retention/deletion policy matches classification requirements
|
|
1225
|
-
- [ ] Test that exports/reports don't leak higher-sensitivity data than intended
|
|
1226
|
-
|
|
1227
|
-
## References
|
|
1228
|
-
- NIST SP 800-122 PII Guide
|
|
1229
|
-
|
|
1230
|
-
**Severity:** Medium
|
|
1231
|
-
**Example test:** Pull a sample data export/report and check whether it exposes any field classified as higher-sensitivity than the export's intended audience.
|
|
1232
|
-
**Last reviewed:** 2026-08-29
|
|
1233
|
-
|
|
1234
|
-
### `06_Data_Protection_Secrets/04_key_management.md`
|
|
1235
|
-
|
|
1236
|
-
# Key Management (KMS)
|
|
1237
|
-
|
|
1238
|
-
## What it is
|
|
1239
|
-
Generating, storing, rotating, and revoking cryptographic keys used across the system.
|
|
1240
|
-
|
|
1241
|
-
## Why it matters
|
|
1242
|
-
Weak key management undermines every encryption control built on top of it.
|
|
1243
|
-
|
|
1244
|
-
## Test checklist
|
|
1245
|
-
- [ ] Use a dedicated KMS/HSM rather than hardcoded or file-based keys
|
|
1246
|
-
- [ ] Confirm key rotation policy is defined and automated where possible
|
|
1247
|
-
- [ ] Confirm key access is logged and least-privilege
|
|
1248
|
-
- [ ] Test key revocation process (e.g. after suspected compromise)
|
|
1249
|
-
|
|
1250
|
-
## References
|
|
1251
|
-
- NIST SP 800-57 Key Management Guide
|
|
1252
|
-
|
|
1253
|
-
**Severity:** Critical
|
|
1254
|
-
**Example test:** Confirm encryption keys live in a KMS/HSM (not a config file or env var) and walk through the documented key-revocation procedure end to end.
|
|
1255
|
-
**Last reviewed:** 2026-08-29
|
|
1256
|
-
|
|
1257
|
-
### `06_Data_Protection_Secrets/05_tls_certificate_management.md`
|
|
1258
|
-
|
|
1259
|
-
# TLS Certificate Management
|
|
1260
|
-
|
|
1261
|
-
## What it is
|
|
1262
|
-
Issuing, renewing, and monitoring TLS certificates across all deployed endpoints.
|
|
1263
|
-
|
|
1264
|
-
## Why it matters
|
|
1265
|
-
Expired or misconfigured certs cause outages and downgrade attack risk.
|
|
1266
|
-
|
|
1267
|
-
## Test checklist
|
|
1268
|
-
- [ ] Confirm automated certificate renewal (e.g. ACME/Let's Encrypt or managed cert service)
|
|
1269
|
-
- [ ] Monitor certificate expiry with alerting well before expiration
|
|
1270
|
-
- [ ] Confirm TLS 1.2+ only, weak ciphers disabled
|
|
1271
|
-
- [ ] Test HSTS is enabled and preload-eligible if applicable
|
|
1272
|
-
|
|
1273
|
-
## References
|
|
1274
|
-
- Mozilla SSL Configuration Generator
|
|
1275
|
-
|
|
1276
|
-
**Severity:** High
|
|
1277
|
-
**Example test:** Run an SSL/TLS scan (e.g. against the Mozilla Observatory or testssl.sh) on each public endpoint and confirm TLS 1.2+ only, no weak ciphers, valid expiry.
|
|
1278
|
-
**Last reviewed:** 2026-08-29
|
|
1279
|
-
|
|
1280
|
-
### `06_Data_Protection_Secrets/06_secrets_management.md`
|
|
1281
|
-
|
|
1282
|
-
# Secrets Management (added)
|
|
1283
|
-
|
|
1284
|
-
## What it is
|
|
1285
|
-
Secure storage, rotation, and access control for credentials, keys, and tokens.
|
|
1286
|
-
|
|
1287
|
-
## Why it matters
|
|
1288
|
-
Hardcoded/leaked secrets are one of the top causes of breaches.
|
|
1289
|
-
|
|
1290
|
-
## Test checklist
|
|
1291
|
-
- [ ] No secrets committed to source control
|
|
1292
|
-
- [ ] Secrets stored in a vault (not env files in prod)
|
|
1293
|
-
- [ ] Automatic rotation policy in place
|
|
1294
|
-
- [ ] Access to secrets is scoped and audited
|
|
1295
|
-
|
|
1296
|
-
## References
|
|
1297
|
-
- OWASP Secrets Management Cheat Sheet
|
|
1298
|
-
|
|
1299
|
-
**Severity:** Critical
|
|
1300
|
-
**Example test:** Run a secret-scanning tool (e.g. gitleaks/truffleHog) across the full git history, not just HEAD, and confirm zero committed credentials.
|
|
1301
|
-
**Last reviewed:** 2026-08-29
|
|
1302
|
-
**See also:** `06_Data_Protection_Secrets/04_key_management.md`, `08_Release_Engineering_Version_Control/05_cicd_security.md`
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
---
|
|
1306
|
-
|
|
1307
|
-
## 07_Cloud_Infra_Deployment — Cloud Infra & Deployment
|
|
1308
|
-
|
|
1309
|
-
### `07_Cloud_Infra_Deployment/01_environment_separation.md`
|
|
1310
|
-
|
|
1311
|
-
> **Authorization reminder:** Only run these checks against systems you own or have explicit written permission to test. Prefer staging/QA over production — several checks here (injection probes, IAM changes, DNS record edits) can have live side effects.
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
# Environment Separation
|
|
1315
|
-
|
|
1316
|
-
## What it is
|
|
1317
|
-
Keeping dev, staging, and production environments isolated from each other.
|
|
1318
|
-
|
|
1319
|
-
## Why it matters
|
|
1320
|
-
Cross-environment leakage can expose prod data to lower-trust environments or vice versa.
|
|
1321
|
-
|
|
1322
|
-
## Test checklist
|
|
1323
|
-
- [ ] Confirm prod credentials/data never exist in dev/staging
|
|
1324
|
-
- [ ] Test that staging environments aren't publicly indexable/accessible without auth
|
|
1325
|
-
- [ ] Confirm separate cloud accounts/projects per environment where possible
|
|
1326
|
-
- [ ] Verify CI/CD pipeline can't accidentally deploy dev code to prod config
|
|
1327
|
-
|
|
1328
|
-
## References
|
|
1329
|
-
- NIST SP 800-53 environment separation controls
|
|
1330
|
-
|
|
1331
|
-
**Severity:** Critical
|
|
1332
|
-
**Example test:** Attempt to reach the staging environment unauthenticated from the public internet and confirm it requires auth or is not publicly indexable.
|
|
1333
|
-
**Last reviewed:** 2026-08-29
|
|
1334
|
-
|
|
1335
|
-
### `07_Cloud_Infra_Deployment/02_iam_policy_review.md`
|
|
1336
|
-
|
|
1337
|
-
> **Authorization reminder:** Only run these checks against systems you own or have explicit written permission to test. Prefer staging/QA over production — several checks here (injection probes, IAM changes, DNS record edits) can have live side effects.
|
|
1338
|
-
|
|
1339
|
-
|
|
1340
|
-
# Cloud IAM Policy Review
|
|
1341
|
-
|
|
1342
|
-
## What it is
|
|
1343
|
-
Reviewing identity and access management policies across cloud accounts/projects.
|
|
1344
|
-
|
|
1345
|
-
## Why it matters
|
|
1346
|
-
Overly broad IAM policies are one of the most common root causes of cloud breaches.
|
|
1347
|
-
|
|
1348
|
-
## Test checklist
|
|
1349
|
-
- [ ] Review for wildcard permissions (*:*) and scope them down
|
|
1350
|
-
- [ ] Confirm least-privilege per role, reviewed periodically
|
|
1351
|
-
- [ ] Test for privilege escalation paths between roles
|
|
1352
|
-
- [ ] Confirm break-glass/emergency access is logged and time-limited
|
|
1353
|
-
|
|
1354
|
-
## References
|
|
1355
|
-
- CIS AWS/Azure/GCP Foundations Benchmark
|
|
1356
|
-
|
|
1357
|
-
**Severity:** Critical
|
|
1358
|
-
**Example test:** Export all IAM policies and grep for '*:*' or overly broad wildcard actions/resources; confirm each is justified or scoped down.
|
|
1359
|
-
**Last reviewed:** 2026-08-29
|
|
1360
|
-
**See also:** `07_Cloud_Infra_Deployment/11_deploy_pipeline_iam_scoping.md`
|
|
1361
|
-
|
|
1362
|
-
### `07_Cloud_Infra_Deployment/03_blue_green_canary_rollback.md`
|
|
1363
|
-
|
|
1364
|
-
> **Authorization reminder:** Only run these checks against systems you own or have explicit written permission to test. Prefer staging/QA over production — several checks here (injection probes, IAM changes, DNS record edits) can have live side effects.
|
|
1365
|
-
|
|
1366
|
-
|
|
1367
|
-
# Blue-Green / Canary Deployment & Rollback
|
|
1368
|
-
|
|
1369
|
-
## What it is
|
|
1370
|
-
Gradually shifting traffic to new versions with the ability to roll back quickly.
|
|
1371
|
-
|
|
1372
|
-
## Why it matters
|
|
1373
|
-
Safe deployment strategy limits blast radius of a bad or vulnerable release.
|
|
1374
|
-
|
|
1375
|
-
## Test checklist
|
|
1376
|
-
- [ ] Confirm rollback can be executed within a defined time target
|
|
1377
|
-
- [ ] Test canary release with a small traffic percentage before full rollout
|
|
1378
|
-
- [ ] Confirm monitoring/alerts are tied to the canary phase specifically
|
|
1379
|
-
- [ ] Test rollback doesn't cause data corruption from schema changes
|
|
1380
|
-
|
|
1381
|
-
## References
|
|
1382
|
-
- Martin Fowler - BlueGreenDeployment (pattern reference)
|
|
1383
|
-
|
|
1384
|
-
**Severity:** High
|
|
1385
|
-
**Example test:** Trigger a rollback in staging and time how long it takes to reach the previous stable version; compare against your defined rollback-time target.
|
|
1386
|
-
**Last reviewed:** 2026-08-29
|
|
1387
|
-
|
|
1388
|
-
### `07_Cloud_Infra_Deployment/04_container_k8s_security.md`
|
|
1389
|
-
|
|
1390
|
-
> **Authorization reminder:** Only run these checks against systems you own or have explicit written permission to test. Prefer staging/QA over production — several checks here (injection probes, IAM changes, DNS record edits) can have live side effects.
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
# Container Orchestration (Kubernetes) Security
|
|
1394
|
-
|
|
1395
|
-
## What it is
|
|
1396
|
-
Hardening the cluster, workloads, and network policies of a container orchestration platform.
|
|
1397
|
-
|
|
1398
|
-
## Why it matters
|
|
1399
|
-
A misconfigured cluster can allow lateral movement across every workload it hosts.
|
|
1400
|
-
|
|
1401
|
-
## Test checklist
|
|
1402
|
-
- [ ] Confirm RBAC is enforced within the cluster, not default-permissive
|
|
1403
|
-
- [ ] Confirm network policies restrict pod-to-pod traffic by default
|
|
1404
|
-
- [ ] Test that secrets aren't stored as plain environment variables in manifests
|
|
1405
|
-
- [ ] Confirm pod security standards (non-root, no privileged containers) are enforced
|
|
1406
|
-
|
|
1407
|
-
## References
|
|
1408
|
-
- NIST SP 800-190
|
|
1409
|
-
- CIS Kubernetes Benchmark
|
|
1410
|
-
|
|
1411
|
-
**Severity:** High
|
|
1412
|
-
**Example test:** Run 'kubectl auth can-i --list' as a low-privilege service account and confirm it cannot perform cluster-admin-level actions.
|
|
1413
|
-
**Last reviewed:** 2026-08-29
|
|
1414
|
-
|
|
1415
|
-
### `07_Cloud_Infra_Deployment/05_cloud_storage_misconfig.md`
|
|
1416
|
-
|
|
1417
|
-
> **Authorization reminder:** Only run these checks against systems you own or have explicit written permission to test. Prefer staging/QA over production — several checks here (injection probes, IAM changes, DNS record edits) can have live side effects.
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
# Cloud Storage Misconfiguration
|
|
1421
|
-
|
|
1422
|
-
## What it is
|
|
1423
|
-
Ensuring object storage (S3-style buckets, blobs) isn't unintentionally public or misconfigured.
|
|
1424
|
-
|
|
1425
|
-
## Why it matters
|
|
1426
|
-
Public storage bucket leaks are one of the most common and damaging cloud misconfigurations.
|
|
1427
|
-
|
|
1428
|
-
## Test checklist
|
|
1429
|
-
- [ ] Confirm buckets default to private with explicit allowlisting for public assets only
|
|
1430
|
-
- [ ] Test bucket policies and ACLs for unintended public read/write
|
|
1431
|
-
- [ ] Confirm logging/versioning enabled on storage containing sensitive data
|
|
1432
|
-
- [ ] Scan periodically for newly created buckets that drift from policy
|
|
1433
|
-
|
|
1434
|
-
## References
|
|
1435
|
-
- AWS/GCP/Azure storage security best practices
|
|
1436
|
-
|
|
1437
|
-
**Severity:** Critical
|
|
1438
|
-
**Example test:** List every storage bucket/container and confirm none allow anonymous public read/write except explicitly intended public assets.
|
|
1439
|
-
**Last reviewed:** 2026-08-29
|
|
1440
|
-
|
|
1441
|
-
### `07_Cloud_Infra_Deployment/06_infra_as_code_scanning.md`
|
|
1442
|
-
|
|
1443
|
-
> **Authorization reminder:** Only run these checks against systems you own or have explicit written permission to test. Prefer staging/QA over production — several checks here (injection probes, IAM changes, DNS record edits) can have live side effects.
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
# Infrastructure-as-Code Scanning
|
|
1447
|
-
|
|
1448
|
-
## What it is
|
|
1449
|
-
Static analysis of Terraform/CloudFormation/Pulumi configs before deployment.
|
|
1450
|
-
|
|
1451
|
-
## Why it matters
|
|
1452
|
-
Misconfigured infra (open security groups, public buckets) is a top cause of breaches.
|
|
1453
|
-
|
|
1454
|
-
## Test checklist
|
|
1455
|
-
- [ ] Run IaC scanning tool (e.g. tfsec/Checkov-style checks) in CI
|
|
1456
|
-
- [ ] Confirm no security groups are open to 0.0.0.0/0 unintentionally
|
|
1457
|
-
- [ ] Confirm storage buckets default to private
|
|
1458
|
-
- [ ] Review IaC changes in PRs the same as application code
|
|
1459
|
-
|
|
1460
|
-
## References
|
|
1461
|
-
- CIS Benchmarks for cloud providers
|
|
1462
|
-
|
|
1463
|
-
**Severity:** High
|
|
1464
|
-
**Example test:** Run an IaC scanner (e.g. tfsec/Checkov) against the current Terraform/CloudFormation config and confirm zero unresolved high/critical findings.
|
|
1465
|
-
**Last reviewed:** 2026-08-29
|
|
1466
|
-
|
|
1467
|
-
### `07_Cloud_Infra_Deployment/07_container_image_security.md`
|
|
1468
|
-
|
|
1469
|
-
> **Authorization reminder:** Only run these checks against systems you own or have explicit written permission to test. Prefer staging/QA over production — several checks here (injection probes, IAM changes, DNS record edits) can have live side effects.
|
|
1470
|
-
|
|
1471
|
-
|
|
1472
|
-
# Container Image Security
|
|
1473
|
-
|
|
1474
|
-
## What it is
|
|
1475
|
-
Ensuring container images are built from minimal, patched, and scanned base images.
|
|
1476
|
-
|
|
1477
|
-
## Why it matters
|
|
1478
|
-
Vulnerable or bloated images increase attack surface significantly.
|
|
1479
|
-
|
|
1480
|
-
## Test checklist
|
|
1481
|
-
- [ ] Scan images for known CVEs before deployment
|
|
1482
|
-
- [ ] Use minimal base images (distroless/alpine) where possible
|
|
1483
|
-
- [ ] Confirm containers don't run as root
|
|
1484
|
-
- [ ] Confirm image tags are pinned (not 'latest') and images are signed
|
|
1485
|
-
|
|
1486
|
-
## References
|
|
1487
|
-
- NIST SP 800-190 Container Security Guide
|
|
1488
|
-
|
|
1489
|
-
**Severity:** High
|
|
1490
|
-
**Example test:** Run a CVE scanner (e.g. Trivy/Grype) against the production container image and confirm no unpatched critical CVEs, and that it isn't tagged 'latest'.
|
|
1491
|
-
**Last reviewed:** 2026-08-29
|
|
1492
|
-
|
|
1493
|
-
### `07_Cloud_Infra_Deployment/08_network_segmentation_cloud.md`
|
|
1494
|
-
|
|
1495
|
-
> **Authorization reminder:** Only run these checks against systems you own or have explicit written permission to test. Prefer staging/QA over production — several checks here (injection probes, IAM changes, DNS record edits) can have live side effects.
|
|
1496
|
-
|
|
1497
|
-
|
|
1498
|
-
# Cloud Network Segmentation
|
|
1499
|
-
|
|
1500
|
-
## What it is
|
|
1501
|
-
Isolating workloads into separate network segments/VPCs based on trust level.
|
|
1502
|
-
|
|
1503
|
-
## Why it matters
|
|
1504
|
-
Flat cloud networks let a single compromised service reach everything else.
|
|
1505
|
-
|
|
1506
|
-
## Test checklist
|
|
1507
|
-
- [ ] Confirm production workloads are segmented from lower-trust environments
|
|
1508
|
-
- [ ] Test that a compromised low-trust service can't reach sensitive internal services directly
|
|
1509
|
-
- [ ] Confirm security groups/firewall rules follow least-privilege, not broad internal-only allow
|
|
1510
|
-
- [ ] Review peering/VPN connections for unintended over-broad access
|
|
1511
|
-
|
|
1512
|
-
## References
|
|
1513
|
-
- NIST SP 800-41 Firewall/Segmentation guidance
|
|
1514
|
-
|
|
1515
|
-
**Severity:** High
|
|
1516
|
-
**Example test:** From a low-trust workload/VPC, attempt to reach a sensitive internal service directly and confirm network policy blocks it.
|
|
1517
|
-
**Last reviewed:** 2026-08-29
|
|
1518
|
-
|
|
1519
|
-
### `07_Cloud_Infra_Deployment/09_post_deploy_monitoring.md`
|
|
1520
|
-
|
|
1521
|
-
> **Authorization reminder:** Only run these checks against systems you own or have explicit written permission to test. Prefer staging/QA over production — several checks here (injection probes, IAM changes, DNS record edits) can have live side effects.
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
# Post-Deployment Monitoring
|
|
1525
|
-
|
|
1526
|
-
## What it is
|
|
1527
|
-
Actively watching key metrics/logs immediately after a release goes live.
|
|
1528
|
-
|
|
1529
|
-
## Why it matters
|
|
1530
|
-
Many issues (errors, latency spikes, security alerts) surface only under real production traffic.
|
|
1531
|
-
|
|
1532
|
-
## Test checklist
|
|
1533
|
-
- [ ] Error rate and latency dashboards checked immediately after deploy
|
|
1534
|
-
- [ ] Security alerting active during the post-deploy window
|
|
1535
|
-
- [ ] Defined rollback trigger thresholds (e.g. error rate > X% triggers auto-rollback)
|
|
1536
|
-
- [ ] On-call owner assigned for each deployment
|
|
1537
|
-
|
|
1538
|
-
## References
|
|
1539
|
-
- Google SRE Book - Release Engineering chapter (as reference pattern)
|
|
1540
|
-
|
|
1541
|
-
**Severity:** Medium
|
|
1542
|
-
**Example test:** During the next deploy, confirm an on-call owner is actively watching error-rate/latency dashboards for the defined post-deploy window.
|
|
1543
|
-
**Last reviewed:** 2026-08-29
|
|
1544
|
-
|
|
1545
|
-
### `07_Cloud_Infra_Deployment/10_feature_flag_safety.md`
|
|
1546
|
-
|
|
1547
|
-
> **Authorization reminder:** Only run these checks against systems you own or have explicit written permission to test. Prefer staging/QA over production — several checks here (injection probes, IAM changes, DNS record edits) can have live side effects.
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
# Feature Flags & Kill Switches
|
|
1551
|
-
|
|
1552
|
-
## What it is
|
|
1553
|
-
Using feature flags to enable instant disabling of risky features without a full redeploy.
|
|
1554
|
-
|
|
1555
|
-
## Why it matters
|
|
1556
|
-
Reduces time-to-mitigate when a new feature turns out to have a security or stability issue.
|
|
1557
|
-
|
|
1558
|
-
## Test checklist
|
|
1559
|
-
- [ ] Confirm high-risk features are gated behind a flag with a kill switch
|
|
1560
|
-
- [ ] Test that toggling a flag off actually disables the code path immediately
|
|
1561
|
-
- [ ] Confirm flag management access is restricted to authorized roles
|
|
1562
|
-
- [ ] Test flag state doesn't leak sensitive info to unauthorized users (e.g. flag payload exposed client-side)
|
|
1563
|
-
|
|
1564
|
-
## References
|
|
1565
|
-
- LaunchDarkly / feature flag security best practices (as reference pattern)
|
|
1566
|
-
|
|
1567
|
-
**Severity:** Medium
|
|
1568
|
-
**Example test:** Toggle a high-risk feature flag off in staging and confirm the code path is actually disabled immediately, not just hidden in the UI.
|
|
1569
|
-
**Last reviewed:** 2026-08-29
|
|
1570
|
-
|
|
1571
|
-
### `07_Cloud_Infra_Deployment/11_deploy_pipeline_iam_scoping.md`
|
|
1572
|
-
|
|
1573
|
-
> **Authorization reminder:** Only run these checks against systems you own or have explicit written permission to test. Prefer staging/QA over production — several checks here (injection probes, IAM changes, DNS record edits) can have live side effects.
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
# Least-Privilege IAM for Deployment
|
|
1577
|
-
|
|
1578
|
-
## What it is
|
|
1579
|
-
Scoping deployment pipeline and service credentials to the minimum permissions needed.
|
|
1580
|
-
|
|
1581
|
-
## Why it matters
|
|
1582
|
-
Overprivileged deploy credentials turn a pipeline compromise into a full account compromise.
|
|
1583
|
-
|
|
1584
|
-
## Test checklist
|
|
1585
|
-
- [ ] Review IAM roles used by CI/CD for least privilege
|
|
1586
|
-
- [ ] Confirm deploy credentials are short-lived/rotated, not long-lived static keys
|
|
1587
|
-
- [ ] Test that a compromised pipeline token can't access unrelated resources
|
|
1588
|
-
- [ ] Separate deploy permissions per environment (staging deployer can't touch prod)
|
|
1589
|
-
|
|
1590
|
-
## References
|
|
1591
|
-
- AWS/GCP/Azure IAM best practices documentation
|
|
1592
|
-
|
|
1593
|
-
**Severity:** Critical
|
|
1594
|
-
**Example test:** Inspect the CI/CD service account's IAM role and confirm a staging-deploy credential cannot touch production resources.
|
|
1595
|
-
**Last reviewed:** 2026-08-29
|
|
1596
|
-
**See also:** `07_Cloud_Infra_Deployment/02_iam_policy_review.md`
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
---
|
|
1600
|
-
|
|
1601
|
-
## 08_Release_Engineering_Version_Control — Release Engineering & Version Control
|
|
1602
|
-
|
|
1603
|
-
### `08_Release_Engineering_Version_Control/01_secure_coding_guidelines.md`
|
|
1604
|
-
|
|
1605
|
-
# Secure Coding Guidelines
|
|
1606
|
-
|
|
1607
|
-
## What it is
|
|
1608
|
-
Personal/team reference of secure coding practices by language/framework.
|
|
1609
|
-
|
|
1610
|
-
## Why it matters
|
|
1611
|
-
Prevents vulnerabilities from being written in the first place.
|
|
1612
|
-
|
|
1613
|
-
## Test checklist
|
|
1614
|
-
- [ ] Language-specific secure coding cheat sheet linked
|
|
1615
|
-
- [ ] Code review checklist includes security items
|
|
1616
|
-
- [ ] Common anti-patterns documented with examples
|
|
1617
|
-
|
|
1618
|
-
## References
|
|
1619
|
-
- OWASP Secure Coding Practices Quick Reference
|
|
1620
|
-
|
|
1621
|
-
**Severity:** Low
|
|
1622
|
-
**Example test:** Confirm the team's secure-coding cheat sheet is linked from the PR template/onboarding docs, not just filed away unused.
|
|
1623
|
-
**Last reviewed:** 2026-08-29
|
|
1624
|
-
|
|
1625
|
-
### `08_Release_Engineering_Version_Control/02_semantic_versioning.md`
|
|
1626
|
-
|
|
1627
|
-
# Semantic Versioning
|
|
1628
|
-
|
|
1629
|
-
## What it is
|
|
1630
|
-
Using a consistent MAJOR.MINOR.PATCH scheme so version numbers communicate change impact.
|
|
1631
|
-
|
|
1632
|
-
## Why it matters
|
|
1633
|
-
Inconsistent versioning makes it hard to know if an update is safe to deploy or breaks something.
|
|
1634
|
-
|
|
1635
|
-
## Test checklist
|
|
1636
|
-
- [ ] Confirm a consistent versioning scheme is used across app/API
|
|
1637
|
-
- [ ] Breaking changes always bump MAJOR version
|
|
1638
|
-
- [ ] Version exposed in API responses/headers doesn't leak internal build details unnecessarily
|
|
1639
|
-
- [ ] Clients can detect and handle version mismatches gracefully
|
|
1640
|
-
|
|
1641
|
-
## References
|
|
1642
|
-
- Semantic Versioning 2.0.0 (semver.org)
|
|
1643
|
-
|
|
1644
|
-
**Severity:** Low
|
|
1645
|
-
**Example test:** Check the last 3 releases and confirm any breaking change actually bumped the MAJOR version.
|
|
1646
|
-
**Last reviewed:** 2026-08-29
|
|
1647
|
-
|
|
1648
|
-
### `08_Release_Engineering_Version_Control/03_branch_protection_signed_commits.md`
|
|
1649
|
-
|
|
1650
|
-
# Branch Protection & Signed Commits
|
|
1651
|
-
|
|
1652
|
-
## What it is
|
|
1653
|
-
Enforcing required reviews, status checks, and commit/tag signing on protected branches.
|
|
1654
|
-
|
|
1655
|
-
## Why it matters
|
|
1656
|
-
Prevents unreviewed or unverified code from reaching main/release branches.
|
|
1657
|
-
|
|
1658
|
-
## Test checklist
|
|
1659
|
-
- [ ] Main/release branches require PR review before merge
|
|
1660
|
-
- [ ] Required status checks (tests, security scans) block merge on failure
|
|
1661
|
-
- [ ] Commits/tags are signed (GPG/SSH) and signature verification enforced
|
|
1662
|
-
- [ ] Force-push and history rewriting disabled on protected branches
|
|
1663
|
-
|
|
1664
|
-
## References
|
|
1665
|
-
- GitHub/GitLab branch protection documentation
|
|
1666
|
-
|
|
1667
|
-
**Severity:** High
|
|
1668
|
-
**Example test:** Attempt to push directly to main without a PR/review and confirm the push is rejected by branch protection.
|
|
1669
|
-
**Last reviewed:** 2026-08-29
|
|
1670
|
-
|
|
1671
|
-
### `08_Release_Engineering_Version_Control/04_artifact_integrity_provenance.md`
|
|
1672
|
-
|
|
1673
|
-
# Build Artifact Integrity & Provenance
|
|
1674
|
-
|
|
1675
|
-
## What it is
|
|
1676
|
-
Verifying that the artifact being deployed is exactly what was built and reviewed, unaltered.
|
|
1677
|
-
|
|
1678
|
-
## Why it matters
|
|
1679
|
-
Without provenance checks, a compromised build step could swap in a tampered artifact.
|
|
1680
|
-
|
|
1681
|
-
## Test checklist
|
|
1682
|
-
- [ ] Build artifacts are checksummed/signed at build time
|
|
1683
|
-
- [ ] Deployment pipeline verifies signature/checksum before deploying
|
|
1684
|
-
- [ ] SBOM (Software Bill of Materials) generated per release
|
|
1685
|
-
- [ ] Chain of custody from commit -> build -> artifact -> deploy is traceable
|
|
1686
|
-
|
|
1687
|
-
## References
|
|
1688
|
-
- SLSA Framework (Supply-chain Levels for Software Artifacts)
|
|
1689
|
-
|
|
1690
|
-
**Severity:** High
|
|
1691
|
-
**Example test:** Verify the checksum/signature of the last deployed artifact against the one produced by the build pipeline and confirm they match.
|
|
1692
|
-
**Last reviewed:** 2026-08-29
|
|
1693
|
-
|
|
1694
|
-
### `08_Release_Engineering_Version_Control/05_cicd_security.md`
|
|
1695
|
-
|
|
1696
|
-
# CI/CD Pipeline Security
|
|
1697
|
-
|
|
1698
|
-
## What it is
|
|
1699
|
-
Securing the build/release pipeline itself.
|
|
1700
|
-
|
|
1701
|
-
## Why it matters
|
|
1702
|
-
A compromised pipeline can inject malicious code into every release.
|
|
1703
|
-
|
|
1704
|
-
## Test checklist
|
|
1705
|
-
- [ ] Pipeline secrets stored in a vault, not plaintext config
|
|
1706
|
-
- [ ] Build artifacts signed and verified
|
|
1707
|
-
- [ ] Least-privilege access to pipeline configuration
|
|
1708
|
-
- [ ] Branch protection and required review before merge to main
|
|
1709
|
-
|
|
1710
|
-
## References
|
|
1711
|
-
- OWASP CI/CD Security Cheat Sheet
|
|
1712
|
-
|
|
1713
|
-
**Severity:** Critical
|
|
1714
|
-
**Example test:** Check the CI/CD config for plaintext secrets and confirm all credentials are pulled from a vault/secrets manager instead.
|
|
1715
|
-
**Last reviewed:** 2026-08-29
|
|
1716
|
-
|
|
1717
|
-
### `08_Release_Engineering_Version_Control/06_code_review_checklist.md`
|
|
1718
|
-
|
|
1719
|
-
# Security Code Review Checklist
|
|
1720
|
-
|
|
1721
|
-
## What it is
|
|
1722
|
-
Personal checklist to run through during code review.
|
|
1723
|
-
|
|
1724
|
-
## Why it matters
|
|
1725
|
-
Catches issues before they reach production.
|
|
1726
|
-
|
|
1727
|
-
## Test checklist
|
|
1728
|
-
- [ ] Input validation present on all external input
|
|
1729
|
-
- [ ] AuthZ checks present on every new endpoint
|
|
1730
|
-
- [ ] No secrets or credentials in diff
|
|
1731
|
-
- [ ] Error handling doesn't leak sensitive info
|
|
1732
|
-
|
|
1733
|
-
## References
|
|
1734
|
-
- OWASP Code Review Guide
|
|
1735
|
-
|
|
1736
|
-
**Severity:** Medium
|
|
1737
|
-
**Example test:** Pull the last 5 merged PRs and confirm each one's diff was checked against input validation, authZ, and no-secrets-in-diff criteria.
|
|
1738
|
-
**Last reviewed:** 2026-08-29
|
|
1739
|
-
|
|
1740
|
-
### `08_Release_Engineering_Version_Control/07_changelog_release_notes.md`
|
|
1741
|
-
|
|
1742
|
-
# Changelog & Release Notes
|
|
1743
|
-
|
|
1744
|
-
## What it is
|
|
1745
|
-
Documenting what changed in each release, including security-relevant fixes.
|
|
1746
|
-
|
|
1747
|
-
## Why it matters
|
|
1748
|
-
Undocumented changes make it hard to assess risk before upgrading or to respond to incidents.
|
|
1749
|
-
|
|
1750
|
-
## Test checklist
|
|
1751
|
-
- [ ] Every release has a changelog entry before deployment
|
|
1752
|
-
- [ ] Security fixes are noted (with appropriate disclosure timing) without over-detailing exploit specifics
|
|
1753
|
-
- [ ] Changelog is reviewed as part of the release checklist
|
|
1754
|
-
- [ ] Rollback notes/known issues included where relevant
|
|
1755
|
-
|
|
1756
|
-
## References
|
|
1757
|
-
- Keep a Changelog (keepachangelog.com)
|
|
1758
|
-
|
|
1759
|
-
**Severity:** Low
|
|
1760
|
-
**Example test:** Confirm the most recent release has a changelog entry, including any security-relevant fix noted without disclosing exploit specifics.
|
|
1761
|
-
**Last reviewed:** 2026-08-29
|
|
1762
|
-
|
|
1763
|
-
### `08_Release_Engineering_Version_Control/08_deprecated_version_sunset_policy.md`
|
|
1764
|
-
|
|
1765
|
-
# Deprecated Version & Sunset Policy
|
|
1766
|
-
|
|
1767
|
-
## What it is
|
|
1768
|
-
Defining how long old API/app versions stay supported and how users are migrated off them.
|
|
1769
|
-
|
|
1770
|
-
## Why it matters
|
|
1771
|
-
Indefinitely supporting old versions keeps unpatched attack surface alive.
|
|
1772
|
-
|
|
1773
|
-
## Test checklist
|
|
1774
|
-
- [ ] Support lifecycle/EOL dates published for each major version
|
|
1775
|
-
- [ ] Deprecation warnings (headers, in-app notices) surfaced ahead of sunset
|
|
1776
|
-
- [ ] Confirm sunset versions are actually disabled, not left silently reachable
|
|
1777
|
-
- [ ] Migration path documented for users on deprecated versions
|
|
1778
|
-
|
|
1779
|
-
## References
|
|
1780
|
-
- API Deprecation best practices (Sunset HTTP header - RFC 8594)
|
|
1781
|
-
|
|
1782
|
-
**Severity:** Medium
|
|
1783
|
-
**Example test:** Call a documented end-of-life API version and confirm it's actually disabled, not silently still functional.
|
|
1784
|
-
**Last reviewed:** 2026-08-29
|
|
1785
|
-
**See also:** `09_Release_Pipeline_Stages/08_deprecation_end_of_life.md`
|
|
1786
|
-
|
|
1787
|
-
|
|
1788
|
-
---
|
|
1789
|
-
|
|
1790
|
-
## 09_Release_Pipeline_Stages — Release Pipeline Stages
|
|
1791
|
-
|
|
1792
|
-
### `09_Release_Pipeline_Stages/01_local_dev_testing.md`
|
|
1793
|
-
|
|
1794
|
-
# Stage 1: Local / Developer Testing
|
|
1795
|
-
|
|
1796
|
-
## What it is
|
|
1797
|
-
Testing on a developer's own machine or local environment before anything is shared.
|
|
1798
|
-
|
|
1799
|
-
## Why it matters
|
|
1800
|
-
Cheapest place to catch bugs and obvious security issues, before they cost more downstream.
|
|
1801
|
-
|
|
1802
|
-
## Test checklist
|
|
1803
|
-
- [ ] Unit and integration tests pass locally
|
|
1804
|
-
- [ ] Security linters/SAST run locally or in pre-commit hooks
|
|
1805
|
-
- [ ] No real production data or credentials used locally
|
|
1806
|
-
- [ ] Local environment config clearly separated from staging/prod
|
|
1807
|
-
|
|
1808
|
-
## References
|
|
1809
|
-
- OWASP SAMM - Verification practices
|
|
1810
|
-
|
|
1811
|
-
**Severity:** Low
|
|
1812
|
-
**Example test:** Confirm a fresh local dev environment setup never requires copying real production credentials or data.
|
|
1813
|
-
**Last reviewed:** 2026-08-29
|
|
1814
|
-
|
|
1815
|
-
### `09_Release_Pipeline_Stages/02_internal_qa_testing.md`
|
|
1816
|
-
|
|
1817
|
-
# Stage 2: Internal QA Testing
|
|
1818
|
-
|
|
1819
|
-
## What it is
|
|
1820
|
-
Testing by an internal team in a shared, controlled environment.
|
|
1821
|
-
|
|
1822
|
-
## Why it matters
|
|
1823
|
-
Catches integration issues and regressions before any external users are exposed.
|
|
1824
|
-
|
|
1825
|
-
## Test checklist
|
|
1826
|
-
- [ ] Dedicated QA environment isolated from production
|
|
1827
|
-
- [ ] Synthetic/anonymized test data used, not real customer PII
|
|
1828
|
-
- [ ] Manual + automated test suites executed and results recorded
|
|
1829
|
-
- [ ] Security checklist (this whole folder) run against the QA build
|
|
1830
|
-
|
|
1831
|
-
## References
|
|
1832
|
-
- ISTQB Testing Practices (as reference pattern)
|
|
1833
|
-
|
|
1834
|
-
**Severity:** Medium
|
|
1835
|
-
**Example test:** Confirm the QA environment's test data is synthetic/anonymized, not a raw copy of production customer PII.
|
|
1836
|
-
**Last reviewed:** 2026-08-29
|
|
1837
|
-
|
|
1838
|
-
### `09_Release_Pipeline_Stages/03_closed_beta_group_testing.md`
|
|
1839
|
-
|
|
1840
|
-
# Stage 3: Closed Beta / Group Testing
|
|
1841
|
-
|
|
1842
|
-
## What it is
|
|
1843
|
-
Releasing to a small, known group of external or trusted users before general availability.
|
|
1844
|
-
|
|
1845
|
-
## Why it matters
|
|
1846
|
-
Validates real-world usage patterns and gathers feedback while limiting exposure if something goes wrong.
|
|
1847
|
-
|
|
1848
|
-
## Test checklist
|
|
1849
|
-
- [ ] Participants are known/vetted and under appropriate agreement (NDA/terms) if needed
|
|
1850
|
-
- [ ] Feedback and bug-report channel set up and monitored actively
|
|
1851
|
-
- [ ] Feature flags allow disabling the beta feature instantly if issues arise
|
|
1852
|
-
- [ ] Monitoring/alerting active specifically for the beta cohort's traffic
|
|
1853
|
-
- [ ] Clear criteria defined for 'graduating' from beta to wider rollout
|
|
1854
|
-
|
|
1855
|
-
## References
|
|
1856
|
-
- Google/Microsoft beta program practices (as reference pattern)
|
|
1857
|
-
|
|
1858
|
-
**Severity:** Medium
|
|
1859
|
-
**Example test:** Confirm the beta feature flag can be disabled instantly and test that toggling it off removes it from a live beta user's session.
|
|
1860
|
-
**Last reviewed:** 2026-08-29
|
|
1861
|
-
|
|
1862
|
-
### `09_Release_Pipeline_Stages/04_staged_canary_rollout.md`
|
|
1863
|
-
|
|
1864
|
-
# Stage 4: Staged / Canary Rollout
|
|
1865
|
-
|
|
1866
|
-
## What it is
|
|
1867
|
-
Gradually increasing the percentage of real production traffic hitting the new release.
|
|
1868
|
-
|
|
1869
|
-
## Why it matters
|
|
1870
|
-
Limits blast radius — a bad release only affects a small slice of users before full rollout.
|
|
1871
|
-
|
|
1872
|
-
## Test checklist
|
|
1873
|
-
- [ ] Rollout percentage increased in defined steps (e.g. 1% -> 10% -> 50% -> 100%)
|
|
1874
|
-
- [ ] Automated rollback triggers defined (error rate, latency thresholds)
|
|
1875
|
-
- [ ] Canary cohort monitored separately from the rest of production traffic
|
|
1876
|
-
- [ ] Sufficient bake time at each stage before proceeding to the next
|
|
1877
|
-
|
|
1878
|
-
## References
|
|
1879
|
-
- Google SRE Book - Canary releases
|
|
1880
|
-
|
|
1881
|
-
**Severity:** High
|
|
1882
|
-
**Example test:** Confirm the automated rollback trigger (e.g. error-rate threshold) actually fires a rollback during the canary phase, not just logs a warning.
|
|
1883
|
-
**Last reviewed:** 2026-08-29
|
|
1884
|
-
|
|
1885
|
-
### `09_Release_Pipeline_Stages/05_general_availability_release.md`
|
|
1886
|
-
|
|
1887
|
-
# Stage 5: General Availability (GA) Release
|
|
1888
|
-
|
|
1889
|
-
## What it is
|
|
1890
|
-
Making the release available to 100% of users.
|
|
1891
|
-
|
|
1892
|
-
## Why it matters
|
|
1893
|
-
The point of highest exposure — everything from earlier stages should already be validated.
|
|
1894
|
-
|
|
1895
|
-
## Test checklist
|
|
1896
|
-
- [ ] All earlier stage criteria met and signed off
|
|
1897
|
-
- [ ] Release communication sent to relevant stakeholders/users
|
|
1898
|
-
- [ ] Support/on-call team briefed and ready
|
|
1899
|
-
- [ ] Rollback plan still available even at 100% rollout
|
|
1900
|
-
|
|
1901
|
-
## References
|
|
1902
|
-
- ITIL Release Management (as reference pattern)
|
|
1903
|
-
|
|
1904
|
-
**Severity:** Medium
|
|
1905
|
-
**Example test:** Confirm a rollback plan and on-call briefing exist and are actionable even after reaching 100% rollout.
|
|
1906
|
-
**Last reviewed:** 2026-08-29
|
|
1907
|
-
|
|
1908
|
-
### `09_Release_Pipeline_Stages/06_post_release_monitoring_support.md`
|
|
1909
|
-
|
|
1910
|
-
# Stage 6: Post-Release Monitoring & Support
|
|
1911
|
-
|
|
1912
|
-
## What it is
|
|
1913
|
-
Actively watching the release in production and being ready to respond quickly.
|
|
1914
|
-
|
|
1915
|
-
## Why it matters
|
|
1916
|
-
Most real-world issues surface only under full production load and diverse usage patterns.
|
|
1917
|
-
|
|
1918
|
-
## Test checklist
|
|
1919
|
-
- [ ] Dashboards actively watched for a defined post-release window
|
|
1920
|
-
- [ ] Support team has an escalation path for release-related issues
|
|
1921
|
-
- [ ] Hotfix process defined and tested for critical post-release bugs
|
|
1922
|
-
- [ ] User-reported issues are triaged with a defined SLA
|
|
1923
|
-
|
|
1924
|
-
## References
|
|
1925
|
-
- Google SRE Book - Release Engineering
|
|
1926
|
-
|
|
1927
|
-
**Severity:** Medium
|
|
1928
|
-
**Example test:** Confirm there is a defined SLA for triaging user-reported issues after a release and that it's actually being met on recent releases.
|
|
1929
|
-
**Last reviewed:** 2026-08-29
|
|
1930
|
-
|
|
1931
|
-
### `09_Release_Pipeline_Stages/07_maintenance_patch_management.md`
|
|
1932
|
-
|
|
1933
|
-
# Stage 7: Maintenance & Patch Management
|
|
1934
|
-
|
|
1935
|
-
## What it is
|
|
1936
|
-
Ongoing patching of the release for bugs and security vulnerabilities after GA.
|
|
1937
|
-
|
|
1938
|
-
## Why it matters
|
|
1939
|
-
Software degrades in security over time as new vulnerabilities are discovered in its dependencies.
|
|
1940
|
-
|
|
1941
|
-
## Test checklist
|
|
1942
|
-
- [ ] Patch cadence defined (e.g. critical CVEs patched within X days)
|
|
1943
|
-
- [ ] Vulnerability scanning runs continuously, not just at release time
|
|
1944
|
-
- [ ] Patch releases go through the same pipeline stages (scaled down as appropriate)
|
|
1945
|
-
- [ ] Emergency patch process exists for actively exploited vulnerabilities
|
|
1946
|
-
|
|
1947
|
-
## References
|
|
1948
|
-
- NIST SP 800-40 Patch Management Guide
|
|
1949
|
-
|
|
1950
|
-
**Severity:** High
|
|
1951
|
-
**Example test:** Pick a recent critical CVE affecting a used dependency and confirm it was patched within the defined SLA window.
|
|
1952
|
-
**Last reviewed:** 2026-08-29
|
|
1953
|
-
|
|
1954
|
-
### `09_Release_Pipeline_Stages/08_deprecation_end_of_life.md`
|
|
1955
|
-
|
|
1956
|
-
# Stage 8: Deprecation & End-of-Life
|
|
1957
|
-
|
|
1958
|
-
## What it is
|
|
1959
|
-
Formally retiring an old version/feature once it's no longer safe or practical to support.
|
|
1960
|
-
|
|
1961
|
-
## Why it matters
|
|
1962
|
-
The final stage of the lifecycle — closes the loop back to Q06 (sunset policy).
|
|
1963
|
-
|
|
1964
|
-
## Test checklist
|
|
1965
|
-
- [ ] EOL date communicated well in advance
|
|
1966
|
-
- [ ] Users migrated or forcibly upgraded before EOL date
|
|
1967
|
-
- [ ] Deprecated infrastructure/endpoints actually decommissioned, not left dormant
|
|
1968
|
-
- [ ] Post-mortem/retrospective captured for lessons learned across the full lifecycle
|
|
1969
|
-
|
|
1970
|
-
## References
|
|
1971
|
-
- API Deprecation best practices (Sunset HTTP header - RFC 8594)
|
|
1972
|
-
|
|
1973
|
-
**Severity:** Medium
|
|
1974
|
-
**Example test:** Confirm a recently EOL'd endpoint/feature is fully decommissioned (404/410), not left dormant and reachable.
|
|
1975
|
-
**Last reviewed:** 2026-08-29
|
|
1976
|
-
**See also:** `08_Release_Engineering_Version_Control/08_deprecated_version_sunset_policy.md`
|
|
1977
|
-
|
|
1978
|
-
|
|
1979
|
-
---
|
|
1980
|
-
|
|
1981
|
-
## 10_Dependency_Supply_Chain — Dependency & Supply Chain
|
|
1982
|
-
|
|
1983
|
-
### `10_Dependency_Supply_Chain/01_backend_dependency_scanning.md`
|
|
1984
|
-
|
|
1985
|
-
# Dependency & SCA Scanning
|
|
1986
|
-
|
|
1987
|
-
## What it is
|
|
1988
|
-
Tracking and scanning third-party libraries for known vulnerabilities.
|
|
1989
|
-
|
|
1990
|
-
## Why it matters
|
|
1991
|
-
Most breaches originate from vulnerable dependencies, not custom code.
|
|
1992
|
-
|
|
1993
|
-
## Test checklist
|
|
1994
|
-
- [ ] Automated SCA scanning in CI/CD
|
|
1995
|
-
- [ ] SBOM generated for releases
|
|
1996
|
-
- [ ] Policy for patching critical CVEs within SLA
|
|
1997
|
-
|
|
1998
|
-
## References
|
|
1999
|
-
- OWASP Dependency-Check
|
|
2000
|
-
|
|
2001
|
-
**Severity:** High
|
|
2002
|
-
**Example test:** Run the SCA scanner manually against the current backend dependency tree and confirm it matches what CI reports, with no critical CVEs unpatched past SLA.
|
|
2003
|
-
**Last reviewed:** 2026-08-29
|
|
2004
|
-
|
|
2005
|
-
### `10_Dependency_Supply_Chain/02_dependency_version_pinning.md`
|
|
2006
|
-
|
|
2007
|
-
# Dependency Version Pinning
|
|
2008
|
-
|
|
2009
|
-
## What it is
|
|
2010
|
-
Locking dependencies to exact, reviewed versions instead of open ranges.
|
|
2011
|
-
|
|
2012
|
-
## Why it matters
|
|
2013
|
-
Unpinned dependencies can silently pull in a compromised or breaking new version.
|
|
2014
|
-
|
|
2015
|
-
## Test checklist
|
|
2016
|
-
- [ ] Lockfiles (package-lock.json, poetry.lock, etc.) committed and enforced in CI
|
|
2017
|
-
- [ ] Dependency updates go through review, not auto-pulled at build time
|
|
2018
|
-
- [ ] Confirm build fails if lockfile and manifest are out of sync
|
|
2019
|
-
- [ ] Critical security patches have an expedited update path
|
|
2020
|
-
|
|
2021
|
-
## References
|
|
2022
|
-
- OWASP Dependency-Check
|
|
2023
|
-
|
|
2024
|
-
**Severity:** Medium
|
|
2025
|
-
**Example test:** Delete the lockfile locally and reinstall; confirm CI fails the build if the regenerated lockfile differs from the committed one.
|
|
2026
|
-
**Last reviewed:** 2026-08-29
|
|
2027
|
-
|
|
2028
|
-
### `10_Dependency_Supply_Chain/03_frontend_dependency_scanning.md`
|
|
2029
|
-
|
|
2030
|
-
# Frontend Dependency Scanning
|
|
2031
|
-
|
|
2032
|
-
## What it is
|
|
2033
|
-
Scanning npm/yarn packages used in the UI layer for known vulnerabilities and supply-chain risk.
|
|
2034
|
-
|
|
2035
|
-
## Why it matters
|
|
2036
|
-
Frontend supply-chain attacks (malicious npm packages) are a growing attack vector.
|
|
2037
|
-
|
|
2038
|
-
## Test checklist
|
|
2039
|
-
- [ ] Run npm audit / yarn audit as part of CI
|
|
2040
|
-
- [ ] Pin dependency versions and review lockfile diffs on update
|
|
2041
|
-
- [ ] Check for typosquatted or newly-published packages before adding
|
|
2042
|
-
- [ ] Monitor for post-install scripts in dependencies
|
|
2043
|
-
|
|
2044
|
-
## References
|
|
2045
|
-
- OWASP Dependency-Check
|
|
2046
|
-
- npm audit docs
|
|
2047
|
-
|
|
2048
|
-
**Severity:** Medium
|
|
2049
|
-
**Example test:** Run npm audit / yarn audit and manually review any newly added package for typosquatting risk or suspicious post-install scripts.
|
|
2050
|
-
**Last reviewed:** 2026-08-29
|
|
2051
|
-
|
|
2052
|
-
|
|
2053
|
-
---
|
|
2054
|
-
|
|
2055
|
-
## 11_Logging_Monitoring — Logging & Monitoring
|
|
2056
|
-
|
|
2057
|
-
### `11_Logging_Monitoring/01_audit_logging.md`
|
|
2058
|
-
|
|
2059
|
-
# Audit Logging
|
|
2060
|
-
|
|
2061
|
-
## What it is
|
|
2062
|
-
An immutable record of who did what, when, where, and with what result, across
|
|
2063
|
-
both API calls and general system actions.
|
|
2064
|
-
|
|
2065
|
-
## Why it matters
|
|
2066
|
-
Required for forensics, compliance, and incident response — and for APIs
|
|
2067
|
-
specifically, it's the only reliable way to reconstruct who accessed or
|
|
2068
|
-
changed what through a given endpoint.
|
|
2069
|
-
|
|
2070
|
-
## Test checklist
|
|
2071
|
-
- [ ] Captures actor, action, timestamp, source IP, and result for every sensitive action (API and non-API)
|
|
2072
|
-
- [ ] Logs are tamper-evident / write-once and stored separately with restricted write access
|
|
2073
|
-
- [ ] Sensitive data (secrets, full PII) is redacted from log entries
|
|
2074
|
-
- [ ] Retention period meets compliance requirements
|
|
2075
|
-
- [ ] Regularly tested for completeness — can you fully reconstruct an incident from the logs alone?
|
|
2076
|
-
|
|
2077
|
-
## References
|
|
2078
|
-
- OWASP Logging Cheat Sheet
|
|
2079
|
-
- NIST SP 800-92
|
|
2080
|
-
|
|
2081
|
-
**Severity:** High
|
|
2082
|
-
**Example test:** Perform a sensitive action (e.g. role change) and confirm the audit log captures actor, action, timestamp, source IP, and result — then try to alter that entry.
|
|
2083
|
-
**Last reviewed:** 2026-08-29
|
|
2084
|
-
|
|
2085
|
-
### `11_Logging_Monitoring/02_log_injection.md`
|
|
2086
|
-
|
|
2087
|
-
# Log Injection (added)
|
|
2088
|
-
|
|
2089
|
-
## What it is
|
|
2090
|
-
Untrusted input written into logs can forge entries or break parsers.
|
|
2091
|
-
|
|
2092
|
-
## Why it matters
|
|
2093
|
-
Can be used to cover tracks or attack log analysis tooling.
|
|
2094
|
-
|
|
2095
|
-
## Test checklist
|
|
2096
|
-
- [ ] Sanitize/encode user input before writing to logs
|
|
2097
|
-
- [ ] Avoid free-text injection into structured log formats
|
|
2098
|
-
- [ ] Test log viewer for stored XSS if logs are viewed in a UI
|
|
2099
|
-
|
|
2100
|
-
## References
|
|
2101
|
-
- OWASP Log Injection reference
|
|
2102
|
-
|
|
2103
|
-
**Severity:** Medium
|
|
2104
|
-
**Example test:** Submit a username or field containing newline characters and fake log-line content, then confirm it doesn't forge a fake log entry when written.
|
|
2105
|
-
**Last reviewed:** 2026-08-29
|
|
2106
|
-
|
|
2107
|
-
### `11_Logging_Monitoring/03_siem_alerting.md`
|
|
2108
|
-
|
|
2109
|
-
# SIEM & Alerting (added)
|
|
2110
|
-
|
|
2111
|
-
## What it is
|
|
2112
|
-
Centralized log aggregation and automated alerting on suspicious patterns.
|
|
2113
|
-
|
|
2114
|
-
## Why it matters
|
|
2115
|
-
Turns raw logs into actionable detection.
|
|
2116
|
-
|
|
2117
|
-
## Test checklist
|
|
2118
|
-
- [ ] Critical events (auth failures, privilege changes) trigger alerts
|
|
2119
|
-
- [ ] Alert thresholds tuned to reduce noise/fatigue
|
|
2120
|
-
- [ ] Incident response runbook linked to each alert type
|
|
2121
|
-
|
|
2122
|
-
## References
|
|
2123
|
-
- MITRE ATT&CK for detection mapping
|
|
2124
|
-
|
|
2125
|
-
**Severity:** Medium
|
|
2126
|
-
**Example test:** Trigger 10 failed logins for one account in a short window and confirm a SIEM alert fires with a linked response runbook.
|
|
2127
|
-
**Last reviewed:** 2026-08-29
|
|
2128
|
-
|
|
2129
|
-
|
|
2130
|
-
---
|
|
2131
|
-
|
|
2132
|
-
## 12_Third_Party_Integration_Vendor_Risk — Third-Party Integration & Vendor Risk
|
|
2133
|
-
|
|
2134
|
-
### `12_Third_Party_Integration_Vendor_Risk/01_vendor_security_assessment.md`
|
|
2135
|
-
|
|
2136
|
-
# Vendor Security Assessment
|
|
2137
|
-
|
|
2138
|
-
## What it is
|
|
2139
|
-
Evaluating the security posture of third-party vendors before and during integration.
|
|
2140
|
-
|
|
2141
|
-
## Why it matters
|
|
2142
|
-
A vendor's weak security can become your breach, especially with deep integrations or data sharing.
|
|
2143
|
-
|
|
2144
|
-
## Test checklist
|
|
2145
|
-
- [ ] Security questionnaire/assessment completed before onboarding a new vendor
|
|
2146
|
-
- [ ] Vendor's own compliance certifications (SOC 2, ISO 27001) reviewed where relevant
|
|
2147
|
-
- [ ] Data shared with vendor is scoped to the minimum necessary
|
|
2148
|
-
- [ ] Periodic re-assessment scheduled for critical vendors
|
|
2149
|
-
|
|
2150
|
-
## References
|
|
2151
|
-
- NIST SP 800-161 Supply Chain Risk Management
|
|
2152
|
-
|
|
2153
|
-
**Severity:** Medium
|
|
2154
|
-
**Example test:** Pull the most recently onboarded critical vendor's security questionnaire/SOC 2 report and confirm it was reviewed before data sharing began.
|
|
2155
|
-
**Last reviewed:** 2026-08-29
|
|
2156
|
-
|
|
2157
|
-
### `12_Third_Party_Integration_Vendor_Risk/02_data_processing_agreements.md`
|
|
2158
|
-
|
|
2159
|
-
# Data Processing Agreements & Contracts
|
|
2160
|
-
|
|
2161
|
-
## What it is
|
|
2162
|
-
Contractual terms governing how a vendor may use, store, and protect shared data.
|
|
2163
|
-
|
|
2164
|
-
## Why it matters
|
|
2165
|
-
Without clear terms, there's no enforceable obligation on the vendor to protect your data.
|
|
2166
|
-
|
|
2167
|
-
## Test checklist
|
|
2168
|
-
- [ ] DPA/contract in place before sharing personal or sensitive data with a vendor
|
|
2169
|
-
- [ ] Contract specifies data handling, breach notification timelines, and deletion obligations
|
|
2170
|
-
- [ ] Sub-processor use by the vendor is disclosed and approved
|
|
2171
|
-
- [ ] This is a process checklist, not legal advice — involve legal/procurement
|
|
2172
|
-
|
|
2173
|
-
## References
|
|
2174
|
-
- GDPR Article 28 (as reference pattern, not legal advice)
|
|
2175
|
-
|
|
2176
|
-
**Severity:** Medium
|
|
2177
|
-
**Example test:** Confirm a signed DPA exists for every vendor receiving personal data, and that sub-processor disclosures are on file (consult legal for interpretation).
|
|
2178
|
-
**Last reviewed:** 2026-08-29
|
|
2179
|
-
|
|
2180
|
-
### `12_Third_Party_Integration_Vendor_Risk/03_saas_integration_permission_scoping.md`
|
|
2181
|
-
|
|
2182
|
-
# SaaS Integration Permission Scoping
|
|
2183
|
-
|
|
2184
|
-
## What it is
|
|
2185
|
-
Limiting the OAuth scopes/permissions granted to third-party SaaS tools connected to your system.
|
|
2186
|
-
|
|
2187
|
-
## Why it matters
|
|
2188
|
-
Overscoped integrations turn a single compromised SaaS tool into a much bigger breach.
|
|
2189
|
-
|
|
2190
|
-
## Test checklist
|
|
2191
|
-
- [ ] OAuth scopes requested/granted are the minimum needed for the integration's function
|
|
2192
|
-
- [ ] Regularly review and revoke unused third-party app connections
|
|
2193
|
-
- [ ] Confirm integration tokens are revocable independently without affecting other integrations
|
|
2194
|
-
- [ ] Monitor for anomalous activity from connected third-party apps
|
|
2195
|
-
|
|
2196
|
-
## References
|
|
2197
|
-
- OWASP OAuth 2.0 security guidance
|
|
2198
|
-
|
|
2199
|
-
**Severity:** Medium
|
|
2200
|
-
**Example test:** Review the OAuth scopes granted to each connected third-party app and confirm none exceed what that integration actually needs.
|
|
2201
|
-
**Last reviewed:** 2026-08-29
|
|
2202
|
-
|
|
2203
|
-
### `12_Third_Party_Integration_Vendor_Risk/04_third_party_integration_handling.md`
|
|
2204
|
-
|
|
2205
|
-
# Third-Party Integration Handling
|
|
2206
|
-
|
|
2207
|
-
## What it is
|
|
2208
|
-
Validating and isolating data/requests coming from third-party services and integrations.
|
|
2209
|
-
|
|
2210
|
-
## Why it matters
|
|
2211
|
-
A compromised or misbehaving third party shouldn't be able to compromise your backend.
|
|
2212
|
-
|
|
2213
|
-
## Test checklist
|
|
2214
|
-
- [ ] Validate/sanitize all data received from third-party APIs before use
|
|
2215
|
-
- [ ] Confirm third-party webhook signatures are verified (see webhook_security.md)
|
|
2216
|
-
- [ ] Isolate third-party API keys/scopes to least privilege
|
|
2217
|
-
- [ ] Test behavior when a third-party dependency is slow/down (timeouts, circuit breakers)
|
|
2218
|
-
|
|
2219
|
-
## References
|
|
2220
|
-
- OWASP Third Party JavaScript / Integration guidance
|
|
2221
|
-
|
|
2222
|
-
**Severity:** High
|
|
2223
|
-
**Example test:** Simulate a slow/failed response from a third-party API dependency and confirm your service times out gracefully instead of hanging or failing open.
|
|
2224
|
-
**Last reviewed:** 2026-08-29
|
|
2225
|
-
|
|
2226
|
-
### `12_Third_Party_Integration_Vendor_Risk/05_webhook_security.md`
|
|
2227
|
-
|
|
2228
|
-
# Webhook Security (added)
|
|
2229
|
-
|
|
2230
|
-
## What it is
|
|
2231
|
-
Securing inbound/outbound webhook calls between services.
|
|
2232
|
-
|
|
2233
|
-
## Why it matters
|
|
2234
|
-
Unsigned webhooks can be spoofed to trigger unauthorized actions.
|
|
2235
|
-
|
|
2236
|
-
## Test checklist
|
|
2237
|
-
- [ ] Payloads are signed and signature is verified
|
|
2238
|
-
- [ ] Timestamps checked to prevent replay
|
|
2239
|
-
- [ ] Endpoint validates sender identity, not just shared secret in URL
|
|
2240
|
-
- [ ] Retries/idempotency handled safely
|
|
2241
|
-
|
|
2242
|
-
## References
|
|
2243
|
-
- Stripe/GitHub webhook signing docs (as reference pattern)
|
|
2244
|
-
|
|
2245
|
-
**Severity:** High
|
|
2246
|
-
**Example test:** Send a webhook payload with an invalid or missing signature and confirm the receiving endpoint rejects it rather than processing it.
|
|
2247
|
-
**Last reviewed:** 2026-08-29
|
|
2248
|
-
**See also:** `12_Third_Party_Integration_Vendor_Risk/04_third_party_integration_handling.md`
|
|
2249
|
-
|
|
2250
|
-
|
|
2251
|
-
---
|
|
2252
|
-
|
|
2253
|
-
## 13_Backup_DR_Resilience — Backup, DR & Resilience
|
|
2254
|
-
|
|
2255
|
-
### `13_Backup_DR_Resilience/01_backup_job_monitoring.md`
|
|
2256
|
-
|
|
2257
|
-
# Backup & Error Logs
|
|
2258
|
-
|
|
2259
|
-
## What it is
|
|
2260
|
-
Logs capturing system errors, crashes, and backup job status.
|
|
2261
|
-
|
|
2262
|
-
## Why it matters
|
|
2263
|
-
Needed for reliability, debugging, and detecting silent failures.
|
|
2264
|
-
|
|
2265
|
-
## Test checklist
|
|
2266
|
-
- [ ] Backup jobs log success/failure and are monitored
|
|
2267
|
-
- [ ] Error logs don't leak sensitive data (stack traces, secrets)
|
|
2268
|
-
- [ ] Alerting exists for repeated backup failures
|
|
2269
|
-
|
|
2270
|
-
## References
|
|
2271
|
-
- OWASP Logging Cheat Sheet
|
|
2272
|
-
|
|
2273
|
-
**Severity:** Medium
|
|
2274
|
-
**Example test:** Check the last 30 days of backup job logs and confirm every failure triggered an alert, not just a silent log entry.
|
|
2275
|
-
**Last reviewed:** 2026-08-29
|
|
2276
|
-
|
|
2277
|
-
### `13_Backup_DR_Resilience/02_chaos_engineering_basics.md`
|
|
2278
|
-
|
|
2279
|
-
# Chaos Engineering Basics
|
|
2280
|
-
|
|
2281
|
-
## What it is
|
|
2282
|
-
Deliberately injecting failures (killed instances, network latency, dependency outages) to test resilience.
|
|
2283
|
-
|
|
2284
|
-
## Why it matters
|
|
2285
|
-
Confirms the system fails safely and recovers, rather than discovering this during a real outage.
|
|
2286
|
-
|
|
2287
|
-
## Test checklist
|
|
2288
|
-
- [ ] Start with small-blast-radius experiments in non-prod before considering prod
|
|
2289
|
-
- [ ] Define a hypothesis and success criteria before each experiment
|
|
2290
|
-
- [ ] Confirm monitoring/alerting actually fires during the injected failure
|
|
2291
|
-
- [ ] Document and fix weaknesses discovered, then re-test
|
|
2292
|
-
|
|
2293
|
-
## References
|
|
2294
|
-
- Principles of Chaos Engineering (principlesofchaos.org)
|
|
2295
|
-
|
|
2296
|
-
**Severity:** Medium
|
|
2297
|
-
**Example test:** Run a small-blast-radius experiment (e.g. kill one non-critical instance) in staging and confirm monitoring/alerting actually fires.
|
|
2298
|
-
**Last reviewed:** 2026-08-29
|
|
2299
|
-
|
|
2300
|
-
### `13_Backup_DR_Resilience/03_disaster_recovery_failover_testing.md`
|
|
2301
|
-
|
|
2302
|
-
# Disaster Recovery / Failover Testing
|
|
2303
|
-
|
|
2304
|
-
## What it is
|
|
2305
|
-
Actually executing a failover to a backup region/system, not just documenting the plan.
|
|
2306
|
-
|
|
2307
|
-
## Why it matters
|
|
2308
|
-
An untested DR plan often fails in ways only discovered during a real disaster.
|
|
2309
|
-
|
|
2310
|
-
## Test checklist
|
|
2311
|
-
- [ ] Full failover test executed at least annually (or per policy)
|
|
2312
|
-
- [ ] RTO/RPO targets validated against actual failover time
|
|
2313
|
-
- [ ] Data integrity confirmed after failover, not just availability
|
|
2314
|
-
- [ ] Failback (returning to primary) tested as well, not just failover
|
|
2315
|
-
|
|
2316
|
-
## References
|
|
2317
|
-
- NIST SP 800-34 Contingency Planning Guide
|
|
2318
|
-
|
|
2319
|
-
**Severity:** High
|
|
2320
|
-
**Example test:** Execute a real failover to the backup region and measure actual RTO/RPO against the documented targets, then test failback too.
|
|
2321
|
-
**Last reviewed:** 2026-08-29
|
|
2322
|
-
|
|
2323
|
-
### `13_Backup_DR_Resilience/04_backup_restore_testing.md`
|
|
2324
|
-
|
|
2325
|
-
# Backup Restore Testing
|
|
2326
|
-
|
|
2327
|
-
## What it is
|
|
2328
|
-
Verifying backups can actually be restored successfully, not just that they complete.
|
|
2329
|
-
|
|
2330
|
-
## Why it matters
|
|
2331
|
-
A backup that can't be restored provides false confidence and no real protection.
|
|
2332
|
-
|
|
2333
|
-
## Test checklist
|
|
2334
|
-
- [ ] Full restore test performed periodically, not just backup job success checked
|
|
2335
|
-
- [ ] Restored data verified for completeness and integrity
|
|
2336
|
-
- [ ] Restore time measured against recovery time objectives
|
|
2337
|
-
- [ ] Test restoring to an isolated environment, not overwriting production
|
|
2338
|
-
|
|
2339
|
-
## References
|
|
2340
|
-
- NIST SP 800-34 Contingency Planning Guide
|
|
2341
|
-
|
|
2342
|
-
**Severity:** High
|
|
2343
|
-
**Example test:** Restore the latest backup into an isolated environment and verify data completeness/integrity, not just that the restore job reported success.
|
|
2344
|
-
**Last reviewed:** 2026-08-29
|
|
2345
|
-
|
|
2346
|
-
### `13_Backup_DR_Resilience/05_load_stress_testing.md`
|
|
2347
|
-
|
|
2348
|
-
# Load & Stress Testing
|
|
2349
|
-
|
|
2350
|
-
## What it is
|
|
2351
|
-
Testing system behavior under high traffic/load, including at and beyond expected capacity.
|
|
2352
|
-
|
|
2353
|
-
## Why it matters
|
|
2354
|
-
Reveals availability weaknesses that could be triggered by legitimate spikes or DoS attempts.
|
|
2355
|
-
|
|
2356
|
-
## Test checklist
|
|
2357
|
-
- [ ] System tested at expected peak load with acceptable performance
|
|
2358
|
-
- [ ] Behavior at/beyond capacity is graceful (queuing/throttling) not catastrophic failure
|
|
2359
|
-
- [ ] Auto-scaling (if used) triggers correctly under load
|
|
2360
|
-
- [ ] Dependent services' limits (DB connections, third-party API quotas) tested too
|
|
2361
|
-
|
|
2362
|
-
## References
|
|
2363
|
-
- OWASP Testing Guide - Denial of Service testing
|
|
2364
|
-
|
|
2365
|
-
**Severity:** Medium
|
|
2366
|
-
**Example test:** Load-test the system to 150% of expected peak traffic and confirm it degrades gracefully (queuing/throttling) rather than crashing outright.
|
|
2367
|
-
**Last reviewed:** 2026-08-29
|
|
2368
|
-
|
|
2369
|
-
### `13_Backup_DR_Resilience/06_natural_disaster_scenarios.md`
|
|
2370
|
-
|
|
2371
|
-
# Natural Disaster Scenarios
|
|
2372
|
-
|
|
2373
|
-
## What it is
|
|
2374
|
-
Earthquakes, floods, power outages, etc. affecting infrastructure availability.
|
|
2375
|
-
|
|
2376
|
-
## Why it matters
|
|
2377
|
-
Tests business continuity and disaster recovery, not just cyber defenses.
|
|
2378
|
-
|
|
2379
|
-
## Test checklist
|
|
2380
|
-
- [ ] Disaster recovery plan documented and tested (tabletop or live)
|
|
2381
|
-
- [ ] RTO/RPO defined and validated
|
|
2382
|
-
- [ ] Failover to secondary region tested
|
|
2383
|
-
- [ ] Communication plan for stakeholders during outage
|
|
2384
|
-
|
|
2385
|
-
## References
|
|
2386
|
-
- NIST SP 800-34 Contingency Planning Guide
|
|
2387
|
-
|
|
2388
|
-
**Severity:** Medium
|
|
2389
|
-
**Example test:** Run a tabletop exercise simulating a regional outage and confirm the documented communication plan is actually followed by the team.
|
|
2390
|
-
**Last reviewed:** 2026-08-29
|
|
2391
|
-
|
|
2392
|
-
|
|
2393
|
-
---
|
|
2394
|
-
|
|
2395
|
-
## 14_Incident_Response_Security_Ops — Incident Response & Security Ops
|
|
2396
|
-
|
|
2397
|
-
### `14_Incident_Response_Security_Ops/01_bug_bounty_responsible_disclosure.md`
|
|
2398
|
-
|
|
2399
|
-
# Bug Bounty & Responsible Disclosure
|
|
2400
|
-
|
|
2401
|
-
## What it is
|
|
2402
|
-
A defined program/process for external researchers to report vulnerabilities safely.
|
|
2403
|
-
|
|
2404
|
-
## Why it matters
|
|
2405
|
-
Without a clear channel, researchers may disclose publicly before you can fix it, or not report at all.
|
|
2406
|
-
|
|
2407
|
-
## Test checklist
|
|
2408
|
-
- [ ] security.txt or equivalent published with a clear reporting contact
|
|
2409
|
-
- [ ] Defined response SLA for acknowledging reports
|
|
2410
|
-
- [ ] Safe-harbor policy for good-faith researchers
|
|
2411
|
-
- [ ] Process to track reported issues through to fix and disclosure
|
|
2412
|
-
|
|
2413
|
-
## References
|
|
2414
|
-
- RFC 9116 security.txt
|
|
2415
|
-
- disclose.io responsible disclosure guidelines
|
|
2416
|
-
|
|
2417
|
-
**Severity:** Medium
|
|
2418
|
-
**Example test:** Fetch https://yourdomain.com/.well-known/security.txt and confirm it publishes a working contact and safe-harbor statement.
|
|
2419
|
-
**Last reviewed:** 2026-08-29
|
|
2420
|
-
|
|
2421
|
-
### `14_Incident_Response_Security_Ops/02_manmade_adversarial_scenarios.md`
|
|
2422
|
-
|
|
2423
|
-
# Man-Made / Adversarial Scenarios
|
|
2424
|
-
|
|
2425
|
-
## What it is
|
|
2426
|
-
DDoS, insider threats, ransomware, supply-chain compromise, phishing.
|
|
2427
|
-
|
|
2428
|
-
## Why it matters
|
|
2429
|
-
Simulates realistic attacker behavior to validate detection and response.
|
|
2430
|
-
|
|
2431
|
-
## Test checklist
|
|
2432
|
-
- [ ] Run tabletop exercise for a ransomware scenario
|
|
2433
|
-
- [ ] Test detection of insider threat (unusual data access patterns)
|
|
2434
|
-
- [ ] Test phishing simulation and measure click/report rate
|
|
2435
|
-
- [ ] Validate supply-chain dependency scanning (SBOM)
|
|
2436
|
-
|
|
2437
|
-
## References
|
|
2438
|
-
- MITRE ATT&CK Framework
|
|
2439
|
-
|
|
2440
|
-
**Severity:** Medium
|
|
2441
|
-
**Example test:** Run a phishing simulation against staff and measure the click-through and report rate against your baseline target.
|
|
2442
|
-
**Last reviewed:** 2026-08-29
|
|
2443
|
-
|
|
2444
|
-
### `14_Incident_Response_Security_Ops/03_red_team_purple_team_exercises.md`
|
|
2445
|
-
|
|
2446
|
-
# Red Team / Purple Team Exercises
|
|
2447
|
-
|
|
2448
|
-
## What it is
|
|
2449
|
-
Simulated adversarial exercises (red team attacks, purple team collaborative testing) against the live system/org.
|
|
2450
|
-
|
|
2451
|
-
## Why it matters
|
|
2452
|
-
Tests real detection and response capability, not just individual technical controls.
|
|
2453
|
-
|
|
2454
|
-
## Test checklist
|
|
2455
|
-
- [ ] Scope and rules of engagement agreed in writing before starting
|
|
2456
|
-
- [ ] Detection/response team's performance measured (were they alerted? how fast?)
|
|
2457
|
-
- [ ] Findings feed back into both technical fixes and process improvements
|
|
2458
|
-
- [ ] Exercise conducted periodically, not as a one-time event
|
|
2459
|
-
|
|
2460
|
-
## References
|
|
2461
|
-
- MITRE ATT&CK Framework
|
|
2462
|
-
- NIST SP 800-115
|
|
2463
|
-
|
|
2464
|
-
**Severity:** High
|
|
2465
|
-
**Example test:** Run a scoped red-team exercise with written rules of engagement and measure how quickly the detection/response team noticed and reacted.
|
|
2466
|
-
**Last reviewed:** 2026-08-29
|
|
2467
|
-
|
|
2468
|
-
### `14_Incident_Response_Security_Ops/04_incident_response.md`
|
|
2469
|
-
|
|
2470
|
-
# Incident Response Drill (added)
|
|
2471
|
-
|
|
2472
|
-
## What it is
|
|
2473
|
-
Structured process for detecting, containing, and recovering from an incident.
|
|
2474
|
-
|
|
2475
|
-
## Why it matters
|
|
2476
|
-
Untested IR plans fail under real pressure.
|
|
2477
|
-
|
|
2478
|
-
## Test checklist
|
|
2479
|
-
- [ ] IR plan has clear roles and escalation path
|
|
2480
|
-
- [ ] Communication templates prepared in advance
|
|
2481
|
-
- [ ] Post-incident review process defined
|
|
2482
|
-
|
|
2483
|
-
## References
|
|
2484
|
-
- NIST SP 800-61 Computer Security Incident Handling Guide
|
|
2485
|
-
|
|
2486
|
-
**Severity:** High
|
|
2487
|
-
**Example test:** Run a tabletop IR drill for a plausible scenario (e.g. leaked API key) and confirm every role knows their escalation step without looking it up.
|
|
2488
|
-
**Last reviewed:** 2026-08-29
|
|
2489
|
-
|
|
2490
|
-
### `14_Incident_Response_Security_Ops/05_sast_dast_tooling_integration.md`
|
|
2491
|
-
|
|
2492
|
-
# SAST/DAST Tooling Integration
|
|
2493
|
-
|
|
2494
|
-
## What it is
|
|
2495
|
-
Automated static and dynamic application security testing integrated into CI/CD.
|
|
2496
|
-
|
|
2497
|
-
## Why it matters
|
|
2498
|
-
Automation catches common issues continuously instead of relying only on periodic manual review.
|
|
2499
|
-
|
|
2500
|
-
## Test checklist
|
|
2501
|
-
- [ ] SAST scans run on every PR/commit, not just occasionally
|
|
2502
|
-
- [ ] DAST scans run against staging before production release
|
|
2503
|
-
- [ ] Findings are triaged with clear severity-based SLAs
|
|
2504
|
-
- [ ] False positive rate managed so alerts aren't ignored over time
|
|
2505
|
-
|
|
2506
|
-
## References
|
|
2507
|
-
- OWASP DevSecOps Guideline
|
|
2508
|
-
|
|
2509
|
-
**Severity:** Medium
|
|
2510
|
-
**Example test:** Confirm the last 10 PRs all triggered a SAST scan, and that staging received a DAST scan before its most recent production release.
|
|
2511
|
-
**Last reviewed:** 2026-08-29
|
|
2512
|
-
|
|
2513
|
-
### `14_Incident_Response_Security_Ops/06_security_awareness_training.md`
|
|
2514
|
-
|
|
2515
|
-
# Security Awareness Training
|
|
2516
|
-
|
|
2517
|
-
## What it is
|
|
2518
|
-
Ongoing training for developers and staff on secure practices and current threats.
|
|
2519
|
-
|
|
2520
|
-
## Why it matters
|
|
2521
|
-
Many breaches originate from human error (phishing, misconfiguration) rather than novel technical exploits.
|
|
2522
|
-
|
|
2523
|
-
## Test checklist
|
|
2524
|
-
- [ ] Developers trained on secure coding relevant to their stack
|
|
2525
|
-
- [ ] All staff trained on phishing/social engineering recognition
|
|
2526
|
-
- [ ] Training refreshed periodically, not a one-time onboarding item
|
|
2527
|
-
- [ ] Incident post-mortems feed back into training content
|
|
2528
|
-
|
|
2529
|
-
## References
|
|
2530
|
-
- OWASP SAMM - Education & Guidance
|
|
2531
|
-
|
|
2532
|
-
**Severity:** Low
|
|
2533
|
-
**Example test:** Confirm every engineer completed secure-coding training within the last 12 months and that a recent incident's lessons were folded into the material.
|
|
2534
|
-
**Last reviewed:** 2026-08-29
|
|
2535
|
-
|
|
2536
|
-
### `14_Incident_Response_Security_Ops/07_vulnerability_management_sla.md`
|
|
2537
|
-
|
|
2538
|
-
# Vulnerability Management SLA
|
|
2539
|
-
|
|
2540
|
-
## What it is
|
|
2541
|
-
Defined timelines for triaging and remediating vulnerabilities based on severity.
|
|
2542
|
-
|
|
2543
|
-
## Why it matters
|
|
2544
|
-
Without SLAs, critical vulnerabilities can linger unpatched indefinitely.
|
|
2545
|
-
|
|
2546
|
-
## Test checklist
|
|
2547
|
-
- [ ] Severity levels defined (e.g. CVSS-based) with matching remediation SLAs
|
|
2548
|
-
- [ ] Vulnerability tracking system in place (not just email threads)
|
|
2549
|
-
- [ ] SLA compliance measured and reported regularly
|
|
2550
|
-
- [ ] Escalation path exists for SLA breaches on critical findings
|
|
2551
|
-
|
|
2552
|
-
## References
|
|
2553
|
-
- NIST SP 800-40 Patch Management Guide
|
|
2554
|
-
|
|
2555
|
-
**Severity:** High
|
|
2556
|
-
**Example test:** Pull open vulnerabilities from the tracker and confirm none of Critical/High severity are past their defined remediation SLA.
|
|
2557
|
-
**Last reviewed:** 2026-08-29
|
|
2558
|
-
|
|
2559
|
-
|
|
2560
|
-
---
|
|
2561
|
-
|
|
2562
|
-
## 15_Architecture_Compliance — Architecture & Compliance
|
|
2563
|
-
|
|
2564
|
-
### `15_Architecture_Compliance/01_privacy_by_design.md`
|
|
2565
|
-
|
|
2566
|
-
# Privacy by Design
|
|
2567
|
-
|
|
2568
|
-
## What it is
|
|
2569
|
-
Building privacy protections into the system architecture from the start, not bolted on later.
|
|
2570
|
-
|
|
2571
|
-
## Why it matters
|
|
2572
|
-
Retrofitting privacy controls is expensive and error-prone compared to designing for it upfront.
|
|
2573
|
-
|
|
2574
|
-
## Test checklist
|
|
2575
|
-
- [ ] Data minimization applied (collect only what's needed)
|
|
2576
|
-
- [ ] Default settings favor privacy (opt-in over opt-out for data sharing)
|
|
2577
|
-
- [ ] Privacy impact considered during design/threat modeling, not just at launch
|
|
2578
|
-
- [ ] Data flows documented end-to-end
|
|
2579
|
-
|
|
2580
|
-
## References
|
|
2581
|
-
- Privacy by Design framework (Cavoukian)
|
|
2582
|
-
|
|
2583
|
-
**Severity:** Medium
|
|
2584
|
-
**Example test:** Review the most recent feature's design doc and confirm data collection was scoped to only what the feature actually needs.
|
|
2585
|
-
**Last reviewed:** 2026-08-29
|
|
2586
|
-
|
|
2587
|
-
### `15_Architecture_Compliance/02_threat_modeling.md`
|
|
2588
|
-
|
|
2589
|
-
# Threat Modeling
|
|
2590
|
-
|
|
2591
|
-
## What it is
|
|
2592
|
-
Systematically identifying threats, trust boundaries, and mitigations before/while building.
|
|
2593
|
-
|
|
2594
|
-
## Why it matters
|
|
2595
|
-
Finds design-level flaws that testing alone won't catch.
|
|
2596
|
-
|
|
2597
|
-
## Test checklist
|
|
2598
|
-
- [ ] Data flow diagram created for the system
|
|
2599
|
-
- [ ] Trust boundaries identified
|
|
2600
|
-
- [ ] STRIDE (or similar) analysis performed
|
|
2601
|
-
- [ ] Mitigations tracked to closure
|
|
2602
|
-
|
|
2603
|
-
## References
|
|
2604
|
-
- OWASP Threat Modeling
|
|
2605
|
-
- Microsoft STRIDE
|
|
2606
|
-
|
|
2607
|
-
**Severity:** High
|
|
2608
|
-
**Example test:** Pull the data-flow diagram for the highest-risk service and confirm a STRIDE (or equivalent) pass was actually performed and mitigations tracked to closure.
|
|
2609
|
-
**Last reviewed:** 2026-08-29
|
|
2610
|
-
|
|
2611
|
-
### `15_Architecture_Compliance/03_consent_management.md`
|
|
2612
|
-
|
|
2613
|
-
# Consent Management
|
|
2614
|
-
|
|
2615
|
-
## What it is
|
|
2616
|
-
Capturing, storing, and honoring user consent for data collection and processing.
|
|
2617
|
-
|
|
2618
|
-
## Why it matters
|
|
2619
|
-
Missing or mishandled consent creates legal exposure and user trust issues.
|
|
2620
|
-
|
|
2621
|
-
## Test checklist
|
|
2622
|
-
- [ ] Consent is captured explicitly, not pre-checked/implied
|
|
2623
|
-
- [ ] Consent records are stored with timestamp and version of policy agreed to
|
|
2624
|
-
- [ ] Users can withdraw consent and the system honors it promptly
|
|
2625
|
-
- [ ] Consent is granular where required (e.g. marketing vs functional data use)
|
|
2626
|
-
|
|
2627
|
-
## References
|
|
2628
|
-
- GDPR Article 7 (as reference pattern, not legal advice)
|
|
2629
|
-
|
|
2630
|
-
**Severity:** Medium
|
|
2631
|
-
**Example test:** Attempt to withdraw consent for a non-essential data use as a test user and confirm the system actually stops that use promptly.
|
|
2632
|
-
**Last reviewed:** 2026-08-29
|
|
2633
|
-
|
|
2634
|
-
### `15_Architecture_Compliance/04_defense_in_depth.md`
|
|
2635
|
-
|
|
2636
|
-
# Defense in Depth
|
|
2637
|
-
|
|
2638
|
-
## What it is
|
|
2639
|
-
Layering multiple independent security controls so no single failure is catastrophic.
|
|
2640
|
-
|
|
2641
|
-
## Why it matters
|
|
2642
|
-
Reduces blast radius when one control fails.
|
|
2643
|
-
|
|
2644
|
-
## Test checklist
|
|
2645
|
-
- [ ] Network, application, and data layer controls all present
|
|
2646
|
-
- [ ] No single point of failure for critical protections
|
|
2647
|
-
- [ ] Compensating controls documented per layer
|
|
2648
|
-
|
|
2649
|
-
## References
|
|
2650
|
-
- NIST Defense in Depth strategy
|
|
2651
|
-
|
|
2652
|
-
**Severity:** Medium
|
|
2653
|
-
**Example test:** Pick one critical asset and map every independent control protecting it; confirm there isn't a single point whose failure alone exposes it.
|
|
2654
|
-
**Last reviewed:** 2026-08-29
|
|
2655
|
-
|
|
2656
|
-
### `15_Architecture_Compliance/05_regulatory_compliance_mapping.md`
|
|
2657
|
-
|
|
2658
|
-
# Regulatory Compliance Mapping
|
|
2659
|
-
|
|
2660
|
-
## What it is
|
|
2661
|
-
Identifying which regulations apply (GDPR, HIPAA, PCI-DSS, SOC 2, etc.) and mapping controls to them.
|
|
2662
|
-
|
|
2663
|
-
## Why it matters
|
|
2664
|
-
Testing without knowing applicable regulations risks missing legally required controls.
|
|
2665
|
-
|
|
2666
|
-
## Test checklist
|
|
2667
|
-
- [ ] Applicable regulations identified based on data type/user location/industry
|
|
2668
|
-
- [ ] Controls mapped to specific regulatory requirements
|
|
2669
|
-
- [ ] Gaps tracked with an owner and remediation timeline
|
|
2670
|
-
- [ ] This is a starting checklist, not legal advice — confirm with qualified counsel/compliance staff
|
|
2671
|
-
|
|
2672
|
-
## References
|
|
2673
|
-
- Relevant regulation text (GDPR, HIPAA, PCI-DSS, SOC 2) - consult legal counsel
|
|
2674
|
-
|
|
2675
|
-
**Severity:** Medium
|
|
2676
|
-
**Example test:** Confirm each applicable regulation (GDPR/HIPAA/PCI-DSS/etc.) has specific controls mapped to it with an owner (not legal advice — confirm interpretation with counsel).
|
|
2677
|
-
**Last reviewed:** 2026-08-29
|
|
2678
|
-
|
|
2679
|
-
### `15_Architecture_Compliance/06_zero_trust_network.md`
|
|
2680
|
-
|
|
2681
|
-
# Zero Trust Network Architecture
|
|
2682
|
-
|
|
2683
|
-
## What it is
|
|
2684
|
-
Never trust, always verify — no implicit trust based on network location.
|
|
2685
|
-
|
|
2686
|
-
## Why it matters
|
|
2687
|
-
Limits lateral movement if perimeter is breached.
|
|
2688
|
-
|
|
2689
|
-
## Test checklist
|
|
2690
|
-
- [ ] Micro-segmentation implemented between services
|
|
2691
|
-
- [ ] Every request authenticated/authorized regardless of network origin
|
|
2692
|
-
- [ ] Least-privilege network policies enforced
|
|
2693
|
-
|
|
2694
|
-
## References
|
|
2695
|
-
- NIST SP 800-207 Zero Trust Architecture
|
|
2696
|
-
|
|
2697
|
-
**Severity:** High
|
|
2698
|
-
**Example test:** From inside the internal network, attempt to reach a service without presenting valid per-request authentication and confirm it's still denied.
|
|
2699
|
-
**Last reviewed:** 2026-08-29
|
|
2700
|
-
|
|
2701
|
-
### `15_Architecture_Compliance/07_data_subject_rights_handling.md`
|
|
2702
|
-
|
|
2703
|
-
# Data Subject Rights Handling
|
|
2704
|
-
|
|
2705
|
-
## What it is
|
|
2706
|
-
Supporting user rights to access, correct, export, or delete their data.
|
|
2707
|
-
|
|
2708
|
-
## Why it matters
|
|
2709
|
-
Many privacy regulations legally require these capabilities to exist and function correctly.
|
|
2710
|
-
|
|
2711
|
-
## Test checklist
|
|
2712
|
-
- [ ] Data export functionality returns complete and accurate user data
|
|
2713
|
-
- [ ] Deletion requests actually remove data from backups/logs within defined timeframes, not just the primary DB
|
|
2714
|
-
- [ ] Process exists to verify the requester's identity before fulfilling requests
|
|
2715
|
-
- [ ] Requests are tracked and fulfilled within regulatory time limits
|
|
2716
|
-
|
|
2717
|
-
## References
|
|
2718
|
-
- GDPR Articles 15-17 (as reference pattern, not legal advice)
|
|
2719
|
-
|
|
2720
|
-
**Severity:** High
|
|
2721
|
-
**Example test:** Submit a test data-deletion request and confirm the data is actually removed from backups/logs within the promised timeframe, not just the primary DB.
|
|
2722
|
-
**Last reviewed:** 2026-08-29
|
|
2723
|
-
|
|
2724
|
-
### `15_Architecture_Compliance/08_secure_sdlc.md`
|
|
2725
|
-
|
|
2726
|
-
# Secure SDLC (added)
|
|
2727
|
-
|
|
2728
|
-
## What it is
|
|
2729
|
-
Integrating security activities across the software development lifecycle.
|
|
2730
|
-
|
|
2731
|
-
## Why it matters
|
|
2732
|
-
Cheaper to fix issues at design/code time than after production release.
|
|
2733
|
-
|
|
2734
|
-
## Test checklist
|
|
2735
|
-
- [ ] Security requirements defined at design phase
|
|
2736
|
-
- [ ] SAST/DAST integrated in CI/CD
|
|
2737
|
-
- [ ] Dependency scanning (SCA) automated
|
|
2738
|
-
- [ ] Security review gate before production release
|
|
2739
|
-
|
|
2740
|
-
## References
|
|
2741
|
-
- OWASP SAMM (Software Assurance Maturity Model)
|
|
2742
|
-
|
|
2743
|
-
**Severity:** Medium
|
|
2744
|
-
**Example test:** Confirm the most recent feature had security requirements defined at design time, not bolted on after code review.
|
|
2745
|
-
**Last reviewed:** 2026-08-29
|
|
2746
|
-
|
|
2747
|
-
|
|
2748
|
-
---
|
|
2749
|
-
|
|
2750
|
-
## 16_Edge_CDN_Security — Edge / CDN Security
|
|
2751
|
-
|
|
2752
|
-
### `16_Edge_CDN_Security/01_waf_rules.md`
|
|
2753
|
-
|
|
2754
|
-
# Cloudflare WAF Rules
|
|
2755
|
-
|
|
2756
|
-
## What it is
|
|
2757
|
-
Web Application Firewall rules filtering malicious traffic at the edge.
|
|
2758
|
-
|
|
2759
|
-
## Why it matters
|
|
2760
|
-
First line of defense before traffic hits origin servers.
|
|
2761
|
-
|
|
2762
|
-
## Test checklist
|
|
2763
|
-
- [ ] Managed rulesets enabled and tuned
|
|
2764
|
-
- [ ] Custom rules cover app-specific attack patterns
|
|
2765
|
-
- [ ] Rules tested in 'log' mode before enforcing 'block'
|
|
2766
|
-
- [ ] Rate limiting rules configured for sensitive endpoints
|
|
2767
|
-
|
|
2768
|
-
## References
|
|
2769
|
-
- Cloudflare WAF documentation
|
|
2770
|
-
|
|
2771
|
-
**Severity:** High
|
|
2772
|
-
**Example test:** Send a known attack pattern (e.g. a basic SQLi string) through the WAF in log mode first, confirm detection, then verify it's actually blocked once enforced.
|
|
2773
|
-
**Last reviewed:** 2026-08-29
|
|
2774
|
-
|
|
2775
|
-
### `16_Edge_CDN_Security/02_ddos_protection.md`
|
|
2776
|
-
|
|
2777
|
-
# DDoS Protection
|
|
2778
|
-
|
|
2779
|
-
## What it is
|
|
2780
|
-
Mitigating volumetric and application-layer denial-of-service attacks.
|
|
2781
|
-
|
|
2782
|
-
## Why it matters
|
|
2783
|
-
Downtime from DDoS directly impacts availability and revenue.
|
|
2784
|
-
|
|
2785
|
-
## Test checklist
|
|
2786
|
-
- [ ] L3/L4 and L7 protections both enabled
|
|
2787
|
-
- [ ] Under-attack mode tested
|
|
2788
|
-
- [ ] Origin IP is not directly exposed/bypassable
|
|
2789
|
-
|
|
2790
|
-
## References
|
|
2791
|
-
- Cloudflare DDoS documentation
|
|
2792
|
-
|
|
2793
|
-
**Severity:** High
|
|
2794
|
-
**Example test:** Confirm the true origin IP isn't discoverable/reachable directly, bypassing the CDN/DDoS layer entirely.
|
|
2795
|
-
**Last reviewed:** 2026-08-29
|
|
2796
|
-
|
|
2797
|
-
### `16_Edge_CDN_Security/03_bot_management.md`
|
|
2798
|
-
|
|
2799
|
-
# Bot Management
|
|
2800
|
-
|
|
2801
|
-
## What it is
|
|
2802
|
-
Distinguishing and controlling automated traffic (good bots vs malicious bots).
|
|
2803
|
-
|
|
2804
|
-
## Why it matters
|
|
2805
|
-
Prevents scraping, credential stuffing, and inventory hoarding.
|
|
2806
|
-
|
|
2807
|
-
## Test checklist
|
|
2808
|
-
- [ ] Bot score thresholds tuned per endpoint
|
|
2809
|
-
- [ ] Test credential stuffing simulation against login endpoint
|
|
2810
|
-
- [ ] Allowlist legitimate bots (search engines, monitoring)
|
|
2811
|
-
|
|
2812
|
-
## References
|
|
2813
|
-
- Cloudflare Bot Management documentation
|
|
2814
|
-
|
|
2815
|
-
**Severity:** Medium
|
|
2816
|
-
**Example test:** Run a scripted login-attempt simulation against the login endpoint and confirm the bot-management layer flags/blocks it before it reaches the app.
|
|
2817
|
-
**Last reviewed:** 2026-08-29
|
|
2818
|
-
|
|
2819
|
-
### `16_Edge_CDN_Security/04_cdn_caching_authenticated_content.md`
|
|
2820
|
-
|
|
2821
|
-
# CDN Caching of Authenticated Content
|
|
2822
|
-
|
|
2823
|
-
## What it is
|
|
2824
|
-
Preventing personalized or authenticated responses from being cached and served to other users.
|
|
2825
|
-
|
|
2826
|
-
## Why it matters
|
|
2827
|
-
Misconfigured CDN caching can leak one user's private data to another user entirely.
|
|
2828
|
-
|
|
2829
|
-
## Test checklist
|
|
2830
|
-
- [ ] Confirm Cache-Control: private / no-store is set on authenticated responses
|
|
2831
|
-
- [ ] Test that CDN doesn't cache responses varying by Authorization/Cookie header incorrectly
|
|
2832
|
-
- [ ] Confirm Vary header is set correctly for personalized content
|
|
2833
|
-
- [ ] Test by requesting the same URL as two different authenticated users through the CDN
|
|
2834
|
-
|
|
2835
|
-
## References
|
|
2836
|
-
- OWASP Cache Deception guidance
|
|
2837
|
-
|
|
2838
|
-
**Severity:** Critical
|
|
2839
|
-
**Example test:** Request the same authenticated URL as two different logged-in users through the CDN and confirm User B never sees User A's cached response.
|
|
2840
|
-
**Last reviewed:** 2026-08-29
|
|
2841
|
-
**See also:** `16_Edge_CDN_Security/05_cache_poisoning.md`
|
|
2842
|
-
|
|
2843
|
-
### `16_Edge_CDN_Security/05_cache_poisoning.md`
|
|
2844
|
-
|
|
2845
|
-
# Web Cache Poisoning
|
|
2846
|
-
|
|
2847
|
-
## What it is
|
|
2848
|
-
Manipulating cache keys (headers, query params) to serve a malicious response to other users.
|
|
2849
|
-
|
|
2850
|
-
## Why it matters
|
|
2851
|
-
A single poisoned cache entry can serve an attack payload to every subsequent visitor.
|
|
2852
|
-
|
|
2853
|
-
## Test checklist
|
|
2854
|
-
- [ ] Test unkeyed headers (e.g. X-Forwarded-Host) for influence on cached response content
|
|
2855
|
-
- [ ] Confirm cache key includes all inputs that affect the response
|
|
2856
|
-
- [ ] Test parameter cloaking / cache-busting parameter behavior
|
|
2857
|
-
- [ ] Review CDN/reverse proxy cache configuration for default unsafe behaviors
|
|
2858
|
-
|
|
2859
|
-
## References
|
|
2860
|
-
- PortSwigger Web Cache Poisoning research
|
|
2861
|
-
|
|
2862
|
-
**Severity:** Critical
|
|
2863
|
-
**Example test:** Send a request with an unusual header (e.g. X-Forwarded-Host: evil.com) and confirm it can't influence what gets cached and served to other visitors.
|
|
2864
|
-
**Last reviewed:** 2026-08-29
|
|
2865
|
-
|
|
2866
|
-
### `16_Edge_CDN_Security/06_zero_trust_access.md`
|
|
2867
|
-
|
|
2868
|
-
# Cloudflare Zero Trust / Access
|
|
2869
|
-
|
|
2870
|
-
## What it is
|
|
2871
|
-
Identity-aware access proxy for internal apps and networks.
|
|
2872
|
-
|
|
2873
|
-
## Why it matters
|
|
2874
|
-
Removes reliance on flat VPN trust models.
|
|
2875
|
-
|
|
2876
|
-
## Test checklist
|
|
2877
|
-
- [ ] Access policies scoped per-application, per-identity
|
|
2878
|
-
- [ ] MFA enforced at the Access layer
|
|
2879
|
-
- [ ] Session duration and re-auth policy tested
|
|
2880
|
-
|
|
2881
|
-
## References
|
|
2882
|
-
- Cloudflare Zero Trust documentation
|
|
2883
|
-
|
|
2884
|
-
**Severity:** Medium
|
|
2885
|
-
**Example test:** Attempt to reach an internal app through the Zero Trust proxy without a valid per-app identity policy match and confirm access is denied.
|
|
2886
|
-
**Last reviewed:** 2026-08-29
|
|
2887
|
-
|
|
2888
|
-
|
|
2889
|
-
---
|
|
2890
|
-
|
|
2891
|
-
## 17_DNS_Email_Domain_Security — DNS, Email & Domain Security
|
|
2892
|
-
|
|
2893
|
-
### `17_DNS_Email_Domain_Security/01_dnssec.md`
|
|
2894
|
-
|
|
2895
|
-
> **Authorization reminder:** Only run these checks against systems you own or have explicit written permission to test. Prefer staging/QA over production — several checks here (injection probes, IAM changes, DNS record edits) can have live side effects.
|
|
2896
|
-
|
|
2897
|
-
|
|
2898
|
-
# DNSSEC
|
|
2899
|
-
|
|
2900
|
-
## What it is
|
|
2901
|
-
Cryptographically signing DNS records to prevent spoofing/cache poisoning of DNS responses.
|
|
2902
|
-
|
|
2903
|
-
## Why it matters
|
|
2904
|
-
Without it, attackers can potentially redirect your domain's traffic via DNS manipulation.
|
|
2905
|
-
|
|
2906
|
-
## Test checklist
|
|
2907
|
-
- [ ] Confirm DNSSEC is enabled on the domain where supported by the registrar/DNS provider
|
|
2908
|
-
- [ ] Test DNSSEC validation chain resolves correctly
|
|
2909
|
-
- [ ] Monitor for DNSSEC validation failures/misconfiguration
|
|
2910
|
-
|
|
2911
|
-
## References
|
|
2912
|
-
- NIST SP 800-81 DNSSEC guidance
|
|
2913
|
-
|
|
2914
|
-
**Severity:** Medium
|
|
2915
|
-
**Example test:** Run a DNSSEC validation check (e.g. via a public DNSSEC debugger) against the domain and confirm the chain resolves without validation errors.
|
|
2916
|
-
**Last reviewed:** 2026-08-29
|
|
2917
|
-
|
|
2918
|
-
### `17_DNS_Email_Domain_Security/02_spf_dkim_dmarc.md`
|
|
2919
|
-
|
|
2920
|
-
> **Authorization reminder:** Only run these checks against systems you own or have explicit written permission to test. Prefer staging/QA over production — several checks here (injection probes, IAM changes, DNS record edits) can have live side effects.
|
|
2921
|
-
|
|
2922
|
-
|
|
2923
|
-
# SPF, DKIM & DMARC
|
|
2924
|
-
|
|
2925
|
-
## What it is
|
|
2926
|
-
Email authentication standards that prevent spoofed emails from appearing to come from your domain.
|
|
2927
|
-
|
|
2928
|
-
## Why it matters
|
|
2929
|
-
Missing these lets attackers send convincing phishing emails impersonating your organization.
|
|
2930
|
-
|
|
2931
|
-
## Test checklist
|
|
2932
|
-
- [ ] SPF record published and correctly scoped to actual sending sources
|
|
2933
|
-
- [ ] DKIM signing enabled for outgoing mail
|
|
2934
|
-
- [ ] DMARC policy set (start at monitor, move toward reject) and reports reviewed
|
|
2935
|
-
- [ ] Test with an online email authentication checker
|
|
2936
|
-
|
|
2937
|
-
## References
|
|
2938
|
-
- dmarc.org
|
|
2939
|
-
- RFC 7489 DMARC
|
|
2940
|
-
|
|
2941
|
-
**Severity:** High
|
|
2942
|
-
**Example test:** Send a test email through an online authentication checker and confirm SPF, DKIM, and DMARC all pass and align.
|
|
2943
|
-
**Last reviewed:** 2026-08-29
|
|
2944
|
-
|
|
2945
|
-
### `17_DNS_Email_Domain_Security/03_subdomain_takeover.md`
|
|
2946
|
-
|
|
2947
|
-
> **Authorization reminder:** Only run these checks against systems you own or have explicit written permission to test. Prefer staging/QA over production — several checks here (injection probes, IAM changes, DNS record edits) can have live side effects.
|
|
2948
|
-
|
|
2949
|
-
|
|
2950
|
-
# Subdomain Takeover (added)
|
|
2951
|
-
|
|
2952
|
-
## What it is
|
|
2953
|
-
A DNS record points to a third-party service (e.g. cloud storage, SaaS) that's no longer claimed, letting an attacker claim it.
|
|
2954
|
-
|
|
2955
|
-
## Why it matters
|
|
2956
|
-
Allows attackers to serve content from a trusted subdomain of your own domain.
|
|
2957
|
-
|
|
2958
|
-
## Test checklist
|
|
2959
|
-
- [ ] Audit all DNS CNAME/records pointing to third-party services
|
|
2960
|
-
- [ ] Remove DNS records for decommissioned third-party services immediately
|
|
2961
|
-
- [ ] Periodically scan for dangling DNS entries
|
|
2962
|
-
- [ ] Test claiming decommissioned service endpoints in a controlled way before attackers do
|
|
2963
|
-
|
|
2964
|
-
## References
|
|
2965
|
-
- OWASP Subdomain Takeover guidance
|
|
2966
|
-
|
|
2967
|
-
**Severity:** Critical
|
|
2968
|
-
**Example test:** Audit every CNAME record pointing at a third-party service and confirm none point to a deprovisioned/unclaimed resource that could be claimed by an attacker.
|
|
2969
|
-
**Last reviewed:** 2026-08-29
|
|
2970
|
-
|
|
2971
|
-
### `17_DNS_Email_Domain_Security/04_certificate_transparency_monitoring.md`
|
|
2972
|
-
|
|
2973
|
-
> **Authorization reminder:** Only run these checks against systems you own or have explicit written permission to test. Prefer staging/QA over production — several checks here (injection probes, IAM changes, DNS record edits) can have live side effects.
|
|
2974
|
-
|
|
2975
|
-
|
|
2976
|
-
# Certificate Transparency Monitoring
|
|
2977
|
-
|
|
2978
|
-
## What it is
|
|
2979
|
-
Monitoring public CT logs for TLS certificates issued for your domains.
|
|
2980
|
-
|
|
2981
|
-
## Why it matters
|
|
2982
|
-
Detects unauthorized or unexpected certificate issuance (potential impersonation) early.
|
|
2983
|
-
|
|
2984
|
-
## Test checklist
|
|
2985
|
-
- [ ] Monitoring set up against CT logs (e.g. crt.sh or a CT monitoring service)
|
|
2986
|
-
- [ ] Alerting configured for certificates issued for your domain outside known processes
|
|
2987
|
-
- [ ] Process defined to respond to unauthorized certificate issuance (revocation request)
|
|
2988
|
-
|
|
2989
|
-
## References
|
|
2990
|
-
- Certificate Transparency project (certificate.transparency.dev)
|
|
2991
|
-
|
|
2992
|
-
**Severity:** Medium
|
|
2993
|
-
**Example test:** Query crt.sh for the domain and confirm every listed certificate maps to a known, authorized issuance process.
|
|
2994
|
-
**Last reviewed:** 2026-08-29
|
|
2995
|
-
|
|
2996
|
-
|
|
2997
|
-
---
|
|
2998
|
-
|
|
2999
|
-
## 18_Mobile_App_Security — Mobile App Security
|
|
3000
|
-
|
|
3001
|
-
### `18_Mobile_App_Security/01_certificate_pinning.md`
|
|
3002
|
-
|
|
3003
|
-
# Certificate Pinning (Mobile)
|
|
3004
|
-
|
|
3005
|
-
## What it is
|
|
3006
|
-
Hardcoding expected TLS certificate/public key in the mobile app to prevent MITM via rogue/compromised CAs.
|
|
3007
|
-
|
|
3008
|
-
## Why it matters
|
|
3009
|
-
Without pinning, a compromised CA or installed rogue cert can intercept 'secure' app traffic.
|
|
3010
|
-
|
|
3011
|
-
## Test checklist
|
|
3012
|
-
- [ ] Confirm pinning is implemented for sensitive API calls
|
|
3013
|
-
- [ ] Test app behavior when presented with an untrusted/rogue certificate
|
|
3014
|
-
- [ ] Confirm a safe pin-rotation process exists (to avoid bricking the app on cert renewal)
|
|
3015
|
-
|
|
3016
|
-
## References
|
|
3017
|
-
- OWASP Mobile Application Security Testing Guide (MASTG)
|
|
3018
|
-
|
|
3019
|
-
**Severity:** High
|
|
3020
|
-
**Example test:** Intercept app traffic with a proxy presenting a non-pinned trusted certificate and confirm the app refuses to connect.
|
|
3021
|
-
**Last reviewed:** 2026-08-29
|
|
3022
|
-
|
|
3023
|
-
### `18_Mobile_App_Security/02_secure_local_storage_mobile.md`
|
|
3024
|
-
|
|
3025
|
-
# Secure Local Storage (Mobile)
|
|
3026
|
-
|
|
3027
|
-
## What it is
|
|
3028
|
-
Storing sensitive data (tokens, credentials, PII) using platform-secure storage (Keychain/Keystore).
|
|
3029
|
-
|
|
3030
|
-
## Why it matters
|
|
3031
|
-
Data stored in plain files/shared prefs can be extracted from a rooted/jailbroken or backed-up device.
|
|
3032
|
-
|
|
3033
|
-
## Test checklist
|
|
3034
|
-
- [ ] Sensitive data stored via Keychain (iOS) / Keystore (Android), not plain files/SharedPreferences
|
|
3035
|
-
- [ ] Confirm data isn't included in unencrypted device/cloud backups
|
|
3036
|
-
- [ ] Test extracting app data from a rooted/jailbroken device
|
|
3037
|
-
|
|
3038
|
-
## References
|
|
3039
|
-
- OWASP MASTG - Data Storage
|
|
3040
|
-
|
|
3041
|
-
**Severity:** High
|
|
3042
|
-
**Example test:** Pull app data off a rooted/jailbroken test device and confirm tokens/PII aren't sitting in plaintext files or SharedPreferences.
|
|
3043
|
-
**Last reviewed:** 2026-08-29
|
|
3044
|
-
|
|
3045
|
-
### `18_Mobile_App_Security/03_jailbreak_root_detection.md`
|
|
3046
|
-
|
|
3047
|
-
# Jailbreak / Root Detection
|
|
3048
|
-
|
|
3049
|
-
## What it is
|
|
3050
|
-
Detecting when the app is running on a compromised (jailbroken/rooted) device.
|
|
3051
|
-
|
|
3052
|
-
## Why it matters
|
|
3053
|
-
Rooted devices bypass OS-level protections the app may rely on.
|
|
3054
|
-
|
|
3055
|
-
## Test checklist
|
|
3056
|
-
- [ ] Confirm detection is in place for common root/jailbreak indicators
|
|
3057
|
-
- [ ] Define and test the app's response (warn vs restrict sensitive features)
|
|
3058
|
-
- [ ] Test detection isn't trivially bypassed by common hiding tools
|
|
3059
|
-
|
|
3060
|
-
## References
|
|
3061
|
-
- OWASP MASTG - Anti-Reversing
|
|
3062
|
-
|
|
3063
|
-
**Severity:** Medium
|
|
3064
|
-
**Example test:** Run the app on a rooted/jailbroken device with a common detection-bypass tool active and confirm the app's protection still triggers or degrades safely.
|
|
3065
|
-
**Last reviewed:** 2026-08-29
|
|
3066
|
-
|
|
3067
|
-
### `18_Mobile_App_Security/04_mobile_api_key_protection.md`
|
|
3068
|
-
|
|
3069
|
-
# Mobile API Key / Secret Protection
|
|
3070
|
-
|
|
3071
|
-
## What it is
|
|
3072
|
-
Protecting API keys and secrets embedded in a distributed mobile app binary.
|
|
3073
|
-
|
|
3074
|
-
## Why it matters
|
|
3075
|
-
Anything shipped in the app binary can be extracted by a determined attacker.
|
|
3076
|
-
|
|
3077
|
-
## Test checklist
|
|
3078
|
-
- [ ] Confirm high-privilege secrets are never embedded in the mobile binary
|
|
3079
|
-
- [ ] Use short-lived tokens issued by a backend, not long-lived static keys in-app
|
|
3080
|
-
- [ ] Test extracting strings/secrets from the compiled app binary
|
|
3081
|
-
- [ ] Confirm backend-issued tokens are scoped narrowly per mobile session
|
|
3082
|
-
|
|
3083
|
-
## References
|
|
3084
|
-
- OWASP MASTG - Code Quality and Build Settings
|
|
3085
|
-
|
|
3086
|
-
**Severity:** High
|
|
3087
|
-
**Example test:** Decompile/extract strings from the shipped app binary and confirm no high-privilege static API key or secret is embedded.
|
|
3088
|
-
**Last reviewed:** 2026-08-29
|
|
3089
|
-
|
|
3090
|
-
|
|
3091
|
-
---
|
|
3092
|
-
|
|
3093
|
-
## 19_Security_Checklists — Security Checklists (Reference Rollups)
|
|
3094
|
-
|
|
3095
|
-
### `19_Security_Checklists/01_owasp_top10_checklist.md`
|
|
3096
|
-
|
|
3097
|
-
# OWASP Top 10 Checklist
|
|
3098
|
-
|
|
3099
|
-
## What it is
|
|
3100
|
-
Reference checklist mapping tests to the OWASP Top 10 web risks.
|
|
3101
|
-
|
|
3102
|
-
## Why it matters
|
|
3103
|
-
Provides a widely recognized baseline for web app security testing.
|
|
3104
|
-
|
|
3105
|
-
## Test checklist
|
|
3106
|
-
- [ ] Broken Access Control tested
|
|
3107
|
-
- [ ] Cryptographic Failures tested
|
|
3108
|
-
- [ ] Injection tested
|
|
3109
|
-
- [ ] Insecure Design reviewed
|
|
3110
|
-
- [ ] Security Misconfiguration tested
|
|
3111
|
-
- [ ] Vulnerable & Outdated Components scanned
|
|
3112
|
-
- [ ] Identification & Authentication Failures tested
|
|
3113
|
-
- [ ] Software & Data Integrity Failures tested
|
|
3114
|
-
- [ ] Security Logging & Monitoring Failures tested
|
|
3115
|
-
- [ ] SSRF tested
|
|
3116
|
-
|
|
3117
|
-
## References
|
|
3118
|
-
- owasp.org/Top10
|
|
3119
|
-
|
|
3120
|
-
**Severity:** Reference
|
|
3121
|
-
**Example test:** Use this as a coverage tracker after running folders 01-18 — check off each OWASP Top 10 category once its dedicated checklist items have been executed.
|
|
3122
|
-
**Last reviewed:** 2026-08-29
|
|
3123
|
-
|
|
3124
|
-
### `19_Security_Checklists/02_api_security_checklist.md`
|
|
3125
|
-
|
|
3126
|
-
# OWASP API Security Top 10 Checklist
|
|
3127
|
-
|
|
3128
|
-
## What it is
|
|
3129
|
-
Checklist specific to API-shaped attack surface.
|
|
3130
|
-
|
|
3131
|
-
## Why it matters
|
|
3132
|
-
APIs have distinct risk patterns from traditional web apps.
|
|
3133
|
-
|
|
3134
|
-
## Test checklist
|
|
3135
|
-
- [ ] Broken Object Level Authorization (BOLA) tested
|
|
3136
|
-
- [ ] Broken Authentication tested
|
|
3137
|
-
- [ ] Broken Object Property Level Authorization tested
|
|
3138
|
-
- [ ] Unrestricted Resource Consumption tested
|
|
3139
|
-
- [ ] Broken Function Level Authorization tested
|
|
3140
|
-
- [ ] Server-Side Request Forgery tested
|
|
3141
|
-
- [ ] Security Misconfiguration tested
|
|
3142
|
-
- [ ] Improper Inventory Management tested
|
|
3143
|
-
|
|
3144
|
-
## References
|
|
3145
|
-
- owasp.org/API-Security
|
|
3146
|
-
|
|
3147
|
-
**Severity:** Reference
|
|
3148
|
-
**Example test:** Use this as a coverage tracker after running folder 01 (API_Security) and relevant items from 02/03 — confirm each OWASP API Top 10 category is addressed.
|
|
3149
|
-
**Last reviewed:** 2026-08-29
|
|
3150
|
-
|
|
3151
|
-
### `19_Security_Checklists/03_pentest_checklist.md`
|
|
3152
|
-
|
|
3153
|
-
# Penetration Test Checklist (added)
|
|
3154
|
-
|
|
3155
|
-
## What it is
|
|
3156
|
-
General structure for conducting an application penetration test.
|
|
3157
|
-
|
|
3158
|
-
## Why it matters
|
|
3159
|
-
Keeps testing consistent, repeatable, and complete.
|
|
3160
|
-
|
|
3161
|
-
## Test checklist
|
|
3162
|
-
- [ ] Scope and rules of engagement defined
|
|
3163
|
-
- [ ] Recon and information gathering completed
|
|
3164
|
-
- [ ] Authenticated + unauthenticated testing both performed
|
|
3165
|
-
- [ ] Findings documented with severity and reproduction steps
|
|
3166
|
-
- [ ] Retest performed after fixes
|
|
3167
|
-
|
|
3168
|
-
## References
|
|
3169
|
-
- PTES - Penetration Testing Execution Standard
|
|
3170
|
-
|
|
3171
|
-
**Severity:** Reference
|
|
3172
|
-
**Example test:** Use this as the top-level structure for any full engagement: confirm scope/RoE are signed before folder-by-folder testing begins.
|
|
3173
|
-
**Last reviewed:** 2026-08-29
|
|
40
|
+
Run `agent-docs list security`, then create only the needed worksheet with `agent-docs security worksheet <phase>`.
|