cyberaudit-skill 3.1.5 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +84 -25
- package/dist/cli.d.ts +10 -0
- package/dist/cli.js +552 -172
- package/dist/cli.test.d.ts +1 -0
- package/dist/cli.test.js +100 -0
- package/dist/mcp-server.d.ts +135 -1
- package/dist/mcp-server.js +185 -96
- package/dist/mcp-server.test.d.ts +1 -0
- package/dist/mcp-server.test.js +77 -0
- package/dist/report/generator.d.ts +2 -0
- package/dist/report/generator.js +260 -0
- package/dist/report/generator.test.d.ts +1 -0
- package/dist/report/generator.test.js +73 -0
- package/dist/report/types.d.ts +31 -0
- package/dist/report/types.js +1 -0
- package/dist/scanners/secrets.d.ts +32 -0
- package/dist/scanners/secrets.js +437 -0
- package/dist/scanners/secrets.test.d.ts +1 -0
- package/dist/scanners/secrets.test.js +96 -0
- package/dist/scanners/types.d.ts +22 -0
- package/dist/scanners/types.js +1 -0
- package/dist/scanners/web.d.ts +37 -0
- package/dist/scanners/web.js +327 -0
- package/dist/scanners/web.test.d.ts +1 -0
- package/dist/scanners/web.test.js +67 -0
- package/package.json +15 -3
- package/skills/cyberaudit/AGENT-BOOT.md +1 -1
- package/skills/cyberaudit/COMMANDS.md +11 -1
- package/skills/cyberaudit/INSTALL.md +7 -6
- package/skills/cyberaudit/README.md +20 -5
- package/skills/cyberaudit/SKILL.md +20 -5
- package/skills/cyberaudit/cloud/CLOUD-CHECKLIST.md +85 -0
- package/skills/cyberaudit/cloud/CLOUD-PHILOSOPHY.md +91 -0
- package/skills/cyberaudit/cloud/CLOUD-REMEDIATION-LIBRARY.md +145 -0
- package/skills/cyberaudit/commands/audit-angular.md +11 -0
- package/skills/cyberaudit/commands/audit-api-bola.md +11 -0
- package/skills/cyberaudit/commands/audit-api-bopla.md +11 -0
- package/skills/cyberaudit/commands/audit-api-graphql.md +11 -0
- package/skills/cyberaudit/commands/audit-api-inventory.md +11 -0
- package/skills/cyberaudit/commands/audit-api-rate-limit.md +11 -0
- package/skills/cyberaudit/commands/audit-api-rest.md +11 -0
- package/skills/cyberaudit/commands/audit-api-third-party.md +11 -0
- package/skills/cyberaudit/commands/audit-api-ws.md +11 -0
- package/skills/cyberaudit/commands/audit-auth-api.md +11 -0
- package/skills/cyberaudit/commands/audit-auth-mobile.md +11 -0
- package/skills/cyberaudit/commands/audit-auth.md +12 -0
- package/skills/cyberaudit/commands/audit-binary.md +11 -0
- package/skills/cyberaudit/commands/audit-cis.md +11 -0
- package/skills/cyberaudit/commands/audit-cloud-iam.md +11 -0
- package/skills/cyberaudit/commands/audit-cloud-network.md +11 -0
- package/skills/cyberaudit/commands/audit-cloud-s3.md +11 -0
- package/skills/cyberaudit/commands/audit-cloud.md +10 -0
- package/skills/cyberaudit/commands/audit-cors.md +11 -0
- package/skills/cyberaudit/commands/audit-crypto-mobile.md +11 -0
- package/skills/cyberaudit/commands/audit-crypto.md +10 -0
- package/skills/cyberaudit/commands/audit-csrf.md +11 -0
- package/skills/cyberaudit/commands/audit-deeplinks.md +11 -0
- package/skills/cyberaudit/commands/audit-deps.md +11 -0
- package/skills/cyberaudit/commands/audit-deserial.md +11 -0
- package/skills/cyberaudit/commands/audit-exec.md +11 -0
- package/skills/cyberaudit/commands/audit-expo.md +11 -0
- package/skills/cyberaudit/commands/audit-express.md +11 -0
- package/skills/cyberaudit/commands/audit-flutter.md +11 -0
- package/skills/cyberaudit/commands/audit-headers.md +11 -0
- package/skills/cyberaudit/commands/audit-hipaa.md +11 -0
- package/skills/cyberaudit/commands/audit-idor.md +11 -0
- package/skills/cyberaudit/commands/audit-injection.md +12 -0
- package/skills/cyberaudit/commands/audit-ionic.md +11 -0
- package/skills/cyberaudit/commands/audit-laravel.md +11 -0
- package/skills/cyberaudit/commands/audit-logic.md +11 -0
- package/skills/cyberaudit/commands/audit-masvs.md +11 -0
- package/skills/cyberaudit/commands/audit-nestjs.md +11 -0
- package/skills/cyberaudit/commands/audit-network.md +11 -0
- package/skills/cyberaudit/commands/audit-nextjs.md +11 -0
- package/skills/cyberaudit/commands/audit-owasp.md +11 -0
- package/skills/cyberaudit/commands/audit-pci.md +11 -0
- package/skills/cyberaudit/commands/audit-permissions.md +11 -0
- package/skills/cyberaudit/commands/audit-react-native.md +11 -0
- package/skills/cyberaudit/commands/audit-react.md +11 -0
- package/skills/cyberaudit/commands/audit-rgpd.md +11 -0
- package/skills/cyberaudit/commands/audit-runtime.md +11 -0
- package/skills/cyberaudit/commands/audit-secrets.md +11 -0
- package/skills/cyberaudit/commands/audit-ssrf.md +11 -0
- package/skills/cyberaudit/commands/audit-storage.md +11 -0
- package/skills/cyberaudit/commands/audit-vue.md +11 -0
- package/skills/cyberaudit/commands/audit-xss.md +11 -0
- package/skills/cyberaudit/commands/audit-xxe.md +11 -0
- package/skills/cyberaudit/reports/EXECUTIVE-SUMMARY-TEMPLATE.md +1 -1
- package/skills/cyberaudit/reports/REPORT-TEMPLATE-CLOUD.md +103 -0
- package/skills/cyberaudit/reports/REPORT-TEMPLATE-MOBILE.md +2 -2
- package/skills/cyberaudit/reports/REPORT-TEMPLATE-WEB.md +2 -2
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# ✅ CLOUD CHECKLIST — CYBERAUDIT SKILL
|
|
2
|
+
# OWASP Cloud / CIS Benchmark aligned
|
|
3
|
+
|
|
4
|
+
═══════════════════════════════════════════════════════════════
|
|
5
|
+
INSTRUCTIONS: Check each item. Document ❌.
|
|
6
|
+
✅ = Conforming ❌ = Finding ⚠️ = Context-dependent
|
|
7
|
+
═══════════════════════════════════════════════════════════════
|
|
8
|
+
|
|
9
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
10
|
+
SECTION 1 — STORAGE (S3, GCS, Blob)
|
|
11
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
12
|
+
□ No bucket/container publicly readable (ACL: private)
|
|
13
|
+
□ No bucket with public ACL + ListObjects
|
|
14
|
+
□ No bucket policy with Principal: "*"
|
|
15
|
+
□ Versioning enabled for critical buckets
|
|
16
|
+
□ Encryption at rest (SSE-S3 / SSE-KMS / CMK)
|
|
17
|
+
□ No sensitive data (keys, .env, backups) in bucket
|
|
18
|
+
□ Lifecyle / retention defined, no infinite public snapshots
|
|
19
|
+
□ Signed URLs with short expiry, not permanent public URLs
|
|
20
|
+
□ Logging enabled (S3 access logs / CloudTrail data events)
|
|
21
|
+
|
|
22
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
23
|
+
SECTION 2 — IAM & PRIVILEGES
|
|
24
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
25
|
+
□ No wildcard (*) in Action + Resource
|
|
26
|
+
□ No admin (*) policies attached to app role/user
|
|
27
|
+
□ Least privilege: role per service, not one god-role
|
|
28
|
+
□ No long-lived access keys in repo / env / IaC
|
|
29
|
+
□ Access keys rotated <90 days, unused removed
|
|
30
|
+
□ MFA enforced for console, especially root/admin
|
|
31
|
+
□ IAM: no password auth without MFA
|
|
32
|
+
□ Service accounts / roles with trust policy restrictive
|
|
33
|
+
(no sts:AssumeRole from "*")
|
|
34
|
+
□ Permission boundaries in place for delegated roles
|
|
35
|
+
|
|
36
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
37
|
+
SECTION 3 — NETWORK & SECURITY GROUPS
|
|
38
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
39
|
+
□ No SG 0.0.0.0/0 → 22 (SSH) or 3389 (RDP)
|
|
40
|
+
□ No SG 0.0.0.0/0 → 6379 (Redis), 27017 (Mongo), 5432, 3306
|
|
41
|
+
□ No SG 0.0.0.0/0 → sensitive ports (internal ALB, etc.)
|
|
42
|
+
□ ALB/NLB: TLS 1.2+ only, not TLS 1.0/1.1
|
|
43
|
+
□ No ELB with HTTP listener forwarding secrets
|
|
44
|
+
□ VPC: private subnets for DB/cache, public only for LB
|
|
45
|
+
□ Flow logs enabled
|
|
46
|
+
□ No IGW route to private subnets
|
|
47
|
+
|
|
48
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
49
|
+
SECTION 4 — SECRETS & ENV
|
|
50
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
51
|
+
□ No secrets in Terraform / CloudFormation / ARM plain
|
|
52
|
+
□ Secrets stored in Secrets Manager / Parameter Store / KeyVault
|
|
53
|
+
□ No .env file committed, no secret in user-data / startup-script
|
|
54
|
+
□ KMS CMK used for sensitive encryption, rotation enabled
|
|
55
|
+
□ No hard-coded secrets in Lambda env vars (use Secrets Manager)
|
|
56
|
+
□ No API keys in frontend / mobile bundled
|
|
57
|
+
|
|
58
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
59
|
+
SECTION 5 — LOGGING & MONITORING
|
|
60
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
61
|
+
□ CloudTrail / Audit Log enabled, multi-region, encrypted
|
|
62
|
+
□ No CloudTrail bucket public
|
|
63
|
+
□ Alerts: root login, IAM changes, SG changes, bucket policy changes
|
|
64
|
+
□ GuardDuty / Security Center / Defender for Cloud enabled
|
|
65
|
+
□ Config / Policy Analyzer enabled for compliance drift
|
|
66
|
+
|
|
67
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
68
|
+
SECTION 6 — COMPUTE (EC2, Lambda, Cloud Run)
|
|
69
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
70
|
+
□ No IMDSv1 (enforce IMDSv2) → blocks SSRF → 169.254.169.254
|
|
71
|
+
□ No Lambda with public Function URL without auth
|
|
72
|
+
□ No EC2 with public IP + open SG + IAM god-role (SSRF pivot)
|
|
73
|
+
□ Runtime updated, no EOL (Node 14, Python 3.8, etc.)
|
|
74
|
+
□ No debug endpoints in prod (/debug, /console)
|
|
75
|
+
|
|
76
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
77
|
+
SECTION 7 — IaC & SUPPLY CHAIN
|
|
78
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
79
|
+
□ Terraform state not public, encrypted (S3 + DynamoDB lock)
|
|
80
|
+
□ No tfvars with secrets committed
|
|
81
|
+
□ IaC scanned (checkov, tfsec, cfn-nag) — 0 critical
|
|
82
|
+
□ Provider versions pinned, not *
|
|
83
|
+
□ No public ECR/GCR images with secrets in layers
|
|
84
|
+
|
|
85
|
+
SCORE : [___ compliant items] / [___ applicable items] = ____%
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# ☁️ CLOUD AUDIT PHILOSOPHY — CYBERAUDIT SKILL
|
|
2
|
+
# The mindset for cloud configuration audit
|
|
3
|
+
|
|
4
|
+
═══════════════════════════════════════════════════════════════
|
|
5
|
+
CLOUD MENTAL MODEL
|
|
6
|
+
═══════════════════════════════════════════════════════════════
|
|
7
|
+
|
|
8
|
+
CLOUD = Someone else's computer that you configure with text.
|
|
9
|
+
Every line of IaC is a security decision.
|
|
10
|
+
|
|
11
|
+
PRINCIPLE 1 — IDENTITY IS THE NEW PERIMETER
|
|
12
|
+
In cloud, network is not perimeter, IAM is.
|
|
13
|
+
Ask: "Who can assume this role? With what privilege? From where?"
|
|
14
|
+
Wildcard (*) = breach.
|
|
15
|
+
|
|
16
|
+
PRINCIPLE 2 — STORAGE IS PUBLIC UNTIL PROVEN PRIVATE
|
|
17
|
+
Default to private. Verify:
|
|
18
|
+
- ACL, bucket policy, public access block, IAM, URL signed.
|
|
19
|
+
One public = data breach.
|
|
20
|
+
|
|
21
|
+
PRINCIPLE 3 — METADATA IS SECRET
|
|
22
|
+
169.254.169.254 is the cloud crown jewel.
|
|
23
|
+
SSRF → metadata → credentials → privilege escalation.
|
|
24
|
+
Fix: IMDSv2 enforced, no SSRF, scoped IAM.
|
|
25
|
+
|
|
26
|
+
PRINCIPLE 4 — EVERYTHING IS LOGGED OR IT DIDN'T HAPPEN
|
|
27
|
+
Without CloudTrail / Audit Log, you can't detect, can't respond.
|
|
28
|
+
Log all control-plane + data-plane critical.
|
|
29
|
+
|
|
30
|
+
PRINCIPLE 5 — IaC IS CODE, SCAN IT
|
|
31
|
+
Terraform, CloudFormation, Helm are attack surface.
|
|
32
|
+
Scan with checkov/tfsec/cfn-nag in CI.
|
|
33
|
+
|
|
34
|
+
═══════════════════════════════════════════════════════════════
|
|
35
|
+
AUDIT FLOW
|
|
36
|
+
═══════════════════════════════════════════════════════════════
|
|
37
|
+
|
|
38
|
+
PHASE 0 — ENUMERATION
|
|
39
|
+
□ Provider? AWS / GCP / Azure / multi
|
|
40
|
+
□ IaC present? Terraform / CDK / SAM / Bicep / Pulumi
|
|
41
|
+
□ Inventory: buckets, IAM roles/users, SG/Firewall, Lambdas, K8s
|
|
42
|
+
□ Sensitive data classification (PII, financial, keys)
|
|
43
|
+
|
|
44
|
+
PHASE 1 — STORAGE AUDIT
|
|
45
|
+
List all buckets/containers. For each:
|
|
46
|
+
- Is it public? (check 4 layers: ACL, policy, BlockPublicAccess, IAM)
|
|
47
|
+
- Encryption at rest?
|
|
48
|
+
- Contains secrets? Search .env, .sql, backup.zip
|
|
49
|
+
- Logging?
|
|
50
|
+
|
|
51
|
+
PHASE 2 — IAM AUDIT
|
|
52
|
+
For each role/user/policy:
|
|
53
|
+
- Does it have *:* ?
|
|
54
|
+
- Trust policy overly permissive?
|
|
55
|
+
- Access keys age?
|
|
56
|
+
- MFA?
|
|
57
|
+
→ Craft attack path: compromised EC2/Lambda → what IAM allows?
|
|
58
|
+
|
|
59
|
+
PHASE 3 — NETWORK AUDIT
|
|
60
|
+
- SG / Firewall rules 0.0.0.0/0 ?
|
|
61
|
+
- Public IPs?
|
|
62
|
+
- TLS version?
|
|
63
|
+
- VPC architecture (public vs private)
|
|
64
|
+
|
|
65
|
+
PHASE 4 — SECRETS & COMPUTE
|
|
66
|
+
- Secrets in env vars, user-data, tfvars?
|
|
67
|
+
- IMDSv1 enabled?
|
|
68
|
+
- Lambda public URL?
|
|
69
|
+
|
|
70
|
+
PHASE 5 — LOGGING & DETECTION
|
|
71
|
+
- CloudTrail enabled + encrypted + not public?
|
|
72
|
+
- Alerts on IAM/SG/bucket changes?
|
|
73
|
+
|
|
74
|
+
═══════════════════════════════════════════════════════════════
|
|
75
|
+
KILL CHAINS
|
|
76
|
+
═══════════════════════════════════════════════════════════════
|
|
77
|
+
|
|
78
|
+
Chain 1 — Public S3 → Data Breach
|
|
79
|
+
Dev puts backup.sql in s3://app-prod-backup public.
|
|
80
|
+
Attacker: s3 ls → download → credentials → full compromise.
|
|
81
|
+
|
|
82
|
+
Chain 2 — SSRF → IAM escalation
|
|
83
|
+
Web app: fetch user URL without whitelist.
|
|
84
|
+
Attacker: url=http://169.254.169.254/latest/meta-data/iam/security-credentials/role
|
|
85
|
+
→ gets temporary AWS creds → with iam:* → takeover account.
|
|
86
|
+
|
|
87
|
+
Chain 3 — Wildcard IAM → PrivEsc
|
|
88
|
+
Lambda role has s3:* on *.
|
|
89
|
+
Attacker compromises Lambda via injection → lists all buckets → reads secrets.
|
|
90
|
+
|
|
91
|
+
Fix: scope IAM, enforce IMDSv2, validate URLs, least privilege.
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
# ☁️ CLOUD REMEDIATION LIBRARY — CYBERAUDIT SKILL
|
|
2
|
+
|
|
3
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
4
|
+
PUBLIC S3 BUCKET
|
|
5
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
6
|
+
DETECT:
|
|
7
|
+
aws s3api get-public-access-block --bucket X
|
|
8
|
+
aws s3api get-bucket-acl --bucket X
|
|
9
|
+
aws s3api get-bucket-policy --bucket X
|
|
10
|
+
|
|
11
|
+
FIX Terraform:
|
|
12
|
+
```hcl
|
|
13
|
+
resource "aws_s3_bucket_public_access_block" "block" {
|
|
14
|
+
bucket = aws_s3_bucket.app.id
|
|
15
|
+
block_public_acls = true
|
|
16
|
+
block_public_policy = true
|
|
17
|
+
ignore_public_acls = true
|
|
18
|
+
restrict_public_buckets = true
|
|
19
|
+
}
|
|
20
|
+
resource "aws_s3_bucket_server_side_encryption_configuration" "enc" {
|
|
21
|
+
bucket = aws_s3_bucket.app.id
|
|
22
|
+
rule { apply_server_side_encryption_by_default { sse_algorithm = "aws:kms", kms_master_key_id = aws_kms_key.s3.arn } }
|
|
23
|
+
}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
27
|
+
WILDCARD IAM
|
|
28
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
29
|
+
DETECT:
|
|
30
|
+
iam:* , s3:* on Resource "*"
|
|
31
|
+
|
|
32
|
+
FIX — Least privilege example:
|
|
33
|
+
```json
|
|
34
|
+
{
|
|
35
|
+
"Version": "2012-10-17",
|
|
36
|
+
"Statement": [{
|
|
37
|
+
"Effect": "Allow",
|
|
38
|
+
"Action": ["s3:GetObject"],
|
|
39
|
+
"Resource": "arn:aws:s3:::app-prod-uploads/user/${aws:userid}/*"
|
|
40
|
+
}]
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
Terraform scope:
|
|
44
|
+
```hcl
|
|
45
|
+
resource "aws_iam_policy" "scoped" {
|
|
46
|
+
policy = jsonencode({
|
|
47
|
+
Statement = [{ Action = ["s3:GetObject","s3:PutObject"], Resource = "${aws_s3_bucket.uploads.arn}/*" }]
|
|
48
|
+
})
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
53
|
+
OPEN SECURITY GROUP
|
|
54
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
55
|
+
FIX:
|
|
56
|
+
```hcl
|
|
57
|
+
# ❌ Before
|
|
58
|
+
ingress { from_port=22 to_port=22 protocol="tcp" cidr_blocks=["0.0.0.0/0"] }
|
|
59
|
+
|
|
60
|
+
# ✅ After — bastion only
|
|
61
|
+
ingress { from_port=22 to_port=22 protocol="tcp" security_groups=[aws_security_group.bastion.id] }
|
|
62
|
+
|
|
63
|
+
# Redis/Mongo never public
|
|
64
|
+
# Use private subnet + SecurityGroup only app SG
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
68
|
+
SSRF → IMDS CREDENTIAL THEFT
|
|
69
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
70
|
+
FIX 1 — Enforce IMDSv2 on EC2:
|
|
71
|
+
```hcl
|
|
72
|
+
resource "aws_instance" "app" {
|
|
73
|
+
metadata_options {
|
|
74
|
+
http_tokens = "required" # enforce v2
|
|
75
|
+
http_endpoint = "enabled"
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
FIX 2 — Block metadata in app:
|
|
80
|
+
```ts
|
|
81
|
+
// URL validation before fetch
|
|
82
|
+
const ALLOWED = ["api.stripe.com","api.example.com"];
|
|
83
|
+
const url = new URL(userInput);
|
|
84
|
+
if (!ALLOWED.includes(url.hostname)) throw new Error("Domain not allowed");
|
|
85
|
+
if (url.hostname === "169.254.169.254" || url.hostname === "metadata.google.internal") throw new Error("Blocked");
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
89
|
+
SECRETS IN IaC / ENV
|
|
90
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
91
|
+
FIX:
|
|
92
|
+
```hcl
|
|
93
|
+
# ❌ Don't
|
|
94
|
+
resource "aws_ssm_parameter" "secret" { value = "supersecret" }
|
|
95
|
+
|
|
96
|
+
# ✅ Use Secrets Manager
|
|
97
|
+
resource "aws_secretsmanager_secret" "api_key" { name = "prod/api-key" }
|
|
98
|
+
# Reference in Lambda via extension or SDK, not env plaintext
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
For Terraform state:
|
|
102
|
+
```hcl
|
|
103
|
+
terraform {
|
|
104
|
+
backend "s3" {
|
|
105
|
+
bucket = "tf-state-prod"
|
|
106
|
+
key = "app/terraform.tfstate"
|
|
107
|
+
region = "eu-west-1"
|
|
108
|
+
encrypt = true
|
|
109
|
+
dynamodb_table = "tf-lock"
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
115
|
+
LAMBDA PUBLIC URL
|
|
116
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
117
|
+
FIX:
|
|
118
|
+
```hcl
|
|
119
|
+
# Require IAM auth
|
|
120
|
+
resource "aws_lambda_function_url" "url" {
|
|
121
|
+
authorization_type = "AWS_IAM" # not NONE
|
|
122
|
+
}
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
126
|
+
CLOUDTRAIL NOT ENABLED
|
|
127
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
128
|
+
FIX:
|
|
129
|
+
```hcl
|
|
130
|
+
resource "aws_cloudtrail" "main" {
|
|
131
|
+
name = "org-trail"
|
|
132
|
+
s3_bucket_name = aws_s3_bucket.trail.id
|
|
133
|
+
is_multi_region_trail = true
|
|
134
|
+
enable_logging = true
|
|
135
|
+
kms_key_id = aws_kms_key.trail.arn
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
Enable alert:
|
|
139
|
+
```hcl
|
|
140
|
+
resource "aws_cloudwatch_metric_alarm" "root" {
|
|
141
|
+
alarm_name = "RootLogin"
|
|
142
|
+
metric_name = "RootLogin"
|
|
143
|
+
# ... filter CloudTrail root login
|
|
144
|
+
}
|
|
145
|
+
```
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Angular-specific audit
|
|
3
|
+
---
|
|
4
|
+
Angular-specific audit — /audit:angular
|
|
5
|
+
|
|
6
|
+
1. Load web/frameworks/ANGULAR.md
|
|
7
|
+
2. Check bypassSecurityTrust with user input, innerHTML, strict guards
|
|
8
|
+
|
|
9
|
+
Output:
|
|
10
|
+
- Findings with [VULN-...] numbering, CVSS 3.1 vector, file:line, vulnerable code, fixed code, references.
|
|
11
|
+
- Use templates from reports/ if needed.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: BOLA/IDOR audit (API)
|
|
3
|
+
---
|
|
4
|
+
BOLA/IDOR audit (API) — /audit:api:bola
|
|
5
|
+
|
|
6
|
+
1. Load api/vulnerabilities/BOLA.md
|
|
7
|
+
2. Test sequential ID replacement, ownership verification
|
|
8
|
+
|
|
9
|
+
Output:
|
|
10
|
+
- Findings with [VULN-...] numbering, CVSS 3.1 vector, file:line, vulnerable code, fixed code, references.
|
|
11
|
+
- Use templates from reports/ if needed.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: BOPLA (BFLA) audit
|
|
3
|
+
---
|
|
4
|
+
BOPLA (BFLA) audit — /audit:api:bopla
|
|
5
|
+
|
|
6
|
+
1. Load api/vulnerabilities/BOPLA.md
|
|
7
|
+
2. Test admin functions with normal user token, vertical escalation
|
|
8
|
+
|
|
9
|
+
Output:
|
|
10
|
+
- Findings with [VULN-...] numbering, CVSS 3.1 vector, file:line, vulnerable code, fixed code, references.
|
|
11
|
+
- Use templates from reports/ if needed.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: GraphQL API audit
|
|
3
|
+
---
|
|
4
|
+
GraphQL API audit — /audit:api:graphql
|
|
5
|
+
|
|
6
|
+
1. Load api/types/GRAPHQL.md
|
|
7
|
+
2. Check introspection disabled in prod, depth/complexity limits, batching attacks, per-resolver auth
|
|
8
|
+
|
|
9
|
+
Output:
|
|
10
|
+
- Findings with [VULN-...] numbering, CVSS 3.1 vector, file:line, vulnerable code, fixed code, references.
|
|
11
|
+
- Use templates from reports/ if needed.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: API inventory/discovery audit
|
|
3
|
+
---
|
|
4
|
+
API inventory/discovery audit — /audit:api:inventory
|
|
5
|
+
|
|
6
|
+
1. Load api/vulnerabilities/INVENTORY.md
|
|
7
|
+
2. Check shadow endpoints, v0/v1, debug endpoints, OpenAPI spec exposed
|
|
8
|
+
|
|
9
|
+
Output:
|
|
10
|
+
- Findings with [VULN-...] numbering, CVSS 3.1 vector, file:line, vulnerable code, fixed code, references.
|
|
11
|
+
- Use templates from reports/ if needed.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Rate limiting audit (API)
|
|
3
|
+
---
|
|
4
|
+
Rate limiting audit (API) — /audit:api:rate-limit
|
|
5
|
+
|
|
6
|
+
1. Load api/vulnerabilities/RATE-LIMITING.md
|
|
7
|
+
2. Check login, register, reset rate limits, 429 with Retry-After
|
|
8
|
+
|
|
9
|
+
Output:
|
|
10
|
+
- Findings with [VULN-...] numbering, CVSS 3.1 vector, file:line, vulnerable code, fixed code, references.
|
|
11
|
+
- Use templates from reports/ if needed.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: REST API audit
|
|
3
|
+
---
|
|
4
|
+
REST API audit — /audit:api:rest
|
|
5
|
+
|
|
6
|
+
1. Load api/types/REST.md
|
|
7
|
+
2. Check IDOR on every ID, mass assignment whitelist, over-fetching, deprecated v0 endpoints
|
|
8
|
+
|
|
9
|
+
Output:
|
|
10
|
+
- Findings with [VULN-...] numbering, CVSS 3.1 vector, file:line, vulnerable code, fixed code, references.
|
|
11
|
+
- Use templates from reports/ if needed.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Third-party API audit
|
|
3
|
+
---
|
|
4
|
+
Third-party API audit — /audit:api:third-party
|
|
5
|
+
|
|
6
|
+
1. Load api/vulnerabilities/THIRD-PARTY-API.md
|
|
7
|
+
2. Check outgoing HTTPS, cert validation, timeouts, webhook HMAC, data treated as untrusted
|
|
8
|
+
|
|
9
|
+
Output:
|
|
10
|
+
- Findings with [VULN-...] numbering, CVSS 3.1 vector, file:line, vulnerable code, fixed code, references.
|
|
11
|
+
- Use templates from reports/ if needed.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: WebSocket API audit
|
|
3
|
+
---
|
|
4
|
+
WebSocket API audit — /audit:api:ws
|
|
5
|
+
|
|
6
|
+
1. Load api/types/WEBSOCKET.md
|
|
7
|
+
2. Check auth on connect, per-message auth, origin validation, rate limiting, WSS only
|
|
8
|
+
|
|
9
|
+
Output:
|
|
10
|
+
- Findings with [VULN-...] numbering, CVSS 3.1 vector, file:line, vulnerable code, fixed code, references.
|
|
11
|
+
- Use templates from reports/ if needed.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: API authentication & authorization audit
|
|
3
|
+
---
|
|
4
|
+
API authentication & authorization audit — /audit:auth-api
|
|
5
|
+
|
|
6
|
+
1. Load api/vulnerabilities/BOLA.md and BOPLA.md
|
|
7
|
+
2. Check JWT verify not decode, ownership per resource, admin endpoints protected
|
|
8
|
+
|
|
9
|
+
Output:
|
|
10
|
+
- Findings with [VULN-...] numbering, CVSS 3.1 vector, file:line, vulnerable code, fixed code, references.
|
|
11
|
+
- Use templates from reports/ if needed.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Mobile authentication audit
|
|
3
|
+
---
|
|
4
|
+
Mobile authentication audit — /audit:auth-mobile
|
|
5
|
+
|
|
6
|
+
1. Load mobile/vulnerabilities/AUTH-MOBILE.md
|
|
7
|
+
2. Check token storage in Keychain, refresh rotation, biometrics linked to crypto key
|
|
8
|
+
|
|
9
|
+
Output:
|
|
10
|
+
- Findings with [VULN-...] numbering, CVSS 3.1 vector, file:line, vulnerable code, fixed code, references.
|
|
11
|
+
- Use templates from reports/ if needed.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Authentication & Authorization audit (web)
|
|
3
|
+
---
|
|
4
|
+
Authentication & Authorization audit (web) — /audit:auth
|
|
5
|
+
|
|
6
|
+
1. Load WEB-PHILOSOPHY.md
|
|
7
|
+
2. Load web/vulnerabilities/AUTH-AUTHZ.md
|
|
8
|
+
3. Check: password hashing, JWT verify, session regen, OAuth state, MFA, RBAC on every endpoint
|
|
9
|
+
|
|
10
|
+
Output:
|
|
11
|
+
- Findings with [VULN-...] numbering, CVSS 3.1 vector, file:line, vulnerable code, fixed code, references.
|
|
12
|
+
- Use templates from reports/ if needed.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Binary analysis audit (mobile)
|
|
3
|
+
---
|
|
4
|
+
Binary analysis audit (mobile) — /audit:binary
|
|
5
|
+
|
|
6
|
+
1. Load mobile/vulnerabilities/BINARY-ANALYSIS.md
|
|
7
|
+
2. Check hardcoded API keys, debug mode, ProGuard/R8, source maps not in prod
|
|
8
|
+
|
|
9
|
+
Output:
|
|
10
|
+
- Findings with [VULN-...] numbering, CVSS 3.1 vector, file:line, vulnerable code, fixed code, references.
|
|
11
|
+
- Use templates from reports/ if needed.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: CIS Benchmark cloud score
|
|
3
|
+
---
|
|
4
|
+
CIS Benchmark cloud score — /audit:cis
|
|
5
|
+
|
|
6
|
+
1. Load cloud/CLOUD-CHECKLIST.md
|
|
7
|
+
2. Map to CIS AWS/GCP/Azure controls, produce compliance table
|
|
8
|
+
|
|
9
|
+
Output:
|
|
10
|
+
- Findings with [VULN-...] numbering, CVSS 3.1 vector, file:line, vulnerable code, fixed code, references.
|
|
11
|
+
- Use templates from reports/ if needed.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: IAM least privilege & wildcards audit
|
|
3
|
+
---
|
|
4
|
+
IAM least privilege & wildcards audit — /audit:cloud:iam
|
|
5
|
+
|
|
6
|
+
1. Load cloud/CLOUD-CHECKLIST.md SECTION 2
|
|
7
|
+
2. Check wildcard Action/Resource, admin policies, access key rotation, MFA, trust policy *
|
|
8
|
+
|
|
9
|
+
Output:
|
|
10
|
+
- Findings with [VULN-...] numbering, CVSS 3.1 vector, file:line, vulnerable code, fixed code, references.
|
|
11
|
+
- Use templates from reports/ if needed.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Security Groups & firewall audit
|
|
3
|
+
---
|
|
4
|
+
Security Groups & firewall audit — /audit:cloud:network
|
|
5
|
+
|
|
6
|
+
1. Load cloud/CLOUD-CHECKLIST.md SECTION 3
|
|
7
|
+
2. Check 0.0.0.0/0:22, 6379, DB ports, TLS version, flow logs, private subnets
|
|
8
|
+
|
|
9
|
+
Output:
|
|
10
|
+
- Findings with [VULN-...] numbering, CVSS 3.1 vector, file:line, vulnerable code, fixed code, references.
|
|
11
|
+
- Use templates from reports/ if needed.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Cloud storage / buckets public access audit
|
|
3
|
+
---
|
|
4
|
+
Cloud storage / buckets public access audit — /audit:cloud:s3
|
|
5
|
+
|
|
6
|
+
1. Load cloud/CLOUD-CHECKLIST.md SECTION 1
|
|
7
|
+
2. Check bucket public ACL, policy Principal *, encryption, versioning, logs
|
|
8
|
+
|
|
9
|
+
Output:
|
|
10
|
+
- Findings with [VULN-...] numbering, CVSS 3.1 vector, file:line, vulnerable code, fixed code, references.
|
|
11
|
+
- Use templates from reports/ if needed.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Cloud configuration audit — S3, IAM, security groups, secrets, CIS benchmark
|
|
3
|
+
---
|
|
4
|
+
Run a cloud configuration security audit.
|
|
5
|
+
1. Load cloud/CLOUD-PHILOSOPHY.md for methodology
|
|
6
|
+
2. Load cloud/CLOUD-CHECKLIST.md for full checklist
|
|
7
|
+
3. Scan IaC (Terraform, CloudFormation, etc.) or live config
|
|
8
|
+
4. Execute phases: storage, IAM, network, secrets, logging
|
|
9
|
+
5. Score each finding with CVSS 3.1
|
|
10
|
+
6. Generate report using reports/REPORT-TEMPLATE-CLOUD.md
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: CORS configuration audit
|
|
3
|
+
---
|
|
4
|
+
CORS configuration audit — /audit:cors
|
|
5
|
+
|
|
6
|
+
1. Load web/vulnerabilities/CORS.md
|
|
7
|
+
2. Check Allow-Origin *, credentials true + *, whitelist validation
|
|
8
|
+
|
|
9
|
+
Output:
|
|
10
|
+
- Findings with [VULN-...] numbering, CVSS 3.1 vector, file:line, vulnerable code, fixed code, references.
|
|
11
|
+
- Use templates from reports/ if needed.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Mobile cryptography audit
|
|
3
|
+
---
|
|
4
|
+
Mobile cryptography audit — /audit:crypto-mobile
|
|
5
|
+
|
|
6
|
+
1. Load mobile/vulnerabilities/CRYPTO-MOBILE.md
|
|
7
|
+
2. Check AES-256-GCM, no hardcoded keys, IV unique, Keystore
|
|
8
|
+
|
|
9
|
+
Output:
|
|
10
|
+
- Findings with [VULN-...] numbering, CVSS 3.1 vector, file:line, vulnerable code, fixed code, references.
|
|
11
|
+
- Use templates from reports/ if needed.
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Web cryptography audit
|
|
3
|
+
---
|
|
4
|
+
Web cryptography audit — /audit:crypto
|
|
5
|
+
|
|
6
|
+
1. Load WEB-CHECKLIST.md section 14, check AES-256-GCM, bcrypt/argon2, no MD5/SHA1, IV unique, secure random
|
|
7
|
+
|
|
8
|
+
Output:
|
|
9
|
+
- Findings with [VULN-...] numbering, CVSS 3.1 vector, file:line, vulnerable code, fixed code, references.
|
|
10
|
+
- Use templates from reports/ if needed.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: CSRF audit
|
|
3
|
+
---
|
|
4
|
+
CSRF audit — /audit:csrf
|
|
5
|
+
|
|
6
|
+
1. Load web/vulnerabilities/CSRF.md
|
|
7
|
+
2. Check CSRF tokens on POST, SameSite cookie, webhook HMAC
|
|
8
|
+
|
|
9
|
+
Output:
|
|
10
|
+
- Findings with [VULN-...] numbering, CVSS 3.1 vector, file:line, vulnerable code, fixed code, references.
|
|
11
|
+
- Use templates from reports/ if needed.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Deep links & IPC audit
|
|
3
|
+
---
|
|
4
|
+
Deep links & IPC audit — /audit:deeplinks
|
|
5
|
+
|
|
6
|
+
1. Load mobile/vulnerabilities/IPC-DEEPLINKS.md
|
|
7
|
+
2. Check App Links vs custom schemes, param validation, auth before sensitive deep link
|
|
8
|
+
|
|
9
|
+
Output:
|
|
10
|
+
- Findings with [VULN-...] numbering, CVSS 3.1 vector, file:line, vulnerable code, fixed code, references.
|
|
11
|
+
- Use templates from reports/ if needed.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Dependencies & supply chain audit
|
|
3
|
+
---
|
|
4
|
+
Dependencies & supply chain audit — /audit:deps
|
|
5
|
+
|
|
6
|
+
1. Load web/vulnerabilities/SUPPLY-CHAIN.md
|
|
7
|
+
2. Run npm audit / composer audit, check lock files, outdated frameworks, abandoned deps
|
|
8
|
+
|
|
9
|
+
Output:
|
|
10
|
+
- Findings with [VULN-...] numbering, CVSS 3.1 vector, file:line, vulnerable code, fixed code, references.
|
|
11
|
+
- Use templates from reports/ if needed.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Insecure deserialization audit
|
|
3
|
+
---
|
|
4
|
+
Insecure deserialization audit — /audit:deserial
|
|
5
|
+
|
|
6
|
+
1. Load web/vulnerabilities/DESERIALIZATION.md
|
|
7
|
+
2. Check unserialize with user input, gadget chains, signed serialization
|
|
8
|
+
|
|
9
|
+
Output:
|
|
10
|
+
- Findings with [VULN-...] numbering, CVSS 3.1 vector, file:line, vulnerable code, fixed code, references.
|
|
11
|
+
- Use templates from reports/ if needed.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Generate executive summary
|
|
3
|
+
---
|
|
4
|
+
Generate executive summary — /audit:exec
|
|
5
|
+
|
|
6
|
+
1. Load reports/EXECUTIVE-SUMMARY-TEMPLATE.md
|
|
7
|
+
2. Summarize business risks, immediate actions
|
|
8
|
+
|
|
9
|
+
Output:
|
|
10
|
+
- Findings with [VULN-...] numbering, CVSS 3.1 vector, file:line, vulnerable code, fixed code, references.
|
|
11
|
+
- Use templates from reports/ if needed.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Expo audit
|
|
3
|
+
---
|
|
4
|
+
Expo audit — /audit:expo
|
|
5
|
+
|
|
6
|
+
1. Load mobile/frameworks/EXPO.md
|
|
7
|
+
2. Check build config, permissions, update channel tampering
|
|
8
|
+
|
|
9
|
+
Output:
|
|
10
|
+
- Findings with [VULN-...] numbering, CVSS 3.1 vector, file:line, vulnerable code, fixed code, references.
|
|
11
|
+
- Use templates from reports/ if needed.
|