AntFleet

Disagreement · 4c349ef3-openai-0

S3 BlockPublicAccess fully disabled enables unintended public exposure via ACLs/policies

mismatch
repo 703f69ec·PR #3·reviewed 5 days ago

Primary finding

S3 BlockPublicAccess fully disabled enables unintended public exposure via ACLs/policies

highsecurityhigh
  • infra/stack.py:41-46
  • infra/stack.py:55-60
All four S3 Block Public Access flags are set to False. While the bucket policy does scope public read to dashboard/*, disabling ignore_public_acls and block_public_acls allows ACL-based public access and grants the possibility of broader exposure through ACLs or future policies. Best practice is to keep ACLs blocked/ignored and rely on a narrowly-scoped bucket policy for the required prefix.

Recommendation

Harden Block Public Access: set block_public_acls=True and ignore_public_acls=True to prevent any ACL-based exposure while leaving block_public_policy=False and restrict_public_buckets=False only if you must allow the dashboard/* public policy. Alternatively, keep all four flags at their secure defaults and use a scoped bucket policy for dashboard/* plus a condition (e.g., aws:Referer or IP allowlist) if feasible.

Counterpart finding

Permissive CORS allows any origin to read public dashboard objects

lowsecurityhigh
  • infra/stack.py:51-55
`allowed_origins=["*"]` combined with public read for `dashboard/*` is intentional for a static page, but if the dashboard is hosted at a known origin, restricting CORS would reduce the chance of third-party scraping/embedding. Low severity as data is already public.

Recommendation

Restrict `allowed_origins` to the actual dashboard origin once known.

Why this didn't post

This finding didn't meet AntFleet's unanimous agreement threshold. Both frontier models review every PR independently; only findings they both flag with the same severity and category are posted to the PR. This one fell through.

read the methodology →