cyberaudit-skill 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/README.md +77 -0
  2. package/dist/cli.d.ts +2 -0
  3. package/dist/cli.js +241 -0
  4. package/dist/mcp-server.d.ts +2 -0
  5. package/dist/mcp-server.js +126 -0
  6. package/package.json +58 -0
  7. package/skills/cyberaudit/AGENT-BOOT.md +122 -0
  8. package/skills/cyberaudit/COMMANDS.md +1125 -0
  9. package/skills/cyberaudit/INSTALL.md +311 -0
  10. package/skills/cyberaudit/MASTER.md +194 -0
  11. package/skills/cyberaudit/README.md +154 -0
  12. package/skills/cyberaudit/USAGE-GUIDE.md +107 -0
  13. package/skills/cyberaudit/mobile/MOBILE-CHECKLIST.md +245 -0
  14. package/skills/cyberaudit/mobile/MOBILE-PHILOSOPHY.md +352 -0
  15. package/skills/cyberaudit/mobile/MOBILE-REMEDIATION-LIBRARY.md +468 -0
  16. package/skills/cyberaudit/mobile/MOBILE-THREAT-MODELS.md +279 -0
  17. package/skills/cyberaudit/mobile/frameworks/EXPO.md +247 -0
  18. package/skills/cyberaudit/mobile/frameworks/FLUTTER.md +338 -0
  19. package/skills/cyberaudit/mobile/frameworks/IONIC.md +248 -0
  20. package/skills/cyberaudit/mobile/frameworks/REACT-NATIVE.md +479 -0
  21. package/skills/cyberaudit/mobile/vulnerabilities/AUTH-MOBILE.md +160 -0
  22. package/skills/cyberaudit/mobile/vulnerabilities/BINARY-ANALYSIS.md +193 -0
  23. package/skills/cyberaudit/mobile/vulnerabilities/CRYPTO-MOBILE.md +192 -0
  24. package/skills/cyberaudit/mobile/vulnerabilities/IPC-DEEPLINKS.md +231 -0
  25. package/skills/cyberaudit/mobile/vulnerabilities/NETWORK-MOBILE.md +165 -0
  26. package/skills/cyberaudit/mobile/vulnerabilities/PERMISSIONS.md +180 -0
  27. package/skills/cyberaudit/mobile/vulnerabilities/RUNTIME-MOBILE.md +214 -0
  28. package/skills/cyberaudit/mobile/vulnerabilities/STORAGE.md +197 -0
  29. package/skills/cyberaudit/reports/EXECUTIVE-SUMMARY-TEMPLATE.md +188 -0
  30. package/skills/cyberaudit/reports/REPORT-TEMPLATE-MOBILE.md +410 -0
  31. package/skills/cyberaudit/reports/REPORT-TEMPLATE-WEB.md +222 -0
  32. package/skills/cyberaudit/shared/COMPLIANCE.md +307 -0
  33. package/skills/cyberaudit/shared/CVSS-GUIDE.md +175 -0
  34. package/skills/cyberaudit/shared/OWASP-MAPPER.md +130 -0
  35. package/skills/cyberaudit/shared/SEVERITY-SCORING.md +102 -0
  36. package/skills/cyberaudit/shared/THREAT-MODELING.md +112 -0
  37. package/skills/cyberaudit/web/WEB-CHECKLIST.md +222 -0
  38. package/skills/cyberaudit/web/WEB-PHILOSOPHY.md +308 -0
  39. package/skills/cyberaudit/web/WEB-REMEDIATION-LIBRARY.md +665 -0
  40. package/skills/cyberaudit/web/WEB-THREAT-MODELS.md +460 -0
  41. package/skills/cyberaudit/web/frameworks/ANGULAR.md +169 -0
  42. package/skills/cyberaudit/web/frameworks/EXPRESS.md +185 -0
  43. package/skills/cyberaudit/web/frameworks/LARAVEL.md +371 -0
  44. package/skills/cyberaudit/web/frameworks/NESTJS.md +337 -0
  45. package/skills/cyberaudit/web/frameworks/NEXTJS.md +352 -0
  46. package/skills/cyberaudit/web/frameworks/REACT.md +346 -0
  47. package/skills/cyberaudit/web/frameworks/VUE.md +205 -0
  48. package/skills/cyberaudit/web/vulnerabilities/AUTH-AUTHZ.md +117 -0
  49. package/skills/cyberaudit/web/vulnerabilities/BUSINESS-LOGIC.md +603 -0
  50. package/skills/cyberaudit/web/vulnerabilities/CORS.md +117 -0
  51. package/skills/cyberaudit/web/vulnerabilities/CSRF.md +131 -0
  52. package/skills/cyberaudit/web/vulnerabilities/DESERIALIZATION.md +96 -0
  53. package/skills/cyberaudit/web/vulnerabilities/HEADERS.md +105 -0
  54. package/skills/cyberaudit/web/vulnerabilities/IDOR-BOLA.md +153 -0
  55. package/skills/cyberaudit/web/vulnerabilities/INJECTION.md +165 -0
  56. package/skills/cyberaudit/web/vulnerabilities/SECRETS.md +119 -0
  57. package/skills/cyberaudit/web/vulnerabilities/SSRF.md +124 -0
  58. package/skills/cyberaudit/web/vulnerabilities/SUPPLY-CHAIN.md +142 -0
  59. package/skills/cyberaudit/web/vulnerabilities/XSS.md +133 -0
  60. package/skills/cyberaudit/web/vulnerabilities/XXE.md +94 -0
@@ -0,0 +1,102 @@
1
+ # 🎯 SCORING GUIDE — CYBERAUDIT SKILL
2
+ # How to accurately assess each vulnerability
3
+
4
+ ═══════════════════════════════════════════════════════════════
5
+ CVSS 3.1 SCORING METHOD
6
+ ═══════════════════════════════════════════════════════════════
7
+
8
+ CVSS VECTOR : AV:[X]/AC:[X]/PR:[X]/UI:[X]/S:[X]/C:[X]/I:[X]/A:[X]
9
+
10
+ AV — ATTACK VECTOR (How does the attacker reach the target?)
11
+ N = Network : Via internet (worst case)
12
+ A = Adjacent : Same local network
13
+ L = Local : Local access required
14
+ P = Physical : Physical access required (best case)
15
+
16
+ AC — ATTACK COMPLEXITY (Difficult to exploit?)
17
+ L = Low : No special conditions
18
+ H = High : Specific conditions required (race condition, etc.)
19
+
20
+ PR — PRIVILEGES REQUIRED (Required privileges?)
21
+ N = None : Anonymous (worst case)
22
+ L = Low : Normal user
23
+ H = High : Admin/Root required
24
+
25
+ UI — USER INTERACTION (User interaction needed?)
26
+ N = None : Direct exploitation
27
+ R = Required : Victim must click/take an action
28
+
29
+ S — SCOPE (Impact beyond the vulnerable component?)
30
+ U = Unchanged : Impact limited to the component
31
+ C = Changed : Impact on other components (worse)
32
+
33
+ C — CONFIDENTIALITY IMPACT
34
+ H = High : All data exposed
35
+ L = Low : Partial data exposed
36
+ N = None : No confidentiality impact
37
+
38
+ I — INTEGRITY IMPACT
39
+ H = High : All data modifiable
40
+ L = Low : Partial modification possible
41
+ N = None : No integrity impact
42
+
43
+ A — AVAILABILITY IMPACT
44
+ H = High : Service completely unavailable
45
+ L = Low : Partial degradation
46
+ N = None : No availability impact
47
+
48
+ ═══════════════════════════════════════════════════════════════
49
+ REAL-WORLD SCORING EXAMPLES
50
+ ═══════════════════════════════════════════════════════════════
51
+
52
+ SQL INJECTION ON PUBLIC LOGIN
53
+ AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H
54
+ Score : 10.0 CRITICAL
55
+ Reason : Network, easy, anonymous, no interaction,
56
+ total impact on entire system
57
+
58
+ IDOR ON AUTHENTICATED API
59
+ AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N
60
+ Score : 7.1 HIGH
61
+ Reason : Network, easy, but auth required,
62
+ full read but limited modification
63
+
64
+ REFLECTED XSS WITH CSP
65
+ AV:N/AC:H/PR:N/UI:R/S:C/C:L/I:L/A:N
66
+ Score : 4.7 MEDIUM
67
+ Reason : CSP mitigates impact, interaction required,
68
+ higher complexity with partial CSP
69
+
70
+ MISSING X-CONTENT-TYPE-OPTIONS HEADER
71
+ AV:N/AC:H/PR:N/UI:R/S:U/C:L/I:N/A:N
72
+ Score : 3.1 LOW
73
+ Reason : Complex exploitation, interaction required,
74
+ limited impact
75
+
76
+ ═══════════════════════════════════════════════════════════════
77
+ SCORING DECISIONS FOR THE AGENT
78
+ ═══════════════════════════════════════════════════════════════
79
+
80
+ WHEN TO RAISE ONE LEVEL:
81
+ → Endpoint is accessible without authentication
82
+ → PII/financial/health data is involved
83
+ → Exploitation is documented with a public PoC
84
+ → The vulnerability is in the critical path (auth, payment)
85
+ → No other protection layers
86
+
87
+ WHEN TO LOWER ONE LEVEL:
88
+ → Authentication required to exploit
89
+ → Only non-sensitive data impacted
90
+ → WAF or other protection in place and effective
91
+ → Internal network access only
92
+ → Exploitation requires very specific conditions
93
+
94
+ ABSOLUTE SCORING RULES:
95
+ → Hardcoded prod secrets = CRITICAL minimum (always)
96
+ → SQLi without auth on user data = CRITICAL (always)
97
+ → Debug mode in production = HIGH minimum (always)
98
+ → MD5/SHA1 password = CRITICAL (always)
99
+ → JWT algorithm:none = CRITICAL (always)
100
+ → AsyncStorage with auth token = HIGH (always)
101
+ → Missing certificate pinning on financial app = CRITICAL
102
+ → Missing certificate pinning on standard app = HIGH
@@ -0,0 +1,112 @@
1
+ # 🎯 THREAT MODELING — CYBERAUDIT SKILL
2
+ # Threat modeling framework for agents
3
+
4
+ ═══════════════════════════════════════════════════════════════
5
+ APPLIED STRIDE METHOD
6
+ ═══════════════════════════════════════════════════════════════
7
+
8
+ STRIDE = 6 universal threat categories
9
+
10
+ S — SPOOFING (Identity spoofing)
11
+ Question : "Can an attacker pretend to be someone else?"
12
+ Web : Auth bypass, forged JWT, session hijacking, phishing
13
+ Mobile : Spoofed certificate, fake app, deeplink hijacking
14
+ Control : Strong authentication, certificate pinning, MFA
15
+
16
+ T — TAMPERING (Falsification)
17
+ Question : "Can an attacker modify data?"
18
+ Web : SQLi, CSRF, mass assignment, man-in-the-middle
19
+ Mobile : Binary tampering, traffic interception, storage modification
20
+ Control : Data integrity, signatures, HTTPS, validation
21
+
22
+ R — REPUDIATION (Non-repudiation)
23
+ Question : "Can an attacker deny their actions?"
24
+ Web : Insufficient logs, missing audit trail
25
+ Mobile : No logging of sensitive actions
26
+ Control : Complete logging, timestamp, action signing
27
+
28
+ I — INFORMATION DISCLOSURE (Information disclosure)
29
+ Question : "Can an attacker access confidential data?"
30
+ Web : IDOR, error messages, source maps, exposed secrets
31
+ Mobile : Plaintext storage, sensitive logs, binary strings
32
+ Control : Encryption, least privilege, output filtering
33
+
34
+ D — DENIAL OF SERVICE (Denial of service)
35
+ Question : "Can an attacker make the service unavailable?"
36
+ Web : No rate limiting, expensive requests not limited
37
+ Mobile : Battery drain attacks, excessive network requests
38
+ Control : Rate limiting, timeouts, circuit breakers
39
+
40
+ E — ELEVATION OF PRIVILEGE (Privilege escalation)
41
+ Question : "Can an attacker obtain more rights?"
42
+ Web : BFLA, mass role assignment, IDOR on admin
43
+ Mobile : Jailbreak bypass, root privilege abuse
44
+ Control : Strict RBAC, rights verification, least privilege
45
+
46
+ ═══════════════════════════════════════════════════════════════
47
+ ATTACK TREE BY APP TYPE
48
+ ═══════════════════════════════════════════════════════════════
49
+
50
+ E-COMMERCE (Priorities)
51
+ 1. Payment bypass (business logic)
52
+ 2. Credit card data theft
53
+ 3. Account takeover → fraudulent purchase
54
+ 4. Price manipulation
55
+ 5. Personal data theft (GDPR)
56
+
57
+ SaaS B2B (Priorities)
58
+ 1. Access to other tenants' data (isolation)
59
+ 2. Admin account takeover
60
+ 3. Mass data export
61
+ 4. API abuse / scraping
62
+ 5. Privilege escalation between plans
63
+
64
+ HEALTH / FINANCE APP (Priorities)
65
+ 1. Access to others' medical/financial data
66
+ 2. Modification of critical data
67
+ 3. Credential compromise
68
+ 4. Regulatory non-compliance (HIPAA, PCI-DSS)
69
+ 5. Insufficient logging for legal audit
70
+
71
+ FINANCIAL MOBILE APP (Priorities)
72
+ 1. Token/session theft on compromised device
73
+ 2. Transaction interception (MitM)
74
+ 3. Amount manipulation
75
+ 4. Screenshot / recording of sensitive data
76
+ 5. Root/jailbreak bypass of protections
77
+
78
+ ═══════════════════════════════════════════════════════════════
79
+ COMMON KILL CHAINS
80
+ ═══════════════════════════════════════════════════════════════
81
+
82
+ KILL CHAIN 1 — ACCOUNT TAKEOVER VIA RESET PASSWORD
83
+ 1. Account enumeration via /forgot-password
84
+ (different message depending on whether email exists)
85
+ 2. Predictable reset token or no expiration
86
+ 3. Token intercepted or brute forced
87
+ 4. Account compromised → access to all data
88
+
89
+ KILL CHAIN 2 — DATA BREACH VIA CHAINED IDOR
90
+ 1. Discovery of an endpoint with sequential ID
91
+ GET /api/orders/1234
92
+ 2. Enumeration : 1234, 1235, 1236...
93
+ 3. Extraction of all orders/data
94
+ 4. Personal data of all users exposed
95
+
96
+ KILL CHAIN 3 — RCE VIA FILE UPLOAD + PATH TRAVERSAL
97
+ 1. Upload a .php file disguised as .jpg
98
+ (MIME type spoofed)
99
+ 2. File stored in a web-accessible directory
100
+ 3. Direct access to the uploaded file
101
+ 4. PHP code execution → shell → RCE
102
+
103
+ KILL CHAIN 4 — MOBILE DATA BREACH VIA BACKUP
104
+ 1. Android app without backup restrictions
105
+ android:allowBackup="true"
106
+ 2. ADB backup extracted without root required
107
+ 3. AsyncStorage/SharedPreferences read in plaintext
108
+ 4. Authentication tokens extracted
109
+ 5. Session hijacking on any device
110
+
111
+ These kill chains must be documented when the exploitation
112
+ conditions are met in the audited code.
@@ -0,0 +1,222 @@
1
+ # ✅ MASTER CHECKLIST WEB — CYBERAUDIT SKILL
2
+ # The ultimate checklist — Never skip a line
3
+
4
+ ═══════════════════════════════════════════════════════════════
5
+ INSTRUCTIONS: Check each item. Document every ❌.
6
+ A ❌ = a potential finding to investigate.
7
+ A ⚠️ = context-dependent, investigate and justify.
8
+ ═══════════════════════════════════════════════════════════════
9
+
10
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
11
+ SECTION 1 — SECRETS AND CONFIGURATION
12
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
13
+
14
+ □ No API key in source code
15
+ □ No password in source code
16
+ □ No private key in source code
17
+ □ No token in source code
18
+ □ No secret in comments
19
+ □ No secret in test files
20
+ □ No .env file committed in git
21
+ □ .env in .gitignore (check the file)
22
+ □ Environment variables validated at startup
23
+ □ Debug/development mode disabled in prod
24
+ □ Error handling does not reveal stack trace in prod
25
+ □ Headers revealing technology removed
26
+ (X-Powered-By, Server, X-AspNet-Version)
27
+ □ Version information not publicly exposed
28
+ □ Debug/info endpoints disabled in prod
29
+ (/phpinfo, /debug, /.env, /server-status, etc.)
30
+
31
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
32
+ SECTION 2 — AUTHENTICATION
33
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
34
+
35
+ □ Passwords hashed with bcrypt/argon2/scrypt
36
+ □ MD5, SHA1, SHA256 (without salt) never used for passwords
37
+ □ Unique salt per password
38
+ □ Strong password policy (minimum length)
39
+ □ Rate limiting on login attempts
40
+ □ Lockout after N failures (or CAPTCHA)
41
+ □ JWT: verify() used (not decode())
42
+ □ JWT: algorithm explicitly specified
43
+ □ JWT: algorithm "none" refused
44
+ □ JWT: expiration configured (access ≤ 15min)
45
+ □ JWT: refresh tokens with rotation
46
+ □ JWT: revocation possible (blacklist or rotation)
47
+ □ Sessions: cryptographically random ID
48
+ □ Sessions: regeneration after login
49
+ □ Sessions: invalidation on logout
50
+ □ Sessions: inactivity expiration configured
51
+ □ Reset password: random and unique token
52
+ □ Reset password: short expiration (15-30min)
53
+ □ Reset password: single-use token
54
+ □ Reset password: message not revealing account existence
55
+ □ OAuth: state parameter validated (anti-CSRF)
56
+ □ OAuth: redirect_uri strictly validated
57
+ □ MFA: available on sensitive accounts
58
+ □ Default credentials nonexistent
59
+
60
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
61
+ SECTION 3 — AUTHORIZATION
62
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
63
+
64
+ □ Auth verification server-side on EVERY endpoint
65
+ □ Public routes explicitly defined (whitelist)
66
+ □ RBAC implemented and verified server-side
67
+ □ Ownership verified for every resource access
68
+ (Can the user access THIS object?)
69
+ □ Predictable IDs avoided (UUIDs or opaque IDs)
70
+ □ Mass assignment: whitelist of allowed fields
71
+ □ Sensitive fields excluded from mass updates
72
+ (role, is_admin, balance, verified, etc.)
73
+ □ Admin function access verified, not just hidden
74
+ □ Privilege elevation via parameter impossible
75
+ □ Pagination: server-side limit enforced
76
+
77
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
78
+ SECTION 4 — INJECTION
79
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
80
+
81
+ □ SQL queries: only parameterized or ORM
82
+ □ No variable interpolation in SQL queries
83
+ □ NoSQL queries: injection operators impossible
84
+ □ OS commands: exec/system with user input absent
85
+ □ Templates: user input not injected into engines
86
+ □ File paths: confined to allowed directory
87
+ □ Uploaded filenames: regenerated randomly
88
+ □ XML: external entities disabled
89
+ □ GraphQL: introspection disabled in prod
90
+ □ GraphQL: query depth and complexity limited
91
+ □ Logs: log injection impossible (newlines filtered)
92
+
93
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
94
+ SECTION 5 — XSS AND OUTPUT
95
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
96
+
97
+ □ All HTML output encoded/escaped
98
+ □ Direct innerHTML absent (or sanitized)
99
+ □ dangerouslySetInnerHTML with DOMPurify if used
100
+ □ Blade {!! !!} with HTMLPurifier if used
101
+ □ URLs in href validated (not javascript:)
102
+ □ Correct Content-Type on all responses
103
+ □ JSON: Content-Type: application/json (not text/html)
104
+ □ CSP configured and restrictive
105
+ □ X-Content-Type-Options: nosniff present
106
+
107
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
108
+ SECTION 6 — CSRF AND CLICKJACKING
109
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
110
+
111
+ □ CSRF tokens on all POST forms
112
+ □ CSRF verification server-side
113
+ □ SameSite=Strict or Lax on session cookies
114
+ □ Webhooks: HMAC signature verified
115
+ □ X-Frame-Options or CSP frame-ancestors configured
116
+ □ Destructive actions require explicit confirmation
117
+
118
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
119
+ SECTION 7 — SECURITY HEADERS
120
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
121
+
122
+ □ Content-Security-Policy configured
123
+ □ Strict-Transport-Security configured (HSTS)
124
+ (max-age=31536000; includeSubDomains; preload)
125
+ □ X-Frame-Options: DENY or SAMEORIGIN
126
+ □ X-Content-Type-Options: nosniff
127
+ □ Referrer-Policy configured
128
+ □ Permissions-Policy configured
129
+ □ Cache-Control: no-store on sensitive data
130
+ □ HTTPS only (no HTTP downgrade possible)
131
+
132
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
133
+ SECTION 8 — CORS
134
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
135
+
136
+ □ Access-Control-Allow-Origin: * absent on authenticated APIs
137
+ □ CORS origins whitelisted explicitly
138
+ □ credentials: true never combined with origin: *
139
+ □ CORS methods limited to necessary
140
+ □ CORS headers limited to necessary
141
+ □ Preflight properly handled
142
+
143
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
144
+ SECTION 9 — FILE UPLOAD
145
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
146
+
147
+ □ MIME type verified server-side (not just extension)
148
+ □ Whitelist of allowed extensions
149
+ □ Maximum size enforced
150
+ □ Filename regenerated randomly
151
+ □ Files stored outside webroot
152
+ □ Code execution impossible in upload folder
153
+ □ Antivirus scan on uploads (if critical)
154
+ □ Image resize/recompress to strip metadata
155
+
156
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
157
+ SECTION 10 — DEPENDENCIES
158
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
159
+
160
+ □ npm audit / yarn audit / composer audit: clean?
161
+ □ No critical or high CVE unaddressed
162
+ □ Lock files committed (package-lock.json, yarn.lock, composer.lock)
163
+ □ Direct dependencies only from npm/packagist
164
+ □ Main framework up to date (or close)
165
+ □ Abandoned dependencies identified and replaced
166
+
167
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
168
+ SECTION 11 — RATE LIMITING & DOS
169
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
170
+
171
+ □ Global rate limiting configured
172
+ □ Specific rate limiting on: login, register, reset-password
173
+ □ Rate limiting on expensive endpoints (upload, export, search)
174
+ □ Pagination: page size limited server-side
175
+ □ Timeouts configured on outgoing requests
176
+ □ Body size limited (no infinite upload in memory)
177
+
178
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
179
+ SECTION 12 — LOGGING AND MONITORING
180
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
181
+
182
+ □ Auth events logged (login, logout, failures)
183
+ □ Sensitive actions logged (deletion, role modification)
184
+ □ Logs do not contain sensitive data
185
+ (no passwords, tokens, card numbers in logs)
186
+ □ Logs structured (JSON) and centralized
187
+ □ Alerts configured on suspicious events
188
+ □ Logs integrity-protected (append-only or SIEM)
189
+
190
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
191
+ SECTION 13 — SSRF
192
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
193
+
194
+ □ No HTTP request based on a user-provided URL
195
+ without strict validation
196
+ □ If URL fetch necessary: whitelist of allowed domains
197
+ □ Access to cloud metadata blocked
198
+ (169.254.169.254, fd00:ec2::254)
199
+ □ Access to internal network (10.x, 172.x, 192.168.x) blocked
200
+ □ Redirect following: limited and validated
201
+ □ DNS rebinding: protections in place
202
+
203
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
204
+ SECTION 14 — CRYPTOGRAPHY
205
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
206
+
207
+ □ Modern algorithms only:
208
+ Encryption : AES-256-GCM, ChaCha20-Poly1305
209
+ Data hashing : SHA-256 minimum
210
+ Password hash : bcrypt, argon2, scrypt
211
+ Asymmetric : RSA-2048+, ECDSA P-256+
212
+ □ DES, 3DES, RC4, MD5, SHA1 absent
213
+ □ Encryption keys stored separately from data
214
+ □ Unique IV/Nonce per encryption
215
+ □ Cryptographically secure random generation
216
+ (crypto.randomBytes, openssl_random_pseudo_bytes)
217
+ □ Sensitive data encrypted in database
218
+ □ Encryption keys rotated regularly
219
+
220
+ ═══════════════════════════════════════════════════════════════
221
+ SCORE : [___ compliant items] / [___ applicable items] = ____%
222
+ ═══════════════════════════════════════════════════════════════