RepoTrust

Leaderboard github.com

exnihiloai/nodl

Speak your thoughts. Get finished documents.

  • View repository ↗
  • Ruby
  • ★ 0
  • commit 7325d37471df
  • scored 2026-11-14
  • scoring prov-5+qual-2+sec-2

AI provenance

51%

explicit

Confidence
95%
Coverage
100%

Estimated share of AI-generated code. Explicit attribution is a lower bound.

Code quality

74/100

adequate

Confidence
90%
Coverage
100%

Complexity, duplication, lint density, tests, CI, docs and review process.

Security

56/100

weak

Confidence
85%
Coverage
100%

Secrets, static analysis, vulnerable dependencies, CI and supply-chain posture.

AI provenance

51% explicit

Explicit AI attribution on 51% of first-party code added; an estimated 51% including velocity signals.

How the score is built

  • Explicitly attributed share51%
  • Unattributed share in AI-pace bursts3%
  • Estimated AI-generated share51%
  • AI tool configuration files1
  • Work sessions at AI pace2
  • Releases at AI pacenot measured
  • Coding-style index (1.0+ means possible)0.00

Attributed AI tools

ToolCommitsLines addedFirst seenLast seen
Cursor agent4912,5452026-05-302026-07-05
Claude Code464,0702026-05-302026-10-11

Lines added per month all AI-attributed share

  1. 2026-055,568 · 26% AI
  2. 2026-0619,612 · 43% AI
  3. 2026-076,683 · 92% AI
  4. 2026-08308 · 100% AI
  5. 2026-10356 · 100% AI

Findings in AI-attributed lines vs the rest

From git blame: 11,126 lines trace to AI-attributed commits, 8,574 to others. Reported, not scored.

Findings per 1,000 linesAI-attributedOtherRatio
Code quality4.220.00—
Security3.422.801.22×

Evidence by analyzer

Explicit AI attributionok27 items
attributed_commit_share
29.8%
attributed_commits
95
attributed_loc
16,615
attributed_loc_share
51.1%
commits
319
effective_loc
32,527
tools_detected
2
AI tool configurationok1 item
artifacts
1
earliest_adoption
2026-05-30
tools_configured
1
workflow_agents
0
Commit velocityok2 items
excluded_import_loc
2,576
flagged_loc
7,824
flagged_loc_share
26.1%
flagged_units
2
max_loc_per_hour
1,503
measured_loc
29,951
median_loc_per_hour
124.08
pr_timed_units
0
pre_ai_era_burst_loc
0
pre_ai_era_bursts
0
pre_ai_era_measured_loc
0
work_units
60
Release velocityskipped
Coding styleok
count:assistant_voice
0
count:emoji_in_code
0
count:narrated_steps
0
count:placeholder
0
files:assistant_voice
0
files:emoji_in_code
0
files:narrated_steps
0
files:placeholder
0
index
0
lines_scanned
19,700
per_kloc:assistant_voice
0
per_kloc:emoji_in_code
0
per_kloc:narrated_steps
0
per_kloc:placeholder
0
Findings in AI-written linesok
ai_lines
11,126
blame_failures
0
files_blamed
237
other_lines
8,574
quality:ai_findings
47
quality:ai_per_kloc
4.22
quality:other_findings
0
quality:other_per_kloc
0
security:ai_findings
38
security:ai_per_kloc
3.42
security:other_findings
24
security:other_per_kloc
2.80
security:ratio
1.22

Code quality

74 adequate

Code quality is adequate: test-to-source ratio 0.55, CI runs tests; 8% of function code in complex or long functions; 9% duplicated lines. Weakest area: type safety.

How the score is built

  • Complexity79
  • Duplication57
  • Lint and smells55
  • Tests and CI90
  • Documentation100
  • Type safety40
  • Review processnot measured

Evidence by analyzer

Complexity (lizard)ok10 items
complex_functions
14
function_nloc
11,791
functions
1,185
long_functions
2
many_param_functions
1
mean_ccn
2.77
p90_ccn
6
risky_nloc_share
8.0%
Duplication (jscpd)ok10 items
compared_lines
14,026
duplicated_lines
1,329
duplicated_share
9.5%
files
237
Lintok
category:best-practice
19
category:maintainability
28
findings
47
scanned_lines
19,700
weighted_findings
47
Tests and CIok2 items
  • CI config: .gitlab-ci.yml .gitlab-ci.yml
  • CI runs tests (make check)
check:ci_present
yes
check:ci_runs_lint
no
check:ci_runs_tests
yes
check:has_tests
yes
check:test_ratio
yes
check:tests_cochange
yes
ci_files
1
cochange_commits
126
cochange_share
73.8%
source_lines
19,700
test_lines
10,833
test_ratio
0.55
Documentationok4 items
  • README.md README.md
  • LICENSE LICENSE
  • CONTRIBUTING.md CONTRIBUTING.md
  • CHANGELOG.md CHANGELOG.md
check:changelog
yes
check:contributing
yes
check:license
yes
check:readme
yes
readme_lines
200
Type safetyok
check:low_escape_density
yes
check:strict_config
no
escapes
2
escapes_per_kloc
0.34

Security

56 weak

Security posture is weak: 68 known vulnerabilities in 18 dependencies; 8 high-severity SAST findings. Weakest area: dependencies.

How the score is built

  • Secrets97
  • Static analysis (SAST)51
  • Vulnerable dependencies17
  • CI workflowsnot measured
  • Security posture40
  • OpenSSF Scorecardnot measured

Evidence by analyzer

OpenSSF Scorecardskipped

no published OpenSSF Scorecard result for this repo

Package registriesok
checked
1
declared
1
lookup_errors
0
missing
0
recent
0
Secrets (gitleaks)ok
secrets_current
0
secrets_history
0
secrets_low_confidence
0
secrets_nonprod
1
Static analysis (opengrep)ok
findings
92
findings_high
8
findings_low
0
findings_medium
84
parse_errors
28
scanned_lines
19,700
weighted_findings
37.50
Dependencies (osv-scanner)ok
penalty
107
vulnerabilities
68
vulnerable_packages
18
vulns_critical
1
vulns_high
11
vulns_low
19
vulns_medium
36
vulns_unknown
1
CI workflows (zizmor)skipped
Security postureok1 item
  • Security policy: SECURITY.md SECURITY.md
check:dependency_updates
no
check:lockfiles
yes
check:security_policy
yes
check:signed_commits
no
signed_commit_share
0.0%
unpinned_manifests
0
Release downloadsok1 item
  • gives an archive password README.md
binary_assets
0
signals
1
suspicious
0

Findings

1 critical19 high168 medium20 low

SeverityRuleLocationMessageTool
critical osv/GHSA-f3w6-w445-fwh9 Gemfile.lock [email protected] (RubyGems) is affected by GHSA-f3w6-w445-fwh9 Dependencies (osv-scanner)
high osv/GHSA-2gff-2mmg-m73p Gemfile.lock [email protected] (RubyGems) is affected by GHSA-2gff-2mmg-m73p Dependencies (osv-scanner)
high osv/GHSA-2x63-gw47-w4mm Gemfile.lock [email protected] (RubyGems) is affected by GHSA-2x63-gw47-w4mm Dependencies (osv-scanner)
high osv/GHSA-47m2-wp7j-p9vc Gemfile.lock [email protected] (RubyGems) is affected by GHSA-47m2-wp7j-p9vc Dependencies (osv-scanner)
high osv/GHSA-5v64-555j-wjxm Gemfile.lock [email protected] (RubyGems) is affected by GHSA-5v64-555j-wjxm Dependencies (osv-scanner)
high osv/GHSA-6wmf-3r64-vcwv Gemfile.lock [email protected] (RubyGems) is affected by GHSA-6wmf-3r64-vcwv Dependencies (osv-scanner)
high osv/GHSA-73v3-wf97-vpgj Gemfile.lock [email protected] (RubyGems) is affected by GHSA-73v3-wf97-vpgj Dependencies (osv-scanner)
high osv/GHSA-8474-xrp6-wh69 Gemfile.lock [email protected] (RubyGems) is affected by GHSA-8474-xrp6-wh69 Dependencies (osv-scanner)
high osv/GHSA-98m9-hrrm-r99r Gemfile.lock [email protected] (RubyGems) is affected by GHSA-98m9-hrrm-r99r Dependencies (osv-scanner)
high osv/GHSA-h8w8-99g7-qmvj Gemfile.lock [email protected] (RubyGems) is affected by GHSA-h8w8-99g7-qmvj Dependencies (osv-scanner)
high osv/GHSA-v924-7rp8-4mxh Gemfile.lock [email protected] (RubyGems) is affected by GHSA-v924-7rp8-4mxh Dependencies (osv-scanner)
high osv/GHSA-wm3x-v3qw-4jh3 Gemfile.lock [email protected] (RubyGems) is affected by GHSA-wm3x-v3qw-4jh3 Dependencies (osv-scanner)
high opengrep/ruby.lang.security.missing-csrf-protection app/controllers/application_controller.rb:1 Detected controller which does not enable cross-site request forgery protections using 'protect_from_forgery'. Add 'protect_from_forgery :with => :exception' to your controller class. [confidence low] Static analysis (opengrep)
high opengrep/javascript.browser.security.insecure-document-method app/javascript/controllers/audio_recorder_controller.js:1021 User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low] Static analysis (opengrep)
high opengrep/javascript.browser.security.insecure-innerhtml app/javascript/controllers/audio_recorder_controller.js:1021 User controlled data in a `statusContainer.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low] Static analysis (opengrep)
high opengrep/javascript.browser.security.insecure-document-method app/javascript/controllers/audio_recorder_controller.js:1030 User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low] Static analysis (opengrep)
high opengrep/javascript.browser.security.insecure-innerhtml app/javascript/controllers/audio_recorder_controller.js:1030 User controlled data in a `segmentsContainer.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low] Static analysis (opengrep)
high opengrep/javascript.browser.security.insecure-document-method app/javascript/controllers/document_editor_controller.js:199 User controlled data in methods like `innerHTML`, `outerHTML` or `document.write` is an anti-pattern that can lead to XSS vulnerabilities [confidence low] Static analysis (opengrep)
high opengrep/javascript.browser.security.insecure-innerhtml app/javascript/controllers/document_editor_controller.js:199 User controlled data in a `this.surfaceTarget.innerHTML` is an anti-pattern that can lead to XSS vulnerabilities [confidence low] Static analysis (opengrep)
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit skills/seo/seo-analysis/scripts/_gcloud.py:27 Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external... Static analysis (opengrep)
medium opengrep/python.lang.best-practice.unspecified-open-encoding skills/seo/broken-link-checker/scripts/checker.py:167 Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding="utf-8"). Lint
medium opengrep/python.lang.best-practice.unspecified-open-encoding skills/seo/seo-analysis/scripts/cms_detect.py:21 Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding="utf-8"). Lint
medium opengrep/python.lang.best-practice.unspecified-open-encoding skills/seo/seo-analysis/scripts/fetch_contentful_content.py:44 Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding="utf-8"). Lint
medium opengrep/python.lang.best-practice.unspecified-open-encoding skills/seo/seo-analysis/scripts/fetch_ghost_content.py:51 Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding="utf-8"). Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses skills/seo/seo-analysis/scripts/fetch_ghost_content.py:97 Is "is_loopback" a function or an attribute? If it is a function, you may have meant addr.is_loopback() because addr.is_loopback is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses skills/seo/seo-analysis/scripts/fetch_ghost_content.py:97 Is "is_private" a function or an attribute? If it is a function, you may have meant addr.is_private() because addr.is_private is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses skills/seo/seo-analysis/scripts/fetch_ghost_content.py:97 Is "is_link_local" a function or an attribute? If it is a function, you may have meant addr.is_link_local() because addr.is_link_local is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses skills/seo/seo-analysis/scripts/fetch_ghost_content.py:97 Is "is_reserved" a function or an attribute? If it is a function, you may have meant addr.is_reserved() because addr.is_reserved is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses skills/seo/seo-analysis/scripts/fetch_strapi_content.py:47 Is "is_loopback" a function or an attribute? If it is a function, you may have meant addr.is_loopback() because addr.is_loopback is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses skills/seo/seo-analysis/scripts/fetch_strapi_content.py:47 Is "is_private" a function or an attribute? If it is a function, you may have meant addr.is_private() because addr.is_private is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses skills/seo/seo-analysis/scripts/fetch_strapi_content.py:47 Is "is_link_local" a function or an attribute? If it is a function, you may have meant addr.is_link_local() because addr.is_link_local is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses skills/seo/seo-analysis/scripts/fetch_strapi_content.py:47 Is "is_reserved" a function or an attribute? If it is a function, you may have meant addr.is_reserved() because addr.is_reserved is always true. Lint
medium opengrep/python.lang.best-practice.unspecified-open-encoding skills/seo/seo-analysis/scripts/fetch_strapi_content.py:87 Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding="utf-8"). Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses skills/seo/seo-analysis/scripts/fetch_wordpress_content.py:46 Is "is_loopback" a function or an attribute? If it is a function, you may have meant addr.is_loopback() because addr.is_loopback is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses skills/seo/seo-analysis/scripts/fetch_wordpress_content.py:46 Is "is_private" a function or an attribute? If it is a function, you may have meant addr.is_private() because addr.is_private is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses skills/seo/seo-analysis/scripts/fetch_wordpress_content.py:46 Is "is_link_local" a function or an attribute? If it is a function, you may have meant addr.is_link_local() because addr.is_link_local is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses skills/seo/seo-analysis/scripts/fetch_wordpress_content.py:46 Is "is_reserved" a function or an attribute? If it is a function, you may have meant addr.is_reserved() because addr.is_reserved is always true. Lint
medium opengrep/python.lang.best-practice.unspecified-open-encoding skills/seo/seo-analysis/scripts/fetch_wordpress_content.py:84 Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding="utf-8"). Lint
medium opengrep/python.lang.best-practice.unspecified-open-encoding skills/seo/seo-analysis/scripts/pagespeed.py:34 Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding="utf-8"). Lint
medium opengrep/python.lang.best-practice.unspecified-open-encoding skills/seo/seo-analysis/scripts/preflight.py:263 Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding="utf-8"). Lint
medium opengrep/python.lang.best-practice.unspecified-open-encoding skills/seo/seo-analysis/scripts/preflight.py:375 Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding="utf-8"). Lint
medium opengrep/python.lang.best-practice.unspecified-open-encoding skills/seo/seo-analysis/scripts/preflight.py:50 Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding="utf-8"). Lint
medium opengrep/python.lang.best-practice.unspecified-open-encoding skills/seo/seo-analysis/scripts/preflight_contentful.py:34 Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding="utf-8"). Lint
medium opengrep/python.lang.best-practice.unspecified-open-encoding skills/seo/seo-analysis/scripts/preflight_ghost.py:37 Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding="utf-8"). Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses skills/seo/seo-analysis/scripts/preflight_ghost.py:84 Is "is_loopback" a function or an attribute? If it is a function, you may have meant addr.is_loopback() because addr.is_loopback is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses skills/seo/seo-analysis/scripts/preflight_ghost.py:84 Is "is_private" a function or an attribute? If it is a function, you may have meant addr.is_private() because addr.is_private is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses skills/seo/seo-analysis/scripts/preflight_ghost.py:84 Is "is_link_local" a function or an attribute? If it is a function, you may have meant addr.is_link_local() because addr.is_link_local is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses skills/seo/seo-analysis/scripts/preflight_ghost.py:84 Is "is_reserved" a function or an attribute? If it is a function, you may have meant addr.is_reserved() because addr.is_reserved is always true. Lint
medium opengrep/python.lang.best-practice.unspecified-open-encoding skills/seo/seo-analysis/scripts/preflight_strapi.py:32 Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding="utf-8"). Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses skills/seo/seo-analysis/scripts/preflight_strapi.py:81 Is "is_loopback" a function or an attribute? If it is a function, you may have meant addr.is_loopback() because addr.is_loopback is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses skills/seo/seo-analysis/scripts/preflight_strapi.py:81 Is "is_private" a function or an attribute? If it is a function, you may have meant addr.is_private() because addr.is_private is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses skills/seo/seo-analysis/scripts/preflight_strapi.py:81 Is "is_link_local" a function or an attribute? If it is a function, you may have meant addr.is_link_local() because addr.is_link_local is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses skills/seo/seo-analysis/scripts/preflight_strapi.py:81 Is "is_reserved" a function or an attribute? If it is a function, you may have meant addr.is_reserved() because addr.is_reserved is always true. Lint
medium opengrep/python.lang.best-practice.unspecified-open-encoding skills/seo/seo-analysis/scripts/preflight_wordpress.py:37 Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding="utf-8"). Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses skills/seo/seo-analysis/scripts/preflight_wordpress.py:85 Is "is_loopback" a function or an attribute? If it is a function, you may have meant addr.is_loopback() because addr.is_loopback is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses skills/seo/seo-analysis/scripts/preflight_wordpress.py:85 Is "is_private" a function or an attribute? If it is a function, you may have meant addr.is_private() because addr.is_private is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses skills/seo/seo-analysis/scripts/preflight_wordpress.py:85 Is "is_link_local" a function or an attribute? If it is a function, you may have meant addr.is_link_local() because addr.is_link_local is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses skills/seo/seo-analysis/scripts/preflight_wordpress.py:85 Is "is_reserved" a function or an attribute? If it is a function, you may have meant addr.is_reserved() because addr.is_reserved is always true. Lint
medium opengrep/python.lang.best-practice.unspecified-open-encoding skills/seo/seo-analysis/scripts/push_strapi_seo.py:106 Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding="utf-8"). Lint
medium opengrep/python.lang.best-practice.unspecified-open-encoding skills/seo/seo-analysis/scripts/push_strapi_seo.py:444 Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding="utf-8"). Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses skills/seo/seo-analysis/scripts/push_strapi_seo.py:66 Is "is_loopback" a function or an attribute? If it is a function, you may have meant addr.is_loopback() because addr.is_loopback is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses skills/seo/seo-analysis/scripts/push_strapi_seo.py:66 Is "is_private" a function or an attribute? If it is a function, you may have meant addr.is_private() because addr.is_private is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses skills/seo/seo-analysis/scripts/push_strapi_seo.py:66 Is "is_link_local" a function or an attribute? If it is a function, you may have meant addr.is_link_local() because addr.is_link_local is always true. Lint
medium opengrep/python.lang.maintainability.is-function-without-parentheses skills/seo/seo-analysis/scripts/push_strapi_seo.py:66 Is "is_reserved" a function or an attribute? If it is a function, you may have meant addr.is_reserved() because addr.is_reserved is always true. Lint
medium opengrep/python.lang.best-practice.unspecified-open-encoding skills/seo/seo-analysis/scripts/show_gsc.py:27 Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding="utf-8"). Lint
medium opengrep/python.lang.best-practice.unspecified-open-encoding skills/seo/seo-analysis/scripts/show_pagespeed.py:219 Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding="utf-8"). Lint
medium opengrep/python.lang.best-practice.unspecified-open-encoding skills/seo/seo-analysis/scripts/url_inspection.py:236 Missing 'encoding' parameter. 'open()' uses device locale encodings by default, corrupting files with special characters. Specify the encoding to ensure cross-platform support when opening files in text mode (e.g. encoding="utf-8"). Lint
medium osv/GHSA-2586-8ghr-69fj Gemfile.lock [email protected] (RubyGems) is affected by GHSA-2586-8ghr-69fj Dependencies (osv-scanner)
medium osv/GHSA-2j8w-xcrc-x985 Gemfile.lock [email protected] (RubyGems) is affected by GHSA-2j8w-xcrc-x985 Dependencies (osv-scanner)
medium osv/GHSA-2p2f-4rq4-gjwc Gemfile.lock [email protected] (RubyGems) is affected by GHSA-2p2f-4rq4-gjwc Dependencies (osv-scanner)
medium osv/GHSA-2w9f-fxwj-w2qf Gemfile.lock [email protected] (RubyGems) is affected by GHSA-2w9f-fxwj-w2qf Dependencies (osv-scanner)
medium osv/GHSA-345x-3rq2-jfrm Gemfile.lock [email protected] (RubyGems) is affected by GHSA-345x-3rq2-jfrm Dependencies (osv-scanner)
medium osv/GHSA-3w93-6hmw-whh4 Gemfile.lock [email protected] (RubyGems) is affected by GHSA-3w93-6hmw-whh4 Dependencies (osv-scanner)
medium osv/GHSA-4v2w-w6g6-f8f8 Gemfile.lock [email protected] (RubyGems) is affected by GHSA-4v2w-w6g6-f8f8 Dependencies (osv-scanner)
medium osv/GHSA-5prr-v3j2-97mh Gemfile.lock [email protected] (RubyGems) is affected by GHSA-5prr-v3j2-97mh Dependencies (osv-scanner)
medium osv/GHSA-68p9-83h6-5wpj Gemfile.lock [email protected] (RubyGems) is affected by GHSA-68p9-83h6-5wpj Dependencies (osv-scanner)
medium osv/GHSA-6jxj-px6v-747w Gemfile.lock [email protected] (RubyGems) is affected by GHSA-6jxj-px6v-747w Dependencies (osv-scanner)
medium osv/GHSA-8gmh-2hhj-2hv9 Gemfile.lock [email protected] (RubyGems) is affected by GHSA-8gmh-2hhj-2hv9 Dependencies (osv-scanner)
medium osv/GHSA-8vfg-2r28-hvhj Gemfile.lock [email protected] (RubyGems) is affected by GHSA-8vfg-2r28-hvhj Dependencies (osv-scanner)
medium osv/GHSA-9crm-g4mf-wc5j Gemfile.lock [email protected] (RubyGems) is affected by GHSA-9crm-g4mf-wc5j Dependencies (osv-scanner)
medium osv/GHSA-9f42-57jx-vpp3 Gemfile.lock [email protected] (RubyGems) is affected by GHSA-9f42-57jx-vpp3 Dependencies (osv-scanner)
medium osv/GHSA-9wjq-cp2p-hrgf Gemfile.lock [email protected] (RubyGems) is affected by GHSA-9wjq-cp2p-hrgf Dependencies (osv-scanner)
medium osv/GHSA-cj75-f6xr-r4g7 Gemfile.lock [email protected] (RubyGems) is affected by GHSA-cj75-f6xr-r4g7 Dependencies (osv-scanner)
medium osv/GHSA-cpgf-5mjf-73p7 Gemfile.lock [email protected] (RubyGems) is affected by GHSA-cpgf-5mjf-73p7 Dependencies (osv-scanner)
medium osv/GHSA-h6v6-rg66-fqj4 Gemfile.lock [email protected] (RubyGems) is affected by GHSA-h6v6-rg66-fqj4 Dependencies (osv-scanner)
medium osv/GHSA-h7wh-q2qr-458c Gemfile.lock [email protected] (RubyGems) is affected by GHSA-h7wh-q2qr-458c Dependencies (osv-scanner)
medium osv/GHSA-hfr4-8rjc-97m2 Gemfile.lock [email protected] (RubyGems) is affected by GHSA-hfr4-8rjc-97m2 Dependencies (osv-scanner)
medium osv/GHSA-j82w-28jv-3pmj Gemfile.lock [email protected] (RubyGems) is affected by GHSA-j82w-28jv-3pmj Dependencies (osv-scanner)
medium osv/GHSA-m27g-v28p-f9fx Gemfile.lock [email protected] (RubyGems) is affected by GHSA-m27g-v28p-f9fx Dependencies (osv-scanner)
medium osv/GHSA-m3x9-938q-5767 Gemfile.lock [email protected] (RubyGems) is affected by GHSA-m3x9-938q-5767 Dependencies (osv-scanner)
medium osv/GHSA-mf2j-8f84-cc9q Gemfile.lock [email protected] (RubyGems) is affected by GHSA-mf2j-8f84-cc9q Dependencies (osv-scanner)
medium osv/GHSA-p2pm-g2h6-7j5j Gemfile.lock [email protected] (RubyGems) is affected by GHSA-p2pm-g2h6-7j5j Dependencies (osv-scanner)
medium osv/GHSA-p9wj-w8xq-vjx6 Gemfile.lock [email protected] (RubyGems) is affected by GHSA-p9wj-w8xq-vjx6 Dependencies (osv-scanner)
medium osv/GHSA-pq4g-8rxf-4g29 Gemfile.lock [email protected] (RubyGems) is affected by GHSA-pq4g-8rxf-4g29 Dependencies (osv-scanner)
medium osv/GHSA-qq38-m9mg-xjj5 Gemfile.lock [email protected] (RubyGems) is affected by GHSA-qq38-m9mg-xjj5 Dependencies (osv-scanner)
medium osv/GHSA-r9jg-fmfx-2gv6 Gemfile.lock [email protected] (RubyGems) is affected by GHSA-r9jg-fmfx-2gv6 Dependencies (osv-scanner)
medium osv/GHSA-rq8q-p985-fjq7 Gemfile.lock [email protected] (RubyGems) is affected by GHSA-rq8q-p985-fjq7 Dependencies (osv-scanner)
medium osv/GHSA-rwvh-fw6r-pwvp Gemfile.lock [email protected] (RubyGems) is affected by GHSA-rwvh-fw6r-pwvp Dependencies (osv-scanner)
medium osv/GHSA-v6rj-xm57-3p59 Gemfile.lock [email protected] (RubyGems) is affected by GHSA-v6rj-xm57-3p59 Dependencies (osv-scanner)
medium osv/GHSA-wfpw-mmfh-qq69 Gemfile.lock [email protected] (RubyGems) is affected by GHSA-wfpw-mmfh-qq69 Dependencies (osv-scanner)
medium osv/GHSA-wv3x-4vxv-whpp Gemfile.lock [email protected] (RubyGems) is affected by GHSA-wv3x-4vxv-whpp Dependencies (osv-scanner)
medium osv/GHSA-wvg4-6p58-3gh3 Gemfile.lock [email protected] (RubyGems) is affected by GHSA-wvg4-6p58-3gh3 Dependencies (osv-scanner)
medium osv/GHSA-wwpr-jff3-395c Gemfile.lock [email protected] (RubyGems) is affected by GHSA-wwpr-jff3-395c Dependencies (osv-scanner)
medium osv/GHSA-x6mj-8jx9-qhqv Gemfile.lock [email protected] (RubyGems) is affected by GHSA-x6mj-8jx9-qhqv Dependencies (osv-scanner)
medium opengrep/ruby.rails.security.brakeman.check-unscoped-find app/controllers/admin/users_controller.rb:159 Found an unscoped `find(...)` with user-controllable input. If the ActiveRecord model being searched against is sensitive, this may lead to Insecure Direct Object Reference (IDOR) behavior and allow users to read arbitrary records.... Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.avoid-redirect app/controllers/admin/users_controller.rb:61 When a redirect uses user input, a malicious user can spoof a website under a trusted URL or access restricted parts of a site. When using user-supplied values, sanitize the value before using it for the redirect. [confidence medium] Static analysis (opengrep)
medium opengrep/ruby.rails.security.brakeman.check-render-local-file-include app/controllers/content_pages_controller.rb:18 Found request parameters in a call to `render`. This can allow end users to request arbitrary local files which may result in leaking sensitive information persisted on disk. Where possible, avoid letting users specify template paths... Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.avoid-redirect app/controllers/documents_controller.rb:26 When a redirect uses user input, a malicious user can spoof a website under a trusted URL or access restricted parts of a site. When using user-supplied values, sanitize the value before using it for the redirect. [confidence medium] Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.avoid-session-manipulation app/controllers/locales_controller.rb:8 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] Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.rails-skip-forgery-protection app/controllers/payments_controller.rb:4 This call turns off CSRF protection allowing CSRF attacks against the application [confidence low] Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.avoid-redirect app/controllers/payments_controller.rb:47 When a redirect uses user input, a malicious user can spoof a website under a trusted URL or access restricted parts of a site. When using user-supplied values, sanitize the value before using it for the redirect. [confidence medium] Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.avoid-redirect app/controllers/recording_sessions_controller.rb:100 When a redirect uses user input, a malicious user can spoof a website under a trusted URL or access restricted parts of a site. When using user-supplied values, sanitize the value before using it for the redirect. [confidence medium] Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.avoid-redirect app/controllers/recording_sessions_controller.rb:79 When a redirect uses user input, a malicious user can spoof a website under a trusted URL or access restricted parts of a site. When using user-supplied values, sanitize the value before using it for the redirect. [confidence medium] Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.avoid-redirect app/controllers/recording_sessions_controller.rb:80 When a redirect uses user input, a malicious user can spoof a website under a trusted URL or access restricted parts of a site. When using user-supplied values, sanitize the value before using it for the redirect. [confidence medium] Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.avoid-redirect app/controllers/recording_sessions_controller.rb:81 When a redirect uses user input, a malicious user can spoof a website under a trusted URL or access restricted parts of a site. When using user-supplied values, sanitize the value before using it for the redirect. [confidence medium] Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.avoid-redirect app/controllers/recording_sessions_controller.rb:83 When a redirect uses user input, a malicious user can spoof a website under a trusted URL or access restricted parts of a site. When using user-supplied values, sanitize the value before using it for the redirect. [confidence medium] Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.avoid-redirect app/controllers/recording_sessions_controller.rb:96 When a redirect uses user input, a malicious user can spoof a website under a trusted URL or access restricted parts of a site. When using user-supplied values, sanitize the value before using it for the redirect. [confidence medium] Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.avoid-redirect app/controllers/recording_sessions_controller.rb:97 When a redirect uses user input, a malicious user can spoof a website under a trusted URL or access restricted parts of a site. When using user-supplied values, sanitize the value before using it for the redirect. [confidence medium] Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.avoid-redirect app/controllers/recording_sessions_controller.rb:98 When a redirect uses user input, a malicious user can spoof a website under a trusted URL or access restricted parts of a site. When using user-supplied values, sanitize the value before using it for the redirect. [confidence medium] Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.avoid-redirect app/controllers/recording_sessions_controller.rb:99 When a redirect uses user input, a malicious user can spoof a website under a trusted URL or access restricted parts of a site. When using user-supplied values, sanitize the value before using it for the redirect. [confidence medium] Static analysis (opengrep)
medium opengrep/ruby.rails.security.brakeman.check-unscoped-find app/controllers/transformer_profiles_controller.rb:21 Found an unscoped `find(...)` with user-controllable input. If the ActiveRecord model being searched against is sensitive, this may lead to Insecure Direct Object Reference (IDOR) behavior and allow users to read arbitrary records.... Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.avoid-redirect app/controllers/transformer_profiles_controller.rb:30 When a redirect uses user input, a malicious user can spoof a website under a trusted URL or access restricted parts of a site. When using user-supplied values, sanitize the value before using it for the redirect. [confidence medium] Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.avoid-session-manipulation app/controllers/users/omniauth_callbacks_controller.rb:19 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] Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.avoid-session-manipulation app/controllers/users/omniauth_callbacks_controller.rb:20 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] Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.avoid-session-manipulation app/controllers/workspaces_controller.rb:6 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] Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.avoid-redirect app/controllers/workspaces_controller.rb:8 When a redirect uses user input, a malicious user can spoof a website under a trusted URL or access restricted parts of a site. When using user-supplied values, sanitize the value before using it for the redirect. [confidence medium] Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.avoid-html-safe app/helpers/icon_helper.rb:22 'html_safe()' does not make the supplied string safe. 'html_safe()' bypasses HTML escaping. If external data can reach here, this exposes your application to cross-site scripting (XSS) attacks. Ensure no external data reaches here.... Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.avoid-content-tag app/helpers/structured_data_helper.rb:40 'content_tag()' bypasses HTML escaping for some portion of the content. If external data can reach here, this exposes your application to cross-site scripting (XSS) attacks. Ensure no external data reaches here. If you must do this,... Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.avoid-html-safe app/helpers/structured_data_helper.rb:40 'html_safe()' does not make the supplied string safe. 'html_safe()' bypasses HTML escaping. If external data can reach here, this exposes your application to cross-site scripting (XSS) attacks. Ensure no external data reaches here.... Static analysis (opengrep)
medium opengrep/javascript.lang.security.html-in-template-string app/javascript/controllers/audio_recorder_controller.js:1021 This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS).... Static analysis (opengrep)
medium opengrep/javascript.lang.security.html-in-template-string app/javascript/controllers/audio_recorder_controller.js:1030 This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS).... Static analysis (opengrep)
medium opengrep/javascript.lang.security.html-in-template-string app/javascript/controllers/document_editor_controller.js:64 This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS).... Static analysis (opengrep)
medium opengrep/javascript.lang.security.html-in-template-string app/javascript/controllers/document_editor_controller.js:73 This template literal looks like HTML and has interpolated variables. These variables are not HTML-encoded by default. If the variables contain HTML tags, these may be interpreted by the browser, resulting in cross-site scripting (XSS).... Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.templates.dangerous-link-to app/views/documents/show.html.erb:21 Detected a template variable used in 'link_to'. This will generate dynamic data in the 'href' attribute. This allows a malicious actor to input the 'javascript:' URI and is subject to cross- site scripting (XSS) attacks. If using a... Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.templates.dangerous-link-to app/views/documents/show.html.erb:27 Detected a template variable used in 'link_to'. This will generate dynamic data in the 'href' attribute. This allows a malicious actor to input the 'javascript:' URI and is subject to cross- site scripting (XSS) attacks. If using a... Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.templates.dangerous-link-to app/views/documents/show.html.erb:33 Detected a template variable used in 'link_to'. This will generate dynamic data in the 'href' attribute. This allows a malicious actor to input the 'javascript:' URI and is subject to cross- site scripting (XSS) attacks. If using a... Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.templates.dangerous-link-to app/views/documents/show.html.erb:50 Detected a template variable used in 'link_to'. This will generate dynamic data in the 'href' attribute. This allows a malicious actor to input the 'javascript:' URI and is subject to cross- site scripting (XSS) attacks. If using a... Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.templates.dangerous-link-to app/views/documents/show.html.erb:56 Detected a template variable used in 'link_to'. This will generate dynamic data in the 'href' attribute. This allows a malicious actor to input the 'javascript:' URI and is subject to cross- site scripting (XSS) attacks. If using a... Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.templates.dangerous-link-to app/views/documents/show.html.erb:62 Detected a template variable used in 'link_to'. This will generate dynamic data in the 'href' attribute. This allows a malicious actor to input the 'javascript:' URI and is subject to cross- site scripting (XSS) attacks. If using a... Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.templates.dangerous-link-to app/views/documents/show.html.erb:72 Detected a template variable used in 'link_to'. This will generate dynamic data in the 'href' attribute. This allows a malicious actor to input the 'javascript:' URI and is subject to cross- site scripting (XSS) attacks. If using a... Static analysis (opengrep)
medium opengrep/ruby.rails.security.brakeman.check-reverse-tabnabbing app/views/licenses/show.html.erb:37 Setting an anchor target of `_blank` without the `noopener` or `noreferrer` attribute allows reverse tabnabbing on Internet Explorer, Opera, and Android Webview. [confidence medium] Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.templates.avoid-content-tag app/views/payments/success.html.erb:11 'content_tag' exhibits unintuitive escaping behavior and may accidentally expose your application to cross-site scripting. If using Rails 2, only attribute values are escaped. If using Rails 3, content and attribute values are escaped.... Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.templates.unquoted-attribute app/views/pricing/_plan_overview.html.erb:117 Detected a unquoted template variable as an attribute. If unquoted, a malicious actor could inject custom JavaScript handlers. To fix this, add quotes around the template expression, like this: "<%= expr %>". [confidence low] Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.templates.unquoted-attribute app/views/pricing/_plan_overview.html.erb:12 Detected a unquoted template variable as an attribute. If unquoted, a malicious actor could inject custom JavaScript handlers. To fix this, add quotes around the template expression, like this: "<%= expr %>". [confidence low] Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.templates.unquoted-attribute app/views/pricing/_plan_overview.html.erb:13 Detected a unquoted template variable as an attribute. If unquoted, a malicious actor could inject custom JavaScript handlers. To fix this, add quotes around the template expression, like this: "<%= expr %>". [confidence low] Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.templates.unquoted-attribute app/views/pricing/_plan_overview.html.erb:14 Detected a unquoted template variable as an attribute. If unquoted, a malicious actor could inject custom JavaScript handlers. To fix this, add quotes around the template expression, like this: "<%= expr %>". [confidence low] Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.templates.unquoted-attribute app/views/pricing/_plan_overview.html.erb:20 Detected a unquoted template variable as an attribute. If unquoted, a malicious actor could inject custom JavaScript handlers. To fix this, add quotes around the template expression, like this: "<%= expr %>". [confidence low] Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.templates.unquoted-attribute app/views/pricing/_plan_overview.html.erb:249 Detected a unquoted template variable as an attribute. If unquoted, a malicious actor could inject custom JavaScript handlers. To fix this, add quotes around the template expression, like this: "<%= expr %>". [confidence low] Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.templates.unquoted-attribute app/views/pricing/_plan_overview.html.erb:50 Detected a unquoted template variable as an attribute. If unquoted, a malicious actor could inject custom JavaScript handlers. To fix this, add quotes around the template expression, like this: "<%= expr %>". [confidence low] Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.templates.unquoted-attribute app/views/pricing/_plan_overview.html.erb:52 Detected a unquoted template variable as an attribute. If unquoted, a malicious actor could inject custom JavaScript handlers. To fix this, add quotes around the template expression, like this: "<%= expr %>". [confidence low] Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.templates.unquoted-attribute app/views/recording_sessions/_integrity_status.html.erb:18 Detected a unquoted template variable as an attribute. If unquoted, a malicious actor could inject custom JavaScript handlers. To fix this, add quotes around the template expression, like this: "<%= expr %>". [confidence low] Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.templates.dangerous-link-to app/views/recording_sessions/show.html.erb:106 Detected a template variable used in 'link_to'. This will generate dynamic data in the 'href' attribute. This allows a malicious actor to input the 'javascript:' URI and is subject to cross- site scripting (XSS) attacks. If using a... Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.templates.dangerous-link-to app/views/recording_sessions/show.html.erb:170 Detected a template variable used in 'link_to'. This will generate dynamic data in the 'href' attribute. This allows a malicious actor to input the 'javascript:' URI and is subject to cross- site scripting (XSS) attacks. If using a... Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.templates.dangerous-link-to app/views/recording_sessions/show.html.erb:179 Detected a template variable used in 'link_to'. This will generate dynamic data in the 'href' attribute. This allows a malicious actor to input the 'javascript:' URI and is subject to cross- site scripting (XSS) attacks. If using a... Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.templates.dangerous-link-to app/views/recording_sessions/show.html.erb:200 Detected a template variable used in 'link_to'. This will generate dynamic data in the 'href' attribute. This allows a malicious actor to input the 'javascript:' URI and is subject to cross- site scripting (XSS) attacks. If using a... Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.templates.dangerous-link-to app/views/recording_sessions/show.html.erb:209 Detected a template variable used in 'link_to'. This will generate dynamic data in the 'href' attribute. This allows a malicious actor to input the 'javascript:' URI and is subject to cross- site scripting (XSS) attacks. If using a... Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.templates.unquoted-attribute app/views/recording_sessions/show.html.erb:30 Detected a unquoted template variable as an attribute. If unquoted, a malicious actor could inject custom JavaScript handlers. To fix this, add quotes around the template expression, like this: "<%= expr %>". [confidence low] Static analysis (opengrep)
medium opengrep/ruby.rails.security.brakeman.check-reverse-tabnabbing app/views/registrations/new.html.erb:45 Setting an anchor target of `_blank` without the `noopener` or `noreferrer` attribute allows reverse tabnabbing on Internet Explorer, Opera, and Android Webview. [confidence medium] Static analysis (opengrep)
medium opengrep/ruby.rails.security.brakeman.check-reverse-tabnabbing app/views/registrations/new.html.erb:46 Setting an anchor target of `_blank` without the `noopener` or `noreferrer` attribute allows reverse tabnabbing on Internet Explorer, Opera, and Android Webview. [confidence medium] Static analysis (opengrep)
medium opengrep/ruby.rails.security.brakeman.check-reverse-tabnabbing app/views/shared/_google_oauth_button.html.erb:16 Setting an anchor target of `_blank` without the `noopener` or `noreferrer` attribute allows reverse tabnabbing on Internet Explorer, Opera, and Android Webview. [confidence medium] Static analysis (opengrep)
medium opengrep/ruby.rails.security.brakeman.check-reverse-tabnabbing app/views/shared/_google_oauth_button.html.erb:17 Setting an anchor target of `_blank` without the `noopener` or `noreferrer` attribute allows reverse tabnabbing on Internet Explorer, Opera, and Android Webview. [confidence medium] Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.templates.dangerous-link-to app/views/transformer_profiles/edit.html.erb:10 Detected a template variable used in 'link_to'. This will generate dynamic data in the 'href' attribute. This allows a malicious actor to input the 'javascript:' URI and is subject to cross- site scripting (XSS) attacks. If using a... Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.templates.dangerous-link-to app/views/transformer_profiles/show.html.erb:13 Detected a template variable used in 'link_to'. This will generate dynamic data in the 'href' attribute. This allows a malicious actor to input the 'javascript:' URI and is subject to cross- site scripting (XSS) attacks. If using a... Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.detailed-exceptions config/environments/development.rb:14 Found that the setting for providing detailed exception reports in Rails is set to true. This can lead to information exposure, where sensitive system or internal information is displayed to the end user. Instead, turn this setting off.... Static analysis (opengrep)
medium opengrep/ruby.rails.security.audit.xss.avoid-html-safe lib/changelog.rb:81 'html_safe()' does not make the supplied string safe. 'html_safe()' bypasses HTML escaping. If external data can reach here, this exposes your application to cross-site scripting (XSS) attacks. Ensure no external data reaches here.... Static analysis (opengrep)
medium opengrep/ruby.lang.security.dangerous-exec lib/nodl/audio/normalizer.rb:79 Detected non-static command inside Open3.capture3. Audit the input to 'Open3.capture3'. If unverified user data can reach this call site, this is a code injection vulnerability. A malicious actor can inject a malicious script to execute... Static analysis (opengrep)
medium opengrep/ruby.lang.security.dangerous-exec lib/nodl/audio/waveform_extractor.rb:42 Detected non-static command inside Open3.capture3. Audit the input to 'Open3.capture3'. If unverified user data can reach this call site, this is a code injection vulnerability. A malicious actor can inject a malicious script to execute... Static analysis (opengrep)
medium opengrep/ruby.lang.security.dangerous-exec lib/nodl/audio/waveform_extractor.rb:86 Detected non-static command inside Open3.popen3. Audit the input to 'Open3.popen3'. If unverified user data can reach this call site, this is a code injection vulnerability. A malicious actor can inject a malicious script to execute... Static analysis (opengrep)
medium opengrep/python.lang.security.audit.dynamic-urllib-use-detected skills/seo/broken-link-checker/scripts/checker.py:106 Detected a dynamic value being used with urllib. urllib supports 'file://' schemes, so a dynamic value controlled by a malicious actor may allow them to read arbitrary files. Audit uses of urllib calls to ensure user data cannot control... Static analysis (opengrep)
medium opengrep/python.lang.security.audit.dynamic-urllib-use-detected skills/seo/broken-link-checker/scripts/checker.py:47 Detected a dynamic value being used with urllib. urllib supports 'file://' schemes, so a dynamic value controlled by a malicious actor may allow them to read arbitrary files. Audit uses of urllib calls to ensure user data cannot control... Static analysis (opengrep)
medium opengrep/python.lang.security.audit.dynamic-urllib-use-detected skills/seo/broken-link-checker/scripts/checker.py:55 Detected a dynamic value being used with urllib. urllib supports 'file://' schemes, so a dynamic value controlled by a malicious actor may allow them to read arbitrary files. Audit uses of urllib calls to ensure user data cannot control... Static analysis (opengrep)
medium opengrep/python.lang.security.insecure-hash-algorithm-sha1 skills/seo/seo-analysis/scripts/_uid.py:61 Detected SHA1 hash algorithm which is considered insecure. SHA1 is not collision resistant and is therefore not suitable as a cryptographic signature. Use SHA256 or SHA3 instead. [confidence medium] Static analysis (opengrep)
medium opengrep/python.lang.security.audit.dynamic-urllib-use-detected skills/seo/seo-analysis/scripts/analyze_gsc.py:52 Detected a dynamic value being used with urllib. urllib supports 'file://' schemes, so a dynamic value controlled by a malicious actor may allow them to read arbitrary files. Audit uses of urllib calls to ensure user data cannot control... Static analysis (opengrep)
medium opengrep/python.lang.security.audit.dynamic-urllib-use-detected skills/seo/seo-analysis/scripts/fetch_contentful_content.py:101 Detected a dynamic value being used with urllib. urllib supports 'file://' schemes, so a dynamic value controlled by a malicious actor may allow them to read arbitrary files. Audit uses of urllib calls to ensure user data cannot control... Static analysis (opengrep)
medium opengrep/python.lang.security.audit.dynamic-urllib-use-detected skills/seo/seo-analysis/scripts/fetch_ghost_content.py:139 Detected a dynamic value being used with urllib. urllib supports 'file://' schemes, so a dynamic value controlled by a malicious actor may allow them to read arbitrary files. Audit uses of urllib calls to ensure user data cannot control... Static analysis (opengrep)
medium opengrep/python.lang.security.audit.dynamic-urllib-use-detected skills/seo/seo-analysis/scripts/fetch_ghost_content.py:177 Detected a dynamic value being used with urllib. urllib supports 'file://' schemes, so a dynamic value controlled by a malicious actor may allow them to read arbitrary files. Audit uses of urllib calls to ensure user data cannot control... Static analysis (opengrep)
medium opengrep/python.lang.security.audit.dynamic-urllib-use-detected skills/seo/seo-analysis/scripts/fetch_strapi_content.py:142 Detected a dynamic value being used with urllib. urllib supports 'file://' schemes, so a dynamic value controlled by a malicious actor may allow them to read arbitrary files. Audit uses of urllib calls to ensure user data cannot control... Static analysis (opengrep)
medium opengrep/python.lang.security.audit.dynamic-urllib-use-detected skills/seo/seo-analysis/scripts/fetch_wordpress_content.py:145 Detected a dynamic value being used with urllib. urllib supports 'file://' schemes, so a dynamic value controlled by a malicious actor may allow them to read arbitrary files. Audit uses of urllib calls to ensure user data cannot control... Static analysis (opengrep)
medium opengrep/python.lang.security.audit.dynamic-urllib-use-detected skills/seo/seo-analysis/scripts/list_gsc_sites.py:23 Detected a dynamic value being used with urllib. urllib supports 'file://' schemes, so a dynamic value controlled by a malicious actor may allow them to read arbitrary files. Audit uses of urllib calls to ensure user data cannot control... Static analysis (opengrep)
medium opengrep/python.lang.security.audit.dynamic-urllib-use-detected skills/seo/seo-analysis/scripts/pagespeed.py:59 Detected a dynamic value being used with urllib. urllib supports 'file://' schemes, so a dynamic value controlled by a malicious actor may allow them to read arbitrary files. Audit uses of urllib calls to ensure user data cannot control... Static analysis (opengrep)
medium opengrep/python.lang.security.audit.dynamic-urllib-use-detected skills/seo/seo-analysis/scripts/preflight.py:186 Detected a dynamic value being used with urllib. urllib supports 'file://' schemes, so a dynamic value controlled by a malicious actor may allow them to read arbitrary files. Audit uses of urllib calls to ensure user data cannot control... Static analysis (opengrep)
medium opengrep/python.lang.security.audit.dynamic-urllib-use-detected skills/seo/seo-analysis/scripts/preflight_contentful.py:92 Detected a dynamic value being used with urllib. urllib supports 'file://' schemes, so a dynamic value controlled by a malicious actor may allow them to read arbitrary files. Audit uses of urllib calls to ensure user data cannot control... Static analysis (opengrep)
medium opengrep/python.lang.security.audit.dynamic-urllib-use-detected skills/seo/seo-analysis/scripts/preflight_ghost.py:132 Detected a dynamic value being used with urllib. urllib supports 'file://' schemes, so a dynamic value controlled by a malicious actor may allow them to read arbitrary files. Audit uses of urllib calls to ensure user data cannot control... Static analysis (opengrep)
medium opengrep/python.lang.security.audit.dynamic-urllib-use-detected skills/seo/seo-analysis/scripts/preflight_strapi.py:150 Detected a dynamic value being used with urllib. urllib supports 'file://' schemes, so a dynamic value controlled by a malicious actor may allow them to read arbitrary files. Audit uses of urllib calls to ensure user data cannot control... Static analysis (opengrep)
medium opengrep/python.lang.security.audit.dynamic-urllib-use-detected skills/seo/seo-analysis/scripts/preflight_wordpress.py:138 Detected a dynamic value being used with urllib. urllib supports 'file://' schemes, so a dynamic value controlled by a malicious actor may allow them to read arbitrary files. Audit uses of urllib calls to ensure user data cannot control... Static analysis (opengrep)
medium opengrep/python.lang.security.audit.dynamic-urllib-use-detected skills/seo/seo-analysis/scripts/push_strapi_seo.py:164 Detected a dynamic value being used with urllib. urllib supports 'file://' schemes, so a dynamic value controlled by a malicious actor may allow them to read arbitrary files. Audit uses of urllib calls to ensure user data cannot control... Static analysis (opengrep)
medium opengrep/python.lang.security.audit.dynamic-urllib-use-detected skills/seo/seo-analysis/scripts/push_strapi_seo.py:190 Detected a dynamic value being used with urllib. urllib supports 'file://' schemes, so a dynamic value controlled by a malicious actor may allow them to read arbitrary files. Audit uses of urllib calls to ensure user data cannot control... Static analysis (opengrep)
medium opengrep/python.lang.security.audit.dynamic-urllib-use-detected skills/seo/seo-analysis/scripts/url_inspection.py:57 Detected a dynamic value being used with urllib. urllib supports 'file://' schemes, so a dynamic value controlled by a malicious actor may allow them to read arbitrary files. Audit uses of urllib calls to ensure user data cannot control... Static analysis (opengrep)
low osv/GHSA-3f4q-8x5m-76v8 Gemfile.lock [email protected] (RubyGems) is affected by GHSA-3f4q-8x5m-76v8 Dependencies (osv-scanner)
low osv/GHSA-3w22-6jfg-527w Gemfile.lock [email protected] (RubyGems) is affected by GHSA-3w22-6jfg-527w Dependencies (osv-scanner)
low osv/GHSA-4mrv-5p47-p938 Gemfile.lock [email protected] (RubyGems) is affected by GHSA-4mrv-5p47-p938 Dependencies (osv-scanner)
low osv/GHSA-4p39-36wj-23h4 Gemfile.lock [email protected] (RubyGems) is affected by GHSA-4p39-36wj-23h4 Dependencies (osv-scanner)
low osv/GHSA-539f-xcgw-2gjg Gemfile.lock [email protected] (RubyGems) is affected by GHSA-539f-xcgw-2gjg Dependencies (osv-scanner)
low osv/GHSA-5957-c7qm-m469 Gemfile.lock [email protected] (RubyGems) is affected by GHSA-5957-c7qm-m469 Dependencies (osv-scanner)
low osv/GHSA-5qhf-9phg-95m2 Gemfile.lock [email protected] (RubyGems) is affected by GHSA-5qhf-9phg-95m2 Dependencies (osv-scanner)
low osv/GHSA-5v8h-3h3q-446p Gemfile.lock [email protected] (RubyGems) is affected by GHSA-5v8h-3h3q-446p Dependencies (osv-scanner)
low osv/GHSA-6wx8-w4f5-wwcr Gemfile.lock [email protected] (RubyGems) is affected by GHSA-6wx8-w4f5-wwcr Dependencies (osv-scanner)
low osv/GHSA-8678-w3jw-xfc2 Gemfile.lock [email protected] (RubyGems) is affected by GHSA-8678-w3jw-xfc2 Dependencies (osv-scanner)
low osv/GHSA-8whx-365g-h9vv Gemfile.lock [email protected] (RubyGems) is affected by GHSA-8whx-365g-h9vv Dependencies (osv-scanner)
low osv/GHSA-9cv2-cfxc-v4v2 Gemfile.lock [email protected] (RubyGems) is affected by GHSA-9cv2-cfxc-v4v2 Dependencies (osv-scanner)
low osv/GHSA-gmj8-hvj3-49mw Gemfile.lock [email protected] (RubyGems) is affected by GHSA-gmj8-hvj3-49mw Dependencies (osv-scanner)
low osv/GHSA-p67v-3w7g-wjg7 Gemfile.lock [email protected] (RubyGems) is affected by GHSA-p67v-3w7g-wjg7 Dependencies (osv-scanner)
low osv/GHSA-p8x9-v4hv-2w4g Gemfile.lock [email protected] (RubyGems) is affected by GHSA-p8x9-v4hv-2w4g Dependencies (osv-scanner)
low osv/GHSA-phwj-rprq-35pp Gemfile.lock [email protected] (RubyGems) is affected by GHSA-phwj-rprq-35pp Dependencies (osv-scanner)
low osv/GHSA-v995-44v6-5fqm Gemfile.lock [email protected] (RubyGems) is affected by GHSA-v995-44v6-5fqm Dependencies (osv-scanner)
low osv/GHSA-wjv4-x9w8-wm3h Gemfile.lock [email protected] (RubyGems) is affected by GHSA-wjv4-x9w8-wm3h Dependencies (osv-scanner)
low osv/GHSA-x2f5-4prf-w687 Gemfile.lock [email protected] (RubyGems) is affected by GHSA-x2f5-4prf-w687 Dependencies (osv-scanner)
low gitleaks/generic-api-key test/lib/index_now_test.rb:48 Possible generic-api-key secret in the current tree (test/docs/example file) Secrets (gitleaks)

Tools and coverage

Every analyzer that ran on this commit. A failed or skipped tool is a coverage gap: its share of the score is left out and the coverage figure drops.

AnalyzerPillarStatusVersionFindingsNote
AI tool configurationAI provenanceoksignatures-v10
Explicit AI attributionAI provenanceoksignatures-v10
Release velocityAI provenanceskipped—0
Coding styleAI provenanceok—0
Commit velocityAI provenanceokprov-40
Findings in AI-written linesAI provenanceokgit-blame0
Complexity (lizard)Code qualityoklizard 1.25.10
DocumentationCode qualityok—0
Duplication (jscpd)Code qualityokrepotrust-dup-w60
LintCode qualityokopengrep 1.33.1; rules f1d2b562b41447
Tests and CICode qualityok—0
Type safetyCode qualityok—0
CI workflows (zizmor)Securityskipped—0
Dependencies (osv-scanner)Securityokosv-scanner version: 2.7.168
Release downloadsSecurityok—0
Security postureSecurityok—0
Package registriesSecurityok—0
Static analysis (opengrep)Securityokopengrep 1.33.1; rules f1d2b562b41492
OpenSSF ScorecardSecurityskipped—0no published OpenSSF Scorecard result for this repo
Secrets (gitleaks)Securityokgitleaks 8.30.11

Score history

Scores from different scoring versions aren't directly comparable.

ScoredCommitScoringAI provenanceQualitySecurity
2026-11-147325d37471dfprov-5+qual-2+sec-251%7456
2026-11-147325d37471dfprov-4+qual-2+sec-251%7456

Embed a badge

Maintainers can show these in a README. Badges update when the repository is re-scored.

[![RepoTrust ai](https://repotrust.synapticcyber.com/badge/github.com/exnihiloai/nodl/ai.svg)](https://repotrust.synapticcyber.com/r/github.com/exnihiloai/nodl/)
[![RepoTrust quality](https://repotrust.synapticcyber.com/badge/github.com/exnihiloai/nodl/quality.svg)](https://repotrust.synapticcyber.com/r/github.com/exnihiloai/nodl/)
[![RepoTrust security](https://repotrust.synapticcyber.com/badge/github.com/exnihiloai/nodl/security.svg)](https://repotrust.synapticcyber.com/r/github.com/exnihiloai/nodl/)
Full text report
  • Repository: https://github.com/exnihiloai/nodl
  • Commit: 7325d37471df0909c2056c366fc49dcc01c7fd0b
  • Generated: 2026-11-14T14:52:04+00:00
  • Scorer 0.1.0, scoring prov-5+qual-2+sec-2, report schema v2

Scores

Pillar Score Signal Confidence Coverage
AI provenance (estimated AI-generated share) 51 explicit 95% 100%
Code quality 74 adequate 90% 100%
Security 56 weak 85% 100%

AI provenance

Explicit AI attribution on 51% of first-party code added; an estimated 51% including velocity signals.

  • Explicitly attributed share (lower bound): 51.1%
  • Unattributed share in AI-consistent velocity bursts: 3.0%
  • Estimated AI-generated share: 51.1%
AI tool Attributed commits Lines added
Cursor agent 49 12,545
Claude Code 46 4,070
  • AI tooling configured in repo: generic-agent

Current source lines last changed by AI-attributed commits: 11,126 of 19,700.

Findings per 1,000 lines AI-attributed Other Ratio
Quality 4.224 0.0 n/a
Security 3.415 2.799 1.22x
Month Lines added Attributed to AI
2026-05 5,568 26%
2026-06 19,612 43%
2026-07 6,683 92%
2026-08 308 100%
2026-10 356 100%

Evidence

  • Claude Code: trailer 'Co-Authored-By: Claude' (b0e3c44036f7)
  • Claude Code: trailer 'Co-Authored-By: Claude' (536143c5e81f)
  • Claude Code: trailer 'Co-Authored-By: Claude' (1f341f8083e0)
  • Claude Code: trailer 'Co-Authored-By: Claude' (2f0dd7d119ff)
  • Claude Code: trailer 'Co-Authored-By: Claude' (0ff041853df9)
  • Claude Code: trailer 'Co-Authored-By: Claude' (7bb2f3ebbb3d)
  • Claude Code: trailer 'Co-Authored-By: Claude' (daffc988a6fb)
  • Claude Code: trailer 'Co-Authored-By: Claude' (0c9ae7a9eaf5)
  • Claude Code: trailer 'Co-Authored-By: Claude' (65d4166b3c85)
  • Claude Code: trailer 'Co-Authored-By: Claude' (dde4d9165f9c)
  • Claude Code: trailer 'Co-Authored-By: Claude' (574a81bcf8f5)
  • Cursor agent: trailer 'Co-authored-by: Cursor' (37ee9c015dc2)
  • Cursor agent: trailer 'Co-authored-by: Cursor' (2af624639c1b)
  • Cursor agent: trailer 'Co-authored-by: Cursor' (7c015fa417ba)
  • Claude Code: trailer 'Co-Authored-By: Claude' (2b2ce7b73e14)

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.55, CI runs tests; 8% of function code in complex or long functions; 9% duplicated lines. Weakest area: type safety.

Area Score
Complexity (lizard) 79
Duplication 57
Code smells (Opengrep) 55
Tests and CI 90
Documentation 100
Type safety 40
Process (Scorecard review/maintenance) n/a
  • Functions: 1,185; mean complexity 2.8, 90th percentile 6; 14 complex and 2 long functions
  • Duplicated lines: 9.5% of 14,026 compared
  • Tests: 10,833 test lines for 19,700 source lines (ratio 0.55); CI test commands: make check; 74% of recent source commits also change tests
  • Docs missing or thin: none

Most complex functions:

Security

Security posture is weak: 68 known vulnerabilities in 18 dependencies; 8 high-severity SAST findings. Weakest area: dependencies.

Area Score
Secrets (gitleaks, tree + history) 97
Static analysis (Opengrep) 51
Vulnerable dependencies (OSV) 17
CI workflows (zizmor) n/a
Posture (policy, updates, signing, lockfiles) 40
OpenSSF Scorecard n/a
  • Known vulnerabilities: 68 in 18 packages (critical 1, high 11, medium 36, low 19)

  • Posture checks passed: security policy, lockfiles; missing: dependency updates, signed commits

Top findings

Severity Finding Location
critical osv/GHSA-f3w6-w445-fwh9: [email protected] (RubyGems) is affected by GHSA-f3w6-w445-fwh9 Gemfile.lock
high opengrep/ruby.lang.security.missing-csrf-protection: Detected controller which does not enable cross-site request forgery protections using 'protect_from_forgery'. Add 'protect_from_forgery :with => :exception' to your controller class. [confidence low] app/controllers/application_controller.rb:1
high opengrep/javascript.browser.security.insecure-document-method: User controlled data in methods like innerHTML, outerHTML or document.write is an anti-pattern that can lead to XSS vulnerabilities [confidence low] app/javascript/controllers/audio_recorder_controller.js:1021
high opengrep/javascript.browser.security.insecure-innerhtml: User controlled data in a statusContainer.innerHTML is an anti-pattern that can lead to XSS vulnerabilities [confidence low] app/javascript/controllers/audio_recorder_controller.js:1021
high opengrep/javascript.browser.security.insecure-document-method: User controlled data in methods like innerHTML, outerHTML or document.write is an anti-pattern that can lead to XSS vulnerabilities [confidence low] app/javascript/controllers/audio_recorder_controller.js:1030
high opengrep/javascript.browser.security.insecure-innerhtml: User controlled data in a segmentsContainer.innerHTML is an anti-pattern that can lead to XSS vulnerabilities [confidence low] app/javascript/controllers/audio_recorder_controller.js:1030
high opengrep/javascript.browser.security.insecure-document-method: User controlled data in methods like innerHTML, outerHTML or document.write is an anti-pattern that can lead to XSS vulnerabilities [confidence low] app/javascript/controllers/document_editor_controller.js:199
high opengrep/javascript.browser.security.insecure-innerhtml: User controlled data in a this.surfaceTarget.innerHTML is an anti-pattern that can lead to XSS vulnerabilities [confidence low] app/javascript/controllers/document_editor_controller.js:199
high opengrep/python.lang.security.audit.dangerous-subprocess-use-audit: Detected subprocess function 'run' without a static string. If this data can be controlled by a malicious actor, it may be an instance of command injection. Audit the use of this call to ensure it is not controllable by an external resource. You may consider using 'shlex.escape()'. [confidence low] skills/seo/seo-analysis/scripts/_gcloud.py:27
high osv/GHSA-2gff-2mmg-m73p: [email protected] (RubyGems) is affected by GHSA-2gff-2mmg-m73p Gemfile.lock
high osv/GHSA-wm3x-v3qw-4jh3: [email protected] (RubyGems) is affected by GHSA-wm3x-v3qw-4jh3 Gemfile.lock
high osv/GHSA-v924-7rp8-4mxh: [email protected] (RubyGems) is affected by GHSA-v924-7rp8-4mxh Gemfile.lock
high osv/GHSA-8474-xrp6-wh69: [email protected] (RubyGems) is affected by GHSA-8474-xrp6-wh69 Gemfile.lock
high osv/GHSA-h8w8-99g7-qmvj: [email protected] (RubyGems) is affected by GHSA-h8w8-99g7-qmvj Gemfile.lock
high osv/GHSA-6wmf-3r64-vcwv: [email protected] (RubyGems) is affected by GHSA-6wmf-3r64-vcwv Gemfile.lock
high osv/GHSA-98m9-hrrm-r99r: [email protected] (RubyGems) is affected by GHSA-98m9-hrrm-r99r Gemfile.lock
high osv/GHSA-73v3-wf97-vpgj: [email protected] (RubyGems) is affected by GHSA-73v3-wf97-vpgj Gemfile.lock
high osv/GHSA-5v64-555j-wjxm: [email protected] (RubyGems) is affected by GHSA-5v64-555j-wjxm Gemfile.lock
high osv/GHSA-47m2-wp7j-p9vc: [email protected] (RubyGems) is affected by GHSA-47m2-wp7j-p9vc Gemfile.lock
high osv/GHSA-2x63-gw47-w4mm: [email protected] (RubyGems) is affected by GHSA-2x63-gw47-w4mm Gemfile.lock
medium opengrep/ruby.rails.security.audit.xss.avoid-redirect: When a redirect uses user input, a malicious user can spoof a website under a trusted URL or access restricted parts of a site. When using user-supplied values, sanitize the value before using it for the redirect. [confidence medium] app/controllers/admin/users_controller.rb:61
medium opengrep/ruby.rails.security.brakeman.check-unscoped-find: Found an unscoped find(...) with user-controllable input. If the ActiveRecord model being searched against is sensitive, this may lead to Insecure Direct Object Reference (IDOR) behavior and allow users to read arbitrary records. Scope the find to the current user, e.g. `current_user.accounts.find [confidence medium] app/controllers/admin/users_controller.rb:159
medium opengrep/ruby.rails.security.brakeman.check-render-local-file-include: Found request parameters in a call to render. This can allow end users to request arbitrary local files which may result in leaking sensitive information persisted on disk. Where possible, avoid letting users specify template paths for render. If you must allow user input, use an allow-list of k [confidence medium] app/controllers/content_pages_controller.rb:18
medium opengrep/ruby.rails.security.audit.xss.avoid-redirect: When a redirect uses user input, a malicious user can spoof a website under a trusted URL or access restricted parts of a site. When using user-supplied values, sanitize the value before using it for the redirect. [confidence medium] app/controllers/documents_controller.rb:26
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] app/controllers/locales_controller.rb:8

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.

Distribution signals

  • readme-download-lure: gives an archive password

Signals consistent with a repository that exists to distribute a download. They are heuristics, not a verdict; release files were not downloaded or inspected.

Repository profile

  • Source lines: 19,700; test lines: 10,833
Language Lines
Ruby 20,889
Python 5,810
JavaScript 3,380
Shell 454