rails/rails
rails/railsClick 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.
This image will render at the top of the issue body. Hosted on Repobility, refreshes automatically after re-scans.
Code quality scan: 20 findings (B, 76/100)
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/**

## 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/._
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.