← Legacy view v2 (rp.*)

vinayluffy-12/payrollproject

https://github.com/vinayluffy-12/payrollproject.git · lang: javascript · LOC: · source: user_submitted

Quality
48.2
Grade D+
Security
65.9
Findings
84
6 critical · 50 high
Status
completed
May 28, 2026 06:07
high: 50 low: 11 info: 10 medium: 7 critical: 6
Top rules by occurrence
RuleSeverityCount
MINED113 Express POST/PUT/DELETE/PATCH route without auth high 25
MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) high 10
MINED118 Dockerfile FROM not pinned by sha256 digest high 4
SEC135 Auth/permission check missing on AI-generated endpoint high 4
MINED116 GHA pull_request workflow leaks secrets to forks critical 4
MINED044 Js Console Log Prod info 4
DKC010 Compose service lacks no-new-privileges hardening low 3
DKR014 Dockerfile copies the entire context without .dockerignore high 3
DKC006 Compose service does not declare a runtime user low 3
DKR001 Docker final stage has no non-root USER medium 3
First 84 findings (severity-sorted)
critical DKC007 Compose service contains a literal secret environment value
docker-compose.yml:4 · conf 0.96
Compose service contains a literal secret environment value
critical DKC007 Compose service contains a literal secret environment value
docker-compose.yml:27 · conf 0.96
Compose service contains a literal secret environment value
critical MINED116 GHA pull_request workflow leaks secrets to forks CWE-829
payrollos/.github/workflows/ci-cd.yml:58 · conf 0.90
[MINED116] Workflow uses `secrets.AWS_ACCESS_KEY_ID` on a `pull_request` trigger: This workflow triggers on `pull_request`, which checks out the FORK's code. Referencing `${ secrets.AWS_ACCESS_KEY_ID…
critical MINED116 GHA pull_request workflow leaks secrets to forks CWE-829
payrollos/.github/workflows/ci-cd.yml:59 · conf 0.90
[MINED116] Workflow uses `secrets.AWS_SECRET_ACCESS_KEY` on a `pull_request` trigger: This workflow triggers on `pull_request`, which checks out the FORK's code. Referencing `${ secrets.AWS_SECRET_AC…
critical MINED116 GHA pull_request workflow leaks secrets to forks CWE-829
payrollos/.github/workflows/ci-cd.yml:98 · conf 0.90
[MINED116] Workflow uses `secrets.KUBE_CONFIG_STAGING` on a `pull_request` trigger: This workflow triggers on `pull_request`, which checks out the FORK's code. Referencing `${ secrets.KUBE_CONFIG_STA…
critical MINED116 GHA pull_request workflow leaks secrets to forks CWE-829
payrollos/.github/workflows/ci-cd.yml:119 · conf 0.90
[MINED116] Workflow uses `secrets.KUBE_CONFIG_PRODUCTION` on a `pull_request` trigger: This workflow triggers on `pull_request`, which checks out the FORK's code. Referencing `${ secrets.KUBE_CONFIG_…
high CORE_NO_TESTS No test files found
No test files found
high DKC011 Database service publishes a host port
docker-compose.yml:4 · conf 0.84
Database service publishes a host port
high DKC011 Database service publishes a host port
docker-compose.yml:17 · conf 0.84
Database service publishes a host port
high DKR014 Dockerfile copies the entire context without .dockerignore
payrollos/backend/Dockerfile:5 · conf 0.92
Dockerfile copies the entire context without .dockerignore
high DKR014 Dockerfile copies the entire context without .dockerignore
payrollos/fraud-service/Dockerfile:5 · conf 0.92
Dockerfile copies the entire context without .dockerignore
high DKR014 Dockerfile copies the entire context without .dockerignore
payrollos/frontend/Dockerfile:6 · conf 0.92
Dockerfile copies the entire context without .dockerignore
high MINED112 FastAPI POST/PUT/DELETE/PATCH endpoint without auth CWE-306CWE-862
payrollos/fraud-service/main.py:49 · conf 0.80
[MINED112] FastAPI POST /api/v1/fraud/check-run has no auth: Handler `check_payroll_run` is registered with router/app.post(...) but no Depends/Security parameter is declared and no auth marker appea…
high MINED113 Express POST/PUT/DELETE/PATCH route without auth CWE-306CWE-862
payrollos/backend/src/routes/admin.js:26 · conf 0.80
[MINED113] Express PUT /verify/:requestId has no auth: Express route PUT /verify/:requestId declared without an auth middleware in its handler chain. Destructive methods (POST/PUT/DELETE/PATCH) on un…
high MINED113 Express POST/PUT/DELETE/PATCH route without auth CWE-306CWE-862
payrollos/backend/src/routes/attendance.js:47 · conf 0.80
[MINED113] Express POST /checkin has no auth: Express route POST /checkin declared without an auth middleware in its handler chain. Destructive methods (POST/PUT/DELETE/PATCH) on unauthenticated rout…
high MINED113 Express POST/PUT/DELETE/PATCH route without auth CWE-306CWE-862
payrollos/backend/src/routes/attendance.js:110 · conf 0.80
[MINED113] Express POST /checkout has no auth: Express route POST /checkout declared without an auth middleware in its handler chain. Destructive methods (POST/PUT/DELETE/PATCH) on unauthenticated ro…
high MINED113 Express POST/PUT/DELETE/PATCH route without auth CWE-306CWE-862
payrollos/backend/src/routes/auth.js:14 · conf 0.80
[MINED113] Express POST /login has no auth: Express route POST /login declared without an auth middleware in its handler chain. Destructive methods (POST/PUT/DELETE/PATCH) on unauthenticated routes a…
high MINED113 Express POST/PUT/DELETE/PATCH route without auth CWE-306CWE-862
payrollos/backend/src/routes/auth.js:94 · conf 0.80
[MINED113] Express POST /register has no auth: Express route POST /register declared without an auth middleware in its handler chain. Destructive methods (POST/PUT/DELETE/PATCH) on unauthenticated ro…
high MINED113 Express POST/PUT/DELETE/PATCH route without auth CWE-306CWE-862
payrollos/backend/src/routes/auth.js:155 · conf 0.80
[MINED113] Express POST /verify-otp has no auth: Express route POST /verify-otp declared without an auth middleware in its handler chain. Destructive methods (POST/PUT/DELETE/PATCH) on unauthenticate…
high MINED113 Express POST/PUT/DELETE/PATCH route without auth CWE-306CWE-862
payrollos/backend/src/routes/auth.js:172 · conf 0.80
[MINED113] Express POST /forgot-password has no auth: Express route POST /forgot-password declared without an auth middleware in its handler chain. Destructive methods (POST/PUT/DELETE/PATCH) on unau…
high MINED113 Express POST/PUT/DELETE/PATCH route without auth CWE-306CWE-862
payrollos/backend/src/routes/auth.js:206 · conf 0.80
[MINED113] Express POST /2fa/setup has no auth: Express route POST /2fa/setup declared without an auth middleware in its handler chain. Destructive methods (POST/PUT/DELETE/PATCH) on unauthenticated …
high MINED113 Express POST/PUT/DELETE/PATCH route without auth CWE-306CWE-862
payrollos/backend/src/routes/auth.js:240 · conf 0.80
[MINED113] Express POST /2fa/verify has no auth: Express route POST /2fa/verify declared without an auth middleware in its handler chain. Destructive methods (POST/PUT/DELETE/PATCH) on unauthenticate…
high MINED113 Express POST/PUT/DELETE/PATCH route without auth CWE-306CWE-862
payrollos/backend/src/routes/auth.js:309 · conf 0.80
[MINED113] Express POST /refresh has no auth: Express route POST /refresh declared without an auth middleware in its handler chain. Destructive methods (POST/PUT/DELETE/PATCH) on unauthenticated rout…
high MINED113 Express POST/PUT/DELETE/PATCH route without auth CWE-306CWE-862
payrollos/backend/src/routes/auth.js:326 · conf 0.80
[MINED113] Express POST /logout has no auth: Express route POST /logout declared without an auth middleware in its handler chain. Destructive methods (POST/PUT/DELETE/PATCH) on unauthenticated routes…
high MINED113 Express POST/PUT/DELETE/PATCH route without auth CWE-306CWE-862
payrollos/backend/src/routes/currency.js:44 · conf 0.80
[MINED113] Express PUT /:code has no auth: Express route PUT /:code declared without an auth middleware in its handler chain. Destructive methods (POST/PUT/DELETE/PATCH) on unauthenticated routes are…
high MINED113 Express POST/PUT/DELETE/PATCH route without auth CWE-306CWE-862
payrollos/backend/src/routes/employees.js:57 · conf 0.80
[MINED113] Express POST / has no auth: Express route POST / declared without an auth middleware in its handler chain. Destructive methods (POST/PUT/DELETE/PATCH) on unauthenticated routes are OWASP A…
high MINED113 Express POST/PUT/DELETE/PATCH route without auth CWE-306CWE-862
payrollos/backend/src/routes/employees.js:206 · conf 0.80
[MINED113] Express PUT /:id has no auth: Express route PUT /:id declared without an auth middleware in its handler chain. Destructive methods (POST/PUT/DELETE/PATCH) on unauthenticated routes are OWA…
high MINED113 Express POST/PUT/DELETE/PATCH route without auth CWE-306CWE-862
payrollos/backend/src/routes/employees.js:225 · conf 0.80
[MINED113] Express DELETE /:id has no auth: Express route DELETE /:id declared without an auth middleware in its handler chain. Destructive methods (POST/PUT/DELETE/PATCH) on unauthenticated routes a…
high MINED113 Express POST/PUT/DELETE/PATCH route without auth CWE-306CWE-862
payrollos/backend/src/routes/fraud.js:29 · conf 0.80
[MINED113] Express POST /:id/investigate has no auth: Express route POST /:id/investigate declared without an auth middleware in its handler chain. Destructive methods (POST/PUT/DELETE/PATCH) on unau…
high MINED113 Express POST/PUT/DELETE/PATCH route without auth CWE-306CWE-862
payrollos/backend/src/routes/fraud.js:46 · conf 0.80
[MINED113] Express PUT /:id/resolve has no auth: Express route PUT /:id/resolve declared without an auth middleware in its handler chain. Destructive methods (POST/PUT/DELETE/PATCH) on unauthenticate…
high MINED113 Express POST/PUT/DELETE/PATCH route without auth CWE-306CWE-862
payrollos/backend/src/routes/leave.js:32 · conf 0.80
[MINED113] Express POST / has no auth: Express route POST / declared without an auth middleware in its handler chain. Destructive methods (POST/PUT/DELETE/PATCH) on unauthenticated routes are OWASP A…
high MINED113 Express POST/PUT/DELETE/PATCH route without auth CWE-306CWE-862
payrollos/backend/src/routes/leave.js:78 · conf 0.80
[MINED113] Express PUT /:id/approve has no auth: Express route PUT /:id/approve declared without an auth middleware in its handler chain. Destructive methods (POST/PUT/DELETE/PATCH) on unauthenticate…
high MINED113 Express POST/PUT/DELETE/PATCH route without auth CWE-306CWE-862
payrollos/backend/src/routes/payroll.js:26 · conf 0.80
[MINED113] Express POST /runs has no auth: Express route POST /runs declared without an auth middleware in its handler chain. Destructive methods (POST/PUT/DELETE/PATCH) on unauthenticated routes are…
high MINED113 Express POST/PUT/DELETE/PATCH route without auth CWE-306CWE-862
payrollos/backend/src/routes/payroll.js:70 · conf 0.80
[MINED113] Express POST /runs/:id/calculate has no auth: Express route POST /runs/:id/calculate declared without an auth middleware in its handler chain. Destructive methods (POST/PUT/DELETE/PATCH) o…
high MINED113 Express POST/PUT/DELETE/PATCH route without auth CWE-306CWE-862
payrollos/backend/src/routes/payroll.js:211 · conf 0.80
[MINED113] Express POST /runs/:id/approve has no auth: Express route POST /runs/:id/approve declared without an auth middleware in its handler chain. Destructive methods (POST/PUT/DELETE/PATCH) on un…
high MINED113 Express POST/PUT/DELETE/PATCH route without auth CWE-306CWE-862
payrollos/backend/src/routes/payroll.js:245 · conf 0.80
[MINED113] Express POST /runs/:id/disburse has no auth: Express route POST /runs/:id/disburse declared without an auth middleware in its handler chain. Destructive methods (POST/PUT/DELETE/PATCH) on …
high MINED113 Express POST/PUT/DELETE/PATCH route without auth CWE-306CWE-862
payrollos/backend/src/routes/reports.js:104 · conf 0.80
[MINED113] Express POST /generate-ai has no auth: Express route POST /generate-ai declared without an auth middleware in its handler chain. Destructive methods (POST/PUT/DELETE/PATCH) on unauthentica…
high MINED113 Express POST/PUT/DELETE/PATCH route without auth CWE-306CWE-862
payrollos/backend/src/routes/wallet.js:45 · conf 0.80
[MINED113] Express POST /:id/withdraw has no auth: Express route POST /:id/withdraw declared without an auth middleware in its handler chain. Destructive methods (POST/PUT/DELETE/PATCH) on unauthenti…
high MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) CWE-829
payrollos/.github/workflows/ci-cd.yml:14 · conf 0.90
[MINED115] Action `actions/checkout` pinned to mutable ref `@v3`: `uses: actions/checkout@v3` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-a…
high MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) CWE-829
payrollos/.github/workflows/ci-cd.yml:17 · conf 0.90
[MINED115] Action `actions/setup-node` pinned to mutable ref `@v3`: `uses: actions/setup-node@v3` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the …
high MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) CWE-829
payrollos/.github/workflows/ci-cd.yml:37 · conf 0.90
[MINED115] Action `actions/setup-python` pinned to mutable ref `@v4`: `uses: actions/setup-python@v4` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made …
high MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) CWE-829
payrollos/.github/workflows/ci-cd.yml:53 · conf 0.90
[MINED115] Action `actions/checkout` pinned to mutable ref `@v3`: `uses: actions/checkout@v3` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-a…
high MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) CWE-829
payrollos/.github/workflows/ci-cd.yml:56 · conf 0.90
[MINED115] Action `aws-actions/configure-aws-credentials` pinned to mutable ref `@v1`: `uses: aws-actions/configure-aws-credentials@v1` resolves at workflow-run time. Tags and branches can be re-push…
high MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) CWE-829
payrollos/.github/workflows/ci-cd.yml:64 · conf 0.90
[MINED115] Action `aws-actions/amazon-ecr-login` pinned to mutable ref `@v1`: `uses: aws-actions/amazon-ecr-login@v1` resolves at workflow-run time. Tags and branches can be re-pushed by the action o…
high MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) CWE-829
payrollos/.github/workflows/ci-cd.yml:92 · conf 0.90
[MINED115] Action `actions/checkout` pinned to mutable ref `@v3`: `uses: actions/checkout@v3` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-a…
high MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) CWE-829
payrollos/.github/workflows/ci-cd.yml:95 · conf 0.90
[MINED115] Action `azure/k8s-set-context` pinned to mutable ref `@v2`: `uses: azure/k8s-set-context@v2` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that mad…
high MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) CWE-829
payrollos/.github/workflows/ci-cd.yml:113 · conf 0.90
[MINED115] Action `actions/checkout` pinned to mutable ref `@v3`: `uses: actions/checkout@v3` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that made the tj-a…
high MINED115 GitHub Action pinned to mutable ref (not 40-char SHA) CWE-829
payrollos/.github/workflows/ci-cd.yml:116 · conf 0.90
[MINED115] Action `azure/k8s-set-context` pinned to mutable ref `@v2`: `uses: azure/k8s-set-context@v2` resolves at workflow-run time. Tags and branches can be re-pushed by the action owner; that mad…
high MINED118 Dockerfile FROM not pinned by sha256 digest CWE-829
payrollos/backend/Dockerfile:1 · conf 0.90
[MINED118] Dockerfile FROM `node:18-alpine` not pinned by digest: `FROM node:18-alpine` resolves the tag at build time. The registry CAN re-push a different image for the same tag, so every build is …
high MINED118 Dockerfile FROM not pinned by sha256 digest CWE-829
payrollos/fraud-service/Dockerfile:1 · conf 0.90
[MINED118] Dockerfile FROM `python:3.10-slim` not pinned by digest: `FROM python:3.10-slim` resolves the tag at build time. The registry CAN re-push a different image for the same tag, so every build…
high MINED118 Dockerfile FROM not pinned by sha256 digest CWE-829
payrollos/frontend/Dockerfile:2 · conf 0.90
[MINED118] Dockerfile FROM `node:18-alpine` not pinned by digest: `FROM node:18-alpine` resolves the tag at build time. The registry CAN re-push a different image for the same tag, so every build is …
high MINED118 Dockerfile FROM not pinned by sha256 digest CWE-829
payrollos/frontend/Dockerfile:10 · conf 0.90
[MINED118] Dockerfile FROM `nginx:alpine` not pinned by digest: `FROM nginx:alpine` resolves the tag at build time. The registry CAN re-push a different image for the same tag, so every build is pote…
high SEC029 Server-Side Request Forgery (SSRF) — outbound HTTP from user input
payrollos/backend/src/routes/auth.js:221 · conf 1.00
[SEC029] Server-Side Request Forgery (SSRF) — outbound HTTP from user input: Outbound HTTP request to a user-controlled URL without allowlist validation. Attackers can probe internal services (169.25…
high SEC135 Auth/permission check missing on AI-generated endpoint
payrollos/backend/src/routes/attendance.js:47 · conf 1.00
[SEC135] Auth/permission check missing on AI-generated endpoint: Mutating HTTP endpoint generated by an AI agent without an auth decorator or middleware. The number-one production-incident pattern we…
high SEC135 Auth/permission check missing on AI-generated endpoint
payrollos/backend/src/routes/auth.js:14 · conf 1.00
[SEC135] Auth/permission check missing on AI-generated endpoint: Mutating HTTP endpoint generated by an AI agent without an auth decorator or middleware. The number-one production-incident pattern we…
high SEC135 Auth/permission check missing on AI-generated endpoint
payrollos/backend/src/routes/leave.js:32 · conf 1.00
[SEC135] Auth/permission check missing on AI-generated endpoint: Mutating HTTP endpoint generated by an AI agent without an auth decorator or middleware. The number-one production-incident pattern we…
medium CORE_NO_CI No CI/CD configuration found
No CI/CD configuration found
medium DKC015 Database service has no healthcheck
docker-compose.yml:4 · conf 0.88
Database service has no healthcheck
medium DKR001 Docker final stage has no non-root USER
payrollos/backend/Dockerfile:1 · conf 0.82
Docker final stage has no non-root USER
medium DKR001 Docker final stage has no non-root USER
payrollos/fraud-service/Dockerfile:1 · conf 0.82
Docker final stage has no non-root USER
medium DKR001 Docker final stage has no non-root USER
payrollos/frontend/Dockerfile:10 · conf 0.82
Docker final stage has no non-root USER
medium DKR007 Docker build context has no .dockerignore
.dockerignore · conf 0.90
Docker build context has no .dockerignore
medium SEC139 AI-generated migration/route without companion test file
payrollos/fraud-service/main.py:48 · conf 1.00
[SEC139] AI-generated migration/route without companion test file: Route or migration touching auth, admin, users, payments, or webhooks — exactly the surfaces that need tests — with no companion tes…
low AIC003 Duplicated implementation block across source files
payrollos/backend/api/index.js:4 · conf 0.86
Duplicated implementation block across source files
low COMP001 [COMP001] High cognitive complexity: Function `load_yfinance_data` has cognitive complexity 9 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand — nested branches, boolean chains, and recursion all weigh in. Breakdown: except=1, for=1, if=2, nested_bonus=3, or=2.
payrollos/fraud-service/main.py:49 · conf 0.95
[COMP001] High cognitive complexity: Function `check_payroll_run` has cognitive complexity 13 (SonarSource scale). Cognitive complexity measures how hard the function is for a human to understand — n…
low CORE_NO_LICENSE No LICENSE file
No LICENSE file
low DKC006 Compose service does not declare a runtime user
docker-compose.yml:27 · conf 0.56
Compose service does not declare a runtime user
low DKC006 Compose service does not declare a runtime user
docker-compose.yml:50 · conf 0.56
Compose service does not declare a runtime user
low DKC006 Compose service does not declare a runtime user
docker-compose.yml:64 · conf 0.56
Compose service does not declare a runtime user
low DKC010 Compose service lacks no-new-privileges hardening
docker-compose.yml:27 · conf 0.62
Compose service lacks no-new-privileges hardening
low DKC010 Compose service lacks no-new-privileges hardening
docker-compose.yml:50 · conf 0.62
Compose service lacks no-new-privileges hardening
low DKC010 Compose service lacks no-new-privileges hardening
docker-compose.yml:64 · conf 0.62
Compose service lacks no-new-privileges hardening
low DKC015 Database service has no healthcheck
docker-compose.yml:17 · conf 0.72
Database service has no healthcheck
low DKC016 App service does not wait for database health
docker-compose.yml:27 · conf 0.68
App service does not wait for database health
info MINED044 Js Console Log Prod CWE-532
· conf 0.20
[MINED044] Js Console Log Prod (and 12 more): Same pattern found in 12 additional files. Review if needed.
info MINED044 Js Console Log Prod CWE-532
api/index.js:12 · conf 1.00
[MINED044] Js Console Log Prod: console.log left in code. Should be replaced with logger or removed.
info MINED044 Js Console Log Prod CWE-532
payrollos/backend/api/index.js:12 · conf 1.00
[MINED044] Js Console Log Prod: console.log left in code. Should be replaced with logger or removed.
info MINED044 Js Console Log Prod CWE-532
payrollos/backend/src/app.js:40 · conf 1.00
[MINED044] Js Console Log Prod: console.log left in code. Should be replaced with logger or removed.
info MINED047 Emoji In Source
payrollos/backend/src/routes/currency.js:16 · conf 1.00
[MINED047] Emoji In Source: Emoji ✅ ❌ 🚀 in code/comments — common AI output unless explicitly requested.
info MINED053 Placeholder Default Username CWE-1392CWE-798
payrollos/backend/src/routes/employees.js:70 · conf 1.00
[MINED053] Placeholder Default Username: [email protected] / [email protected] / admin/admin / changeme — typical AI placeholder credentials.
info MINED089 Js Always False If CWE-561
payrollos/frontend/src/components/TopHeader.jsx:102 · conf 1.00
[MINED089] Js Always False If: if (false) — branch never taken. Dead code / disabled feature.
info SEC020 Secret Printed to Logs
payrollos/backend/src/middleware/auth.js:29 · conf 0.15
[SEC020] Secret Printed to Logs: Debug or diagnostic code appears to print a credential-bearing value. This is a frequent AI-assisted coding failure: the helper exposes the exact value needed for tro…
info SEC020 Secret Printed to Logs
payrollos/backend/src/routes/auth.js:198 · conf 0.15
[SEC020] Secret Printed to Logs: Debug or diagnostic code appears to print a credential-bearing value. This is a frequent AI-assisted coding failure: the helper exposes the exact value needed for tro…
info SEC135 Auth/permission check missing on AI-generated endpoint
· conf 0.20
[SEC135] Auth/permission check missing on AI-generated endpoint (and 2 more): Same pattern found in 2 additional files. Review if needed.

Reading from rp.scan + rp.finding + rp.rule (unified schema, R78 series). Legacy data path unchanged. Compare with /scan/5e3a4bfb-9ca7-4f09-bc7e-de3da5e404e0/.