-
Notifications
You must be signed in to change notification settings - Fork 0
test: verify PR review comments #1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
d455f05
40c40b1
9b33c97
a72b41e
c44b066
3f0c2ea
ea991ad
9f2f26b
2f567fa
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line 32: 🔴 CodeSheriff: Password comparison with == operator Non-constant-time password comparison is a critical auth anti-pattern in AI code. Why this matters: Impact: Attackers can use timing analysis to brute-force passwords faster, and the hardcoded 'admin/admin' credentials expose your entire system. In production, this means guaranteed unauthorized access and potential data breaches. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line 7: 🔴 CodeSheriff: App.Rules.Js Hardcoded Credential Hardcoded credential detected. Secrets, passwords, API keys, and tokens must be loaded from environment variables or a secrets manager — never embedded in source code. Why this matters: Impact: Attackers can extract these credentials to gain unauthorized access to your systems, databases, or third-party services. This could lead to data breaches, service abuse, or complete system compromise. Credentials in code are also exposed in CI/CD logs and deployment artifacts. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line 8: 🔴 CodeSheriff: App.Rules.Js Hardcoded Credential Hardcoded credential detected. Secrets, passwords, API keys, and tokens must be loaded from environment variables or a secrets manager — never embedded in source code. Why this matters: Impact: Attackers can extract these credentials to gain unauthorized access to your systems, databases, or third-party services. This could lead to data breaches, service abuse, or complete system compromise. Credentials in code are also exposed in CI/CD logs and deployment artifacts. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line 9: 🔴 CodeSheriff: App.Rules.Js Hardcoded Credential Hardcoded credential detected. Secrets, passwords, API keys, and tokens must be loaded from environment variables or a secrets manager — never embedded in source code. Why this matters: Impact: Attackers can extract these credentials to gain unauthorized access to your systems, databases, or third-party services. This could lead to data breaches, service abuse, or complete system compromise. Credentials in code are also exposed in CI/CD logs and deployment artifacts. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line 32: 🔴 CodeSheriff: App.Rules.Js Loose Auth Equality Authentication uses == (loose equality) instead of === (strict equality), which can lead to type coercion bypasses and is also not a constant-time comparison. Use a constant-time comparison and a proper password hashing scheme. Why this matters: Impact: Complete authentication bypass. Attackers could gain unauthorized access to protected resources without valid credentials. Additionally, non-constant-time comparisons are vulnerable to timing attacks that can reveal information about valid credentials through response time analysis. Suggested fix:
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line 43: 🔴 CodeSheriff: App.Rules.Js Jwt None Algorithm JWT verification accepts the "none" algorithm. An attacker can forge a token with alg=none and bypass signature verification entirely. Restrict algorithms to a specific signing scheme such as ["HS256"] or ["RS256"]. Why this matters: Impact: Complete authentication bypass. Attackers can impersonate any user, access admin functions, steal sensitive data, or perform unauthorized actions by simply crafting unsigned JWTs with any user ID or privileges they want. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line 51: 🔴 CodeSheriff: App.Rules.Js Path Traversal Fs Read Possible path traversal — the file path is constructed from a string concatenation or template literal that may include unvalidated user input. Use path.resolve() with a strict allowlist or path.basename() and verify the final path is inside the intended directory. Why this matters: Impact: Attackers can read any file your application has access to, potentially exposing database credentials, API keys, user data, or system configuration files. This could lead to full system compromise. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line 57: 🔴 CodeSheriff: App.Rules.Js Open Redirect Open redirect — res.redirect() is called with an unvalidated user- controlled value. Attackers can craft links that redirect victims to arbitrary external domains. Validate the target against an allowlist of known-safe paths before redirecting. Why this matters: Impact: Attackers can steal credentials through convincing phishing attacks, distribute malware, or bypass security controls. Users clicking legitimate-looking links from your domain get redirected to malicious sites, damaging user trust and potentially your reputation. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line 64: 🔴 CodeSheriff: App.Rules.Js Prototype Pollution Merge Possible prototype pollution — copying user-supplied object keys into a target without filtering "proto", "constructor", or "prototype" can let an attacker mutate Object.prototype. Use Object.assign with a sanitized source, a Map, or explicitly skip dangerous keys. Why this matters: Impact: Attackers can modify the behavior of all objects in your app, bypass authentication checks, cause denial of service, or execute arbitrary code. For example, setting Object.prototype.isAdmin = true could grant unauthorized access to admin features. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line 9: 🔴 CodeSheriff: API key in source code Hardcoded credential detected — must be moved to environment variables. Why this matters: Impact: Attackers can steal your API key from GitHub/version control, rack up charges on your account, access sensitive data, or impersonate your application. This could result in financial damage, data breaches, or service disruption. Suggested fix:
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line 32: 🔴 CodeSheriff: Password comparison with == operator Non-constant-time password comparison is a critical auth anti-pattern in AI code. Why this matters: Impact: Attackers can brute-force passwords faster using timing analysis, potentially gaining admin access. Hardcoded credentials expose your system if code is leaked, shared, or stored in version control. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line 7: 🔴 CodeSheriff: App.Rules.Js Hardcoded Credential Hardcoded credential detected. Secrets, passwords, API keys, and tokens must be loaded from environment variables or a secrets manager — never embedded in source code. Why this matters: Impact: Attackers can extract these credentials from your codebase, Git history, or bundled JavaScript files. This leads to unauthorized access to your systems, data breaches, and potential financial loss. Even if code is 'private,' credentials can leak through CI/CD logs, developer machines, or repository access. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line 8: 🔴 CodeSheriff: App.Rules.Js Hardcoded Credential Hardcoded credential detected. Secrets, passwords, API keys, and tokens must be loaded from environment variables or a secrets manager — never embedded in source code. Why this matters: Impact: Attackers can extract these credentials from your codebase, Git history, or bundled JavaScript files. This leads to unauthorized access to your systems, data breaches, and potential financial loss. Even if code is 'private,' credentials can leak through CI/CD logs, developer machines, or repository access. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line 9: 🔴 CodeSheriff: App.Rules.Js Hardcoded Credential Hardcoded credential detected. Secrets, passwords, API keys, and tokens must be loaded from environment variables or a secrets manager — never embedded in source code. Why this matters: Impact: Attackers can extract these credentials from your codebase, Git history, or bundled JavaScript files. This leads to unauthorized access to your systems, data breaches, and potential financial loss. Even if code is 'private,' credentials can leak through CI/CD logs, developer machines, or repository access. Suggested fix:
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line 32: 🔴 CodeSheriff: App.Rules.Js Loose Auth Equality Authentication uses == (loose equality) instead of === (strict equality), which can lead to type coercion bypasses and is also not a constant-time comparison. Use a constant-time comparison and a proper password hashing scheme. Why this matters: Impact: Attackers could bypass authentication entirely by exploiting type coercion (e.g., sending 0 instead of a password) or use timing analysis to enumerate valid usernames/passwords. This could lead to complete account takeover and unauthorized system access. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line 43: 🔴 CodeSheriff: App.Rules.Js Jwt None Algorithm JWT verification accepts the "none" algorithm. An attacker can forge a token with alg=none and bypass signature verification entirely. Restrict algorithms to a specific signing scheme such as ["HS256"] or ["RS256"]. Why this matters: Impact: Complete authentication bypass. Attackers can impersonate any user, access admin accounts, steal sensitive data, or perform unauthorized actions by crafting fake JWT tokens. This essentially breaks your entire authentication system. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line 51: 🔴 CodeSheriff: App.Rules.Js Path Traversal Fs Read Possible path traversal — the file path is constructed from a string concatenation or template literal that may include unvalidated user input. Use path.resolve() with a strict allowlist or path.basename() and verify the final path is inside the intended directory. Why this matters: Impact: Complete server compromise. Attackers can steal configuration files, environment variables, private keys, database credentials, or any file the application can read. This often leads to full system takeover and data breaches. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line 57: 🔴 CodeSheriff: App.Rules.Js Open Redirect Open redirect — res.redirect() is called with an unvalidated user- controlled value. Attackers can craft links that redirect victims to arbitrary external domains. Validate the target against an allowlist of known-safe paths before redirecting. Why this matters: Impact: Attackers can create convincing phishing campaigns using your domain's reputation. Users click what appears to be a trusted link to your site, but get redirected to fake login pages that steal credentials, or sites serving malware. This damages user trust and your brand reputation. Suggested fix:
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line 64: 🔴 CodeSheriff: App.Rules.Js Prototype Pollution Merge Possible prototype pollution — copying user-supplied object keys into a target without filtering "proto", "constructor", or "prototype" can let an attacker mutate Object.prototype. Use Object.assign with a sanitized source, a Map, or explicitly skip dangerous keys. Why this matters: Impact: An attacker can inject malicious properties that become available on all objects globally. This can bypass security checks, cause denial of service, enable remote code execution, or break application logic. For example, setting Object.prototype.isAdmin = true could grant unauthorized access. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line 71: 🔴 CodeSheriff: App.Rules.Js Idor Route Userid No Auth Possible IDOR — the route reads a user identifier from req.params and uses it directly in a database query without an apparent authorization check. Verify that the requesting user is allowed to access the requested object before responding. Why this matters: Impact: Attackers can enumerate user IDs to access private user information, personal data, or perform unauthorized operations on behalf of other users. This could lead to data breaches, privacy violations, and regulatory compliance issues. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line 22: 🔴 CodeSheriff: SQL injection vulnerability in /user/:id endpoint SQL injection vulnerability in /user/:id endpoint. User input req.params.id is directly concatenated into SQL query without parameterization, allowing attackers to execute arbitrary SQL commands by sending requests like /user/1; DROP TABLE users;-- Why this matters: Impact: Attackers can read sensitive data from any table, modify or delete records, create admin accounts, or completely destroy your database. They could steal user passwords, credit card info, or wipe your entire application's data with a single malicious URL. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line 40: 🔴 CodeSheriff: JWT algorithm confusion attack in /admin endpoint JWT algorithm confusion attack in /admin endpoint. The jwt.verify() call explicitly allows 'none' algorithm which bypasses signature verification, allowing attackers to create unsigned tokens with any payload and gain admin access Why this matters: Impact: Complete authentication bypass. Attackers can instantly gain admin access by crafting unsigned JWTs with elevated privileges, potentially accessing sensitive data, modifying user accounts, or taking over the entire application. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line 9: 🔴 CodeSheriff: API key in source code Hardcoded credential detected — must be moved to environment variables. Why this matters: Impact: Attackers can steal your API key from GitHub/version control, rack up charges on your account, access sensitive data, or impersonate your application. This could result in financial damage, data breaches, or service disruption. Suggested fix:
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line 32: 🔴 CodeSheriff: Password comparison with == operator Non-constant-time password comparison is a critical auth anti-pattern in AI code. Why this matters: Impact: Attackers can brute-force passwords faster using timing analysis, potentially gaining admin access. Hardcoded credentials expose your system if code is leaked, shared, or stored in version control. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line 7: 🔴 CodeSheriff: App.Rules.Js Hardcoded Credential Hardcoded credential detected. Secrets, passwords, API keys, and tokens must be loaded from environment variables or a secrets manager — never embedded in source code. Why this matters: Impact: Attackers can extract these credentials from your codebase, Git history, or bundled JavaScript files. This leads to unauthorized access to your systems, data breaches, and potential financial loss. Even if code is 'private,' credentials can leak through CI/CD logs, developer machines, or repository access. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line 8: 🔴 CodeSheriff: App.Rules.Js Hardcoded Credential Hardcoded credential detected. Secrets, passwords, API keys, and tokens must be loaded from environment variables or a secrets manager — never embedded in source code. Why this matters: Impact: Attackers can extract these credentials from your codebase, Git history, or bundled JavaScript files. This leads to unauthorized access to your systems, data breaches, and potential financial loss. Even if code is 'private,' credentials can leak through CI/CD logs, developer machines, or repository access. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line 9: 🔴 CodeSheriff: App.Rules.Js Hardcoded Credential Hardcoded credential detected. Secrets, passwords, API keys, and tokens must be loaded from environment variables or a secrets manager — never embedded in source code. Why this matters: Impact: Attackers can extract these credentials from your codebase, Git history, or bundled JavaScript files. This leads to unauthorized access to your systems, data breaches, and potential financial loss. Even if code is 'private,' credentials can leak through CI/CD logs, developer machines, or repository access. Suggested fix:
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line 32: 🔴 CodeSheriff: App.Rules.Js Loose Auth Equality Authentication uses == (loose equality) instead of === (strict equality), which can lead to type coercion bypasses and is also not a constant-time comparison. Use a constant-time comparison and a proper password hashing scheme. Why this matters: Impact: Attackers could bypass authentication entirely by exploiting type coercion (e.g., sending 0 instead of a password) or use timing analysis to enumerate valid usernames/passwords. This could lead to complete account takeover and unauthorized system access. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line 43: 🔴 CodeSheriff: App.Rules.Js Jwt None Algorithm JWT verification accepts the "none" algorithm. An attacker can forge a token with alg=none and bypass signature verification entirely. Restrict algorithms to a specific signing scheme such as ["HS256"] or ["RS256"]. Why this matters: Impact: Complete authentication bypass. Attackers can impersonate any user, access admin accounts, steal sensitive data, or perform unauthorized actions by crafting fake JWT tokens. This essentially breaks your entire authentication system. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line 51: 🔴 CodeSheriff: App.Rules.Js Path Traversal Fs Read Possible path traversal — the file path is constructed from a string concatenation or template literal that may include unvalidated user input. Use path.resolve() with a strict allowlist or path.basename() and verify the final path is inside the intended directory. Why this matters: Impact: Complete server compromise. Attackers can steal configuration files, environment variables, private keys, database credentials, or any file the application can read. This often leads to full system takeover and data breaches. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line 57: 🔴 CodeSheriff: App.Rules.Js Open Redirect Open redirect — res.redirect() is called with an unvalidated user- controlled value. Attackers can craft links that redirect victims to arbitrary external domains. Validate the target against an allowlist of known-safe paths before redirecting. Why this matters: Impact: Attackers can create convincing phishing campaigns using your domain's reputation. Users click what appears to be a trusted link to your site, but get redirected to fake login pages that steal credentials, or sites serving malware. This damages user trust and your brand reputation. Suggested fix:
Suggested change
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line 64: 🔴 CodeSheriff: App.Rules.Js Prototype Pollution Merge Possible prototype pollution — copying user-supplied object keys into a target without filtering "proto", "constructor", or "prototype" can let an attacker mutate Object.prototype. Use Object.assign with a sanitized source, a Map, or explicitly skip dangerous keys. Why this matters: Impact: An attacker can inject malicious properties that become available on all objects globally. This can bypass security checks, cause denial of service, enable remote code execution, or break application logic. For example, setting Object.prototype.isAdmin = true could grant unauthorized access. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line 71: 🔴 CodeSheriff: App.Rules.Js Idor Route Userid No Auth Possible IDOR — the route reads a user identifier from req.params and uses it directly in a database query without an apparent authorization check. Verify that the requesting user is allowed to access the requested object before responding. Why this matters: Impact: Attackers can enumerate user IDs to access private user information, personal data, or perform unauthorized operations on behalf of other users. This could lead to data breaches, privacy violations, and regulatory compliance issues. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line 22: 🔴 CodeSheriff: SQL injection vulnerability in /user/:id endpoint SQL injection vulnerability in /user/:id endpoint. User input req.params.id is directly concatenated into SQL query without parameterization, allowing attackers to execute arbitrary SQL commands by sending requests like /user/1; DROP TABLE users;-- Why this matters: Impact: Attackers can read sensitive data from any table, modify or delete records, create admin accounts, or completely destroy your database. They could steal user passwords, credit card info, or wipe your entire application's data with a single malicious URL. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Line 40: 🔴 CodeSheriff: JWT algorithm confusion attack in /admin endpoint JWT algorithm confusion attack in /admin endpoint. The jwt.verify() call explicitly allows 'none' algorithm which bypasses signature verification, allowing attackers to create unsigned tokens with any payload and gain admin access Why this matters: Impact: Complete authentication bypass. Attackers can instantly gain admin access by crafting unsigned JWTs with elevated privileges, potentially accessing sensitive data, modifying user accounts, or taking over the entire application. |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1 @@ | ||
| Tue Apr 28 18:31:33 PDT 2026 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,29 @@ | ||
| // Deliberately vulnerable file to verify PR review comments | ||
| const express = require("express"); | ||
| const app = express(); | ||
|
|
||
| // Hardcoded API key - should trigger finding | ||
| const STRIPE_KEY = "sk-test-FAKE-verify-pr-comments-1234567890abcdef"; | ||
|
|
||
| // SQL injection via string concat | ||
| app.get("/search", (req, res) => { | ||
| const query = "SELECT * FROM products WHERE name = '" + req.query.q + "'"; | ||
| db.query(query, (err, results) => res.json(results)); | ||
| }); | ||
|
|
||
| // Path traversal | ||
| app.get("/download", (req, res) => { | ||
| const fs = require("fs"); | ||
| const content = fs.readFileSync("/files/" + req.params.file, "utf8"); | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🔴 CodeSheriff: App.Rules.Js Path Traversal Fs Read Possible path traversal — the file path is constructed from a string concatenation or template literal that may include unvalidated user input. Use path.resolve() with a strict allowlist or path.basename() and verify the final path is inside the intended directory. Why this matters: Impact: Complete server compromise. Attackers can steal configuration files, environment variables, private keys, database credentials, or any file the application can read. This often leads to full system takeover and data breaches. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🔴 CodeSheriff: App.Rules.Js Path Traversal Fs Read Possible path traversal — the file path is constructed from a string concatenation or template literal that may include unvalidated user input. Use path.resolve() with a strict allowlist or path.basename() and verify the final path is inside the intended directory. Why this matters: Impact: Complete server compromise. Attackers can steal configuration files, environment variables, private keys, database credentials, or any file the application can read. This often leads to full system takeover and data breaches. |
||
| res.send(content); | ||
| }); | ||
|
|
||
| // Open redirect | ||
| app.get("/go", (req, res) => { | ||
| res.redirect(req.query.url); | ||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🔴 CodeSheriff: App.Rules.Js Open Redirect Open redirect — res.redirect() is called with an unvalidated user- controlled value. Attackers can craft links that redirect victims to arbitrary external domains. Validate the target against an allowlist of known-safe paths before redirecting. Why this matters: Impact: Attackers can create convincing phishing campaigns using your domain's reputation. Users click what appears to be a trusted link to your site, but get redirected to fake login pages that steal credentials, or sites serving malware. This damages user trust and your brand reputation. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🔴 CodeSheriff: App.Rules.Js Open Redirect Open redirect — res.redirect() is called with an unvalidated user- controlled value. Attackers can craft links that redirect victims to arbitrary external domains. Validate the target against an allowlist of known-safe paths before redirecting. Why this matters: Impact: Attackers can create convincing phishing campaigns using your domain's reputation. Users click what appears to be a trusted link to your site, but get redirected to fake login pages that steal credentials, or sites serving malware. This damages user trust and your brand reputation. |
||
| }); | ||
|
|
||
| app.listen(4000); | ||
| // verify-pr-1776130797 | ||
| // trigger scan after blob-sha fix 1776131745 | ||
| // re-trigger after deploy confirmed live 1776131829 | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Line 9:
🔴 CodeSheriff: API key in source code
Hardcoded credential detected — must be moved to environment variables.
Why this matters:
You've hardcoded an API key directly in source code. This credential will be visible to anyone with code access and gets stored in version control history permanently. API keys should never be committed to repositories.
Impact: Attackers can steal your API key from GitHub/GitLab, leading to unauthorized API usage, data breaches, or unexpected billing charges. Even if you remove it later, it remains in git history forever.