← Back to scan
File as GitHub Issue repo: rails/rails

Push this scan report to rails/rails

Click the green button below to open GitHub’s new-issue form, pre-filled with the report title, summary table, top findings, and an embedded score-card image. No authentication needed — you review on GitHub before submitting. Repobility is credited as the scanner.

Embedded score card image

This image will render at the top of the issue body. Hosted on Repobility, refreshes automatically after re-scans.

Repobility score card

Issue title

Code quality scan: 20 findings (B, 76/100)

Issue body (markdown)

Hi @rails, an automated scan of this repository surfaced **20 code-quality findings** that may be worth a look. 
Full details, severity filters, and per-file context are at the link below — feel free to close this issue if it isn't useful to you.

## Full interactive report

**https://repobility.com/scan/3eeb1910-4d08-4be7-b475-8aae92530237/**

![Live scan page](https://repobility.com/scan/3eeb1910-4d08-4be7-b475-8aae92530237/report.png?v=1778938237)

## At a glance

- **Score**: `76/100`  •  **Grade**: `B`
- **Scanned**: `2026-05-16 13:30 UTC`
- **Lines of code**: 32,034
- **Total findings**: 20
- **Security-tagged**: 4
- **Credential / secret patterns**: 0

## Top issues, with file & line

_These are deterministic rule-based findings — the file paths and line numbers below are real and can be verified in your tree._

1. **[high]** [SEC029] Server-Side Request Forgery (SSRF) — outbound HTTP from user input: Outbound HTTP request to a user-controlled URL without allowlist validation. Attackers can probe internal services (169.254.169.254 metadata, internal Kubernetes endpoints, file:// URIs), exfiltrate data, or pivot through your network. SSRF is OWASP A10:2021 and a frequent foothold in cloud breaches. — `actionmailbox/app/controllers/rails/conductor/action_mailbox/inbound_emails_controller.rb:20`
   _Validate the URL against an allowlist BEFORE fetching:   ALLOWED = {'images.example.com', 'cdn.example.com'}   host = urlparse(url).hostname   if host not in ALLOWED: abort(400)…_
2. **[high]** [SEC029] Server-Side Request Forgery (SSRF) — outbound HTTP from user input: Outbound HTTP request to a user-controlled URL without allowlist validation. Attackers can probe internal services (169.254.169.254 metadata, internal Kubernetes endpoints, file:// URIs), exfiltrate data, or pivot through your network. SSRF is OWASP A10:2021 and a frequent foothold in cloud breaches. — `actionmailbox/app/controllers/rails/conductor/action_mailbox/reroutes_controller.rb:12`
   _Validate the URL against an allowlist BEFORE fetching:   ALLOWED = {'images.example.com', 'cdn.example.com'}   host = urlparse(url).hostname   if host not in ALLOWED: abort(400)…_
3. **[high]** [SEC029] Server-Side Request Forgery (SSRF) — outbound HTTP from user input: Outbound HTTP request to a user-controlled URL without allowlist validation. Attackers can probe internal services (169.254.169.254 metadata, internal Kubernetes endpoints, file:// URIs), exfiltrate data, or pivot through your network. SSRF is OWASP A10:2021 and a frequent foothold in cloud breaches. — `actionmailbox/app/controllers/rails/conductor/action_mailbox/inbound_emails/sources_controller.rb:12`
   _Validate the URL against an allowlist BEFORE fetching:   ALLOWED = {'images.example.com', 'cdn.example.com'}   host = urlparse(url).hostname   if host not in ALLOWED: abort(400)…_
4. **[high]** [AUC003] Object-level route lacks visible authorization: A route with an object id-like parameter does not show nearby authentication or authorization evidence. This is a BOLA/IDOR review target. Endpoint: ANY /:inbound_email_id/reroute. — `actionmailbox/config/routes.rb:23`
   _Add ownership, tenant, relationship, or policy checks before reading or mutating the target object._
5. **[high]** [AUC003] Object-level route lacks visible authorization: A route with an object id-like parameter does not show nearby authentication or authorization evidence. This is a BOLA/IDOR review target. Endpoint: ANY /:inbound_email_id/incinerate. — `actionmailbox/config/routes.rb:24`
   _Add ownership, tenant, relationship, or policy checks before reading or mutating the target object._

See all 20 findings, with severity filters and AI fix prompts: **https://repobility.com/scan/3eeb1910-4d08-4be7-b475-8aae92530237/**

---

**What is this?** [Repobility](https://repobility.com) is a research project that scans public repositories with a multi-layer static analyzer (rule-based, no AI hallucinations) and learns code-quality patterns across a broad cross-repo corpus. This is **not a sales pitch** — there's no paywall, no signup required to view the report, and no payment ask. If the findings aren't useful, please close this issue and we won't post again.

**To re-run after fixes land:** paste your repo URL at [repobility.com](https://repobility.com) — fresh scan, free.

_Issue filed via the public Repobility report at https://repobility.com/scan/3eeb1910-4d08-4be7-b475-8aae92530237/._
Premium account
This scan was submitted by a Enterprise-tier account. Premium accounts have full outreach control â Repobility doesn't pre-fill the 'file as GitHub issue' button for paid users. You can still file the issue manually using the markdown body above (Copy markdown), or contact us if you'd like batch-filing enabled for your account.

The button opens GitHubâs new-issue page in a new tab. You will see the title + body pre-filled â review, edit if you want, then click GitHubâs "Submit new issue" button. Repobility never posts anything on your behalf.

For real security findings on big repos: use the project's SECURITY.md or private advisory flow instead of a public issue.