NoamB/sorcery
Magical authentication for Rails 3 & 4
- Repository: https://github.com/NoamB/sorcery
- Commit:
4aaf38363eddf7a2982312ce68f0105dcc4ae8dc - Generated: 2026-11-13T23:29:45+00:00
- Scorer 0.1.0, scoring prov-4+qual-2+sec-2, report schema v2
Scores
| Pillar | Score | Signal | Confidence | Coverage |
|---|---|---|---|---|
| AI provenance (estimated AI-generated share) | 0 | none-detected | 65% | 100% |
| Code quality | 77 | adequate | 90% | 100% |
| Security | 22 | poor | 85% | 100% |
AI provenance
No AI attribution or AI-consistent velocity signals detected.
- Explicitly attributed share (lower bound): 0.0%
- Unattributed share in AI-consistent velocity bursts: 0.0%
- Estimated AI-generated share: 0.0%
| Month | Lines added | Attributed to AI |
|---|---|---|
| 2015-03 | 8 | 0% |
| 2015-04 | 186 | 0% |
| 2015-05 | 22 | 0% |
| 2015-06 | 172 | 0% |
| 2015-09 | 7 | 0% |
| 2015-10 | 14 | 0% |
| 2016-01 | 1 | 0% |
| 2016-02 | 47 | 0% |
| 2016-03 | 34 | 0% |
| 2016-07 | 104 | 0% |
| 2016-08 | 19 | 0% |
| 2016-09 | 7 | 0% |
AI provenance describes how code was produced; it is not a quality judgment. Unless attribution is explicit, these are signals consistent with AI generation, not proof. Squash/rebase workflows, imported code, and rewritten history reduce accuracy.
Code quality
Code quality is adequate: test-to-source ratio 0.97, no CI test run detected; 0% of function code in complex or long functions; 6% duplicated lines. Weakest area: process.
| Area | Score |
|---|---|
| Complexity (lizard) | 100 |
| Duplication | 71 |
| Code smells (Opengrep) | 100 |
| Tests and CI | 70 |
| Documentation | 65 |
| Type safety | n/a |
| Process (Scorecard review/maintenance) | 35 |
- Functions: 298; mean complexity 1.6, 90th percentile 3; 0 complex and 0 long functions
- Duplicated lines: 5.8% of 2,578 compared
- Tests: 3,938 test lines for 4,055 source lines (ratio 0.97); CI test commands: none detected; 34% of recent source commits also change tests
- Docs missing or thin: readme, contributing
Security
Security posture is poor: 0 possible secret(s) in the tree, 1 only in history; 16 high-severity SAST findings. Weakest area: posture.
| Area | Score |
|---|---|
| Secrets (gitleaks, tree + history) | 42 |
| Static analysis (Opengrep) | 8 |
| Vulnerable dependencies (OSV) | n/a |
| CI workflows (zizmor) | n/a |
| Posture (policy, updates, signing, lockfiles) | 0 |
| OpenSSF Scorecard | 25 |
- Posture checks passed: none; missing: security policy, dependency updates, signed commits, lockfiles
- OpenSSF Scorecard aggregate: 3.0/10 (published 2026-11-09)
Top findings
| Severity | Finding | Location |
|---|---|---|
| high | opengrep/ruby.rails.security.brakeman.check-unsafe-reflection-methods: Found user-controllable input to a reflection method. This may allow a user to alter program behavior and potentially execute arbitrary instructions in the context of the process. Do not provide arbitrary user input to tap, method, or to_proc [confidence medium] |
lib/sorcery/providers/facebook.rb:65 |
| high | opengrep/ruby.rails.security.brakeman.check-unsafe-reflection-methods: Found user-controllable input to a reflection method. This may allow a user to alter program behavior and potentially execute arbitrary instructions in the context of the process. Do not provide arbitrary user input to tap, method, or to_proc [confidence medium] |
lib/sorcery/providers/facebook.rb:65 |
| high | opengrep/ruby.rails.security.brakeman.check-unsafe-reflection-methods: Found user-controllable input to a reflection method. This may allow a user to alter program behavior and potentially execute arbitrary instructions in the context of the process. Do not provide arbitrary user input to tap, method, or to_proc [confidence medium] |
lib/sorcery/providers/github.rb:45 |
| high | opengrep/ruby.rails.security.brakeman.check-unsafe-reflection-methods: Found user-controllable input to a reflection method. This may allow a user to alter program behavior and potentially execute arbitrary instructions in the context of the process. Do not provide arbitrary user input to tap, method, or to_proc [confidence medium] |
lib/sorcery/providers/github.rb:45 |
| high | opengrep/ruby.rails.security.brakeman.check-unsafe-reflection-methods: Found user-controllable input to a reflection method. This may allow a user to alter program behavior and potentially execute arbitrary instructions in the context of the process. Do not provide arbitrary user input to tap, method, or to_proc [confidence medium] |
lib/sorcery/providers/google.rb:43 |
| high | opengrep/ruby.rails.security.brakeman.check-unsafe-reflection-methods: Found user-controllable input to a reflection method. This may allow a user to alter program behavior and potentially execute arbitrary instructions in the context of the process. Do not provide arbitrary user input to tap, method, or to_proc [confidence medium] |
lib/sorcery/providers/google.rb:43 |
| high | opengrep/ruby.rails.security.brakeman.check-unsafe-reflection-methods: Found user-controllable input to a reflection method. This may allow a user to alter program behavior and potentially execute arbitrary instructions in the context of the process. Do not provide arbitrary user input to tap, method, or to_proc [confidence medium] |
lib/sorcery/providers/heroku.rb:51 |
| high | opengrep/ruby.rails.security.brakeman.check-unsafe-reflection-methods: Found user-controllable input to a reflection method. This may allow a user to alter program behavior and potentially execute arbitrary instructions in the context of the process. Do not provide arbitrary user input to tap, method, or to_proc [confidence medium] |
lib/sorcery/providers/heroku.rb:51 |
| high | opengrep/ruby.rails.security.brakeman.check-unsafe-reflection-methods: Found user-controllable input to a reflection method. This may allow a user to alter program behavior and potentially execute arbitrary instructions in the context of the process. Do not provide arbitrary user input to tap, method, or to_proc [confidence medium] |
lib/sorcery/providers/liveid.rb:44 |
| high | opengrep/ruby.rails.security.brakeman.check-unsafe-reflection-methods: Found user-controllable input to a reflection method. This may allow a user to alter program behavior and potentially execute arbitrary instructions in the context of the process. Do not provide arbitrary user input to tap, method, or to_proc [confidence medium] |
lib/sorcery/providers/liveid.rb:44 |
| high | opengrep/ruby.rails.security.brakeman.check-unsafe-reflection-methods: Found user-controllable input to a reflection method. This may allow a user to alter program behavior and potentially execute arbitrary instructions in the context of the process. Do not provide arbitrary user input to tap, method, or to_proc [confidence medium] |
lib/sorcery/providers/paypal.rb:54 |
| high | opengrep/ruby.rails.security.brakeman.check-unsafe-reflection-methods: Found user-controllable input to a reflection method. This may allow a user to alter program behavior and potentially execute arbitrary instructions in the context of the process. Do not provide arbitrary user input to tap, method, or to_proc [confidence medium] |
lib/sorcery/providers/paypal.rb:54 |
| high | opengrep/ruby.rails.security.brakeman.check-unsafe-reflection-methods: Found user-controllable input to a reflection method. This may allow a user to alter program behavior and potentially execute arbitrary instructions in the context of the process. Do not provide arbitrary user input to tap, method, or to_proc [confidence medium] |
lib/sorcery/providers/salesforce.rb:42 |
| high | opengrep/ruby.rails.security.brakeman.check-unsafe-reflection-methods: Found user-controllable input to a reflection method. This may allow a user to alter program behavior and potentially execute arbitrary instructions in the context of the process. Do not provide arbitrary user input to tap, method, or to_proc [confidence medium] |
lib/sorcery/providers/salesforce.rb:42 |
| high | opengrep/ruby.rails.security.brakeman.check-unsafe-reflection-methods: Found user-controllable input to a reflection method. This may allow a user to alter program behavior and potentially execute arbitrary instructions in the context of the process. Do not provide arbitrary user input to tap, method, or to_proc [confidence medium] |
lib/sorcery/providers/vk.rb:55 |
| high | opengrep/ruby.rails.security.brakeman.check-unsafe-reflection-methods: Found user-controllable input to a reflection method. This may allow a user to alter program behavior and potentially execute arbitrary instructions in the context of the process. Do not provide arbitrary user input to tap, method, or to_proc [confidence medium] |
lib/sorcery/providers/vk.rb:55 |
| medium | gitleaks/facebook-secret: Possible facebook-secret secret in history (commit ac0026bbf6); removed from the current tree but still retrievable |
lib/sorcery/initializers/initializer.rb:29 |
| medium | opengrep/ruby.rails.security.audit.avoid-session-manipulation: This gets data from session using user inputs. A malicious user may be able to retrieve information from your session that you didn't intend them to. Do not use user input as a session key. [confidence medium] |
lib/sorcery/controller/submodules/remember_me.rb:67 |
| medium | opengrep/ruby.lang.security.weak-hashes-md5: Should not use md5 to generate hashes. md5 is proven to be vulnerable through the use of brute-force attacks. Could also result in collisions, leading to potential collision attacks. Use SHA256 or other hashing functions instead. [confidence medium] |
lib/sorcery/crypto_providers/md5.rb:14 |
| low | gitleaks/generic-api-key: Possible generic-api-key secret in the current tree (test/docs/example file) |
spec/rails_app/config/initializers/secret_token.rb:7 |
| low | gitleaks/generic-api-key: Possible generic-api-key secret in the current tree (test/docs/example file) |
spec/shared_examples/user_oauth_shared_examples.rb:15 |
| low | gitleaks/generic-api-key: Possible generic-api-key secret in the current tree (test/docs/example file) |
spec/controllers/controller_oauth2_spec.rb:210 |
| low | gitleaks/generic-api-key: Possible generic-api-key secret in the current tree (test/docs/example file) |
spec/sorcery_crypto_providers_spec.rb:60 |
| low | gitleaks/generic-api-key: Possible generic-api-key secret in the current tree (test/docs/example file) |
spec/controllers/controller_oauth_spec.rb:31 |
| low | gitleaks/generic-api-key: Possible generic-api-key secret in history (commit 320db6555a); removed from the current tree but still retrievable |
spec/active_record/controller_oauth2_spec.rb:159 |
Static signals only: the scorer never runs the project's code. Secret findings are pattern matches that were not verified, and secret values are never stored.
Repository profile
- Source lines: 4,055; test lines: 3,938
| Language | Lines |
|---|---|
| Ruby | 7,993 |