@ghostbyte/agent-docs-kit 0.0.0-stage → 4.0.2

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.
Files changed (80) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +82 -2
  3. package/bin/agent-docs.mjs +8 -0
  4. package/content/catalog.json +196 -0
  5. package/content/engineering/01-query-performance.md +48 -0
  6. package/content/engineering/02-networking-fundamentals.md +48 -0
  7. package/content/engineering/03-rate-limiting-algorithms.md +48 -0
  8. package/content/engineering/04-production-debugging.md +48 -0
  9. package/content/engineering/05-code-review-practices.md +48 -0
  10. package/content/engineering/06-data-modeling.md +48 -0
  11. package/content/engineering/07-cloud-cost-saving.md +48 -0
  12. package/content/engineering/08-testing-types.md +48 -0
  13. package/content/engineering/09-message-queues.md +48 -0
  14. package/content/engineering/full-reference.md +144 -0
  15. package/content/security/01-design-architecture.md +39 -0
  16. package/content/security/02-local-development.md +41 -0
  17. package/content/security/03-database-backend.md +46 -0
  18. package/content/security/04-api-layer.md +51 -0
  19. package/content/security/05-frontend-ui.md +44 -0
  20. package/content/security/06-application-security-testing.md +48 -0
  21. package/content/security/07-cicd-release-engineering.md +41 -0
  22. package/content/security/08-cloud-infrastructure.md +45 -0
  23. package/content/security/09-edge-cdn-dns.md +44 -0
  24. package/content/security/10-release-rollout.md +41 -0
  25. package/content/security/11-post-release-monitoring-ir.md +43 -0
  26. package/content/security/12-ongoing-operations.md +52 -0
  27. package/content/security/full-reference.md +3173 -0
  28. package/docs/ARCHITECTURE.md +107 -0
  29. package/docs/CONTENT_MAINTENANCE.md +9 -0
  30. package/docs/GITHUB_AND_NPM_SETUP.md +112 -0
  31. package/docs/PURPOSE.md +23 -0
  32. package/docs/RELEASE_PROCESS.md +22 -0
  33. package/docs/SECURITY_MODEL.md +9 -0
  34. package/package.json +57 -4
  35. package/skills/manage-project-quality/SKILL.md +78 -0
  36. package/skills/manage-project-quality/agents/openai.yaml +4 -0
  37. package/skills/manage-project-quality/assets/documentation-report.md +12 -0
  38. package/skills/manage-project-quality/assets/engineering-report.md +13 -0
  39. package/skills/manage-project-quality/assets/security-report.md +18 -0
  40. package/skills/manage-project-quality/references/documentation-governance.md +39 -0
  41. package/skills/manage-project-quality/references/engineering-01-query-performance.md +48 -0
  42. package/skills/manage-project-quality/references/engineering-02-networking-fundamentals.md +48 -0
  43. package/skills/manage-project-quality/references/engineering-03-rate-limiting-algorithms.md +48 -0
  44. package/skills/manage-project-quality/references/engineering-04-production-debugging.md +48 -0
  45. package/skills/manage-project-quality/references/engineering-05-code-review-practices.md +48 -0
  46. package/skills/manage-project-quality/references/engineering-06-data-modeling.md +48 -0
  47. package/skills/manage-project-quality/references/engineering-07-cloud-cost-saving.md +48 -0
  48. package/skills/manage-project-quality/references/engineering-08-testing-types.md +48 -0
  49. package/skills/manage-project-quality/references/engineering-09-message-queues.md +48 -0
  50. package/skills/manage-project-quality/references/engineering-full-reference.md +144 -0
  51. package/skills/manage-project-quality/references/engineering-protocol.md +23 -0
  52. package/skills/manage-project-quality/references/evidence-and-reporting.md +19 -0
  53. package/skills/manage-project-quality/references/security-01-design-architecture.md +39 -0
  54. package/skills/manage-project-quality/references/security-02-local-development.md +41 -0
  55. package/skills/manage-project-quality/references/security-03-database-backend.md +46 -0
  56. package/skills/manage-project-quality/references/security-04-api-layer.md +51 -0
  57. package/skills/manage-project-quality/references/security-05-frontend-ui.md +44 -0
  58. package/skills/manage-project-quality/references/security-06-application-security-testing.md +48 -0
  59. package/skills/manage-project-quality/references/security-07-cicd-release-engineering.md +41 -0
  60. package/skills/manage-project-quality/references/security-08-cloud-infrastructure.md +45 -0
  61. package/skills/manage-project-quality/references/security-09-edge-cdn-dns.md +44 -0
  62. package/skills/manage-project-quality/references/security-10-release-rollout.md +41 -0
  63. package/skills/manage-project-quality/references/security-11-post-release-monitoring-ir.md +43 -0
  64. package/skills/manage-project-quality/references/security-12-ongoing-operations.md +52 -0
  65. package/skills/manage-project-quality/references/security-full-reference.md +3173 -0
  66. package/skills/manage-project-quality/references/security-protocol.md +22 -0
  67. package/skills/manage-project-quality/scripts/check-report.mjs +23 -0
  68. package/src/api/index.mjs +4 -0
  69. package/src/cli/arguments.mjs +30 -0
  70. package/src/cli/help.mjs +24 -0
  71. package/src/cli/main.mjs +65 -0
  72. package/src/commands/audit.mjs +49 -0
  73. package/src/commands/doctor.mjs +12 -0
  74. package/src/commands/list.mjs +11 -0
  75. package/src/commands/setup.mjs +42 -0
  76. package/src/commands/skill.mjs +14 -0
  77. package/src/commands/validate.mjs +20 -0
  78. package/src/core/catalog.mjs +19 -0
  79. package/src/core/files.mjs +42 -0
  80. package/src/core/paths.mjs +5 -0
@@ -0,0 +1,3173 @@
1
+ # Dev Quality Agent — Security Checklist
2
+
3
+ A single consolidated reference covering all 19 security domains: code, API,
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.
7
+
8
+ Each item includes: what it is, why it matters, the original test checklist,
9
+ a **severity** rating, one **concrete example test step**, a **last reviewed**
10
+ date, and (where relevant) **see also** cross-links to related items.
11
+
12
+ See `../UPDATE_CADENCE.md` for the review schedule and version log, and
13
+ `SECURITY_RESULTS_TEMPLATE.md` for how to record findings from a pass through this
14
+ document.
15
+
16
+ ## Before you start
17
+
18
+ - Only point testing (yours or an agent's) at systems you own or have explicit
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.
24
+
25
+ ## Table of contents
26
+
27
+
28
+ - [01_API_Security — API Security](#01_api_security)
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)
47
+
48
+
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