None of these numbers are written by hand. Every one is read at build time from the lockfile, the manifest, the pnpm policy, the workflow files or git.
accepted riskCode owner review means reviewing your own code on a solo repository. CODEOWNERS exists so ownership is explicit, but enforcing self-review would be theatre.
highRepository default branch requires status checks
repository_default_branch_status_checks_required
to doCI already runs lint, typecheck, build, audit, gitleaks and a SHA-pin check on every push. Making them a merge gate requires moving to a pull-request workflow.
highRepository has secret scanning enabled to detect sensitive data
repository_secret_scanning_enabled
blockedGitHub only offers secret scanning for public repositories or paid plans. The GitHub API rejects it here with a 422. Gitleaks runs on every pull request instead, which covers the same ground from CI.
mediumRepository default branch requires conversation resolution before merging
accepted riskRequires two approving reviews. This is a one-person repository, so a second approver does not exist. Stated rather than hidden.
Passing
✓Repository default branch denies force pushes
✓Repository default branch protection applies to administrators
✓Repository enforces branch protection on the default branch
✓Repository default branch requires signed commits
✓Repository grants workflows a read-only default GITHUB_TOKEN
✓Repository has package vulnerability scanning (Dependabot alerts) enabled
✓Repository has immutable releases enabled
✓Repository denies default branch deletion
✓Repository has a CODEOWNERS file
✓Repository is archived or active within the configured inactivity threshold
✓Repository deletes branches after pull request merge
✓Repository default branch requires linear history
None of this is written by hand: Prowler’s JSON-OCSF is normalized at build time. Failures are shown as they are, with a stated reason, because hiding them would make the page pointless.
Spot the misconfiguration
Three real configurations. Click the dangerous line in each.0/3
S3 bucket policy
A wildcard Principal grants every anonymous user on the internet read access to the bucket. This is the single most common cause of public data exposure on AWS.
Fix Name the account or role that actually needs it: "Principal": { "AWS": "arn:aws:iam::111122223333:role/invoice-reader" }
IAM policy
iam:PassRole on * is a privilege-escalation path. The holder can launch an instance carrying any role in the account, including an administrator one, and inherit its permissions. The policy looks modest; the blast radius is total.
Fix Scope Resource to the exact roles that may be passed, and add a condition on iam:PassedToService.
Security group
SSH is reachable from the entire internet. Even with key-only auth this exposes the daemon to every scanner and every future CVE in it.
Fix Restrict the CIDR to your VPN range, or drop port 22 entirely and use SSM Session Manager, which needs no inbound rule at all.