How EvalScope scores

Declared input in, exposure report out. No live systems are ever touched.

Finding classes

ClassSeverityWhat it means
private_key_blockCRITICALA private key header in declared content — revoke, purge, move to a secrets store.
admin_managed_policyCRITICALAdministratorAccess / PowerUserAccess referenced — replace with least-privilege.
wildcard_principalCRITICALPolicy principal * — can expose the resource publicly.
aws_access_key_id, aws_secret_access_key, github_token, generic_api_key, generic_secret_assignmentHIGHSecret-like patterns — presence, file, and line reported; values never stored or shown.
wildcard_iam_action, wildcard_iam_serviceHIGH"Action": "*" or "s3:*" — scope to exact APIs.
public_bucket_acl, open_ingressHIGHPublic-read storage, 0.0.0.0/0 ingress — restrict to who needs it.
jwt_token, open_binding, debug_mode_enabledMEDIUMToken material, all-interface binds, debug on — tighten before exposure.
debug_routeLOWDebug/admin route strings — confirm they're not production-exposed.

Scoring

Start at 100. Subtract 25 per CRITICAL, 15 per HIGH, 8 per MEDIUM, 3 per LOW. Floor at 0. Grades: A ≥ 90, B ≥ 75, C ≥ 50, D ≥ 25, F below. Deterministic — the same input always yields the same report.

What EvalScope will never do

Honest scope: declared/public surfaces only. This finds exposure; it never proves exploitability and cannot see your private infrastructure.