- Updated UsersPage tests to check for specific URL formats instead of regex patterns. - Increased timeout for Go coverage report generation to handle larger repositories. - Cleaned up generated artifacts before running CodeQL analysis to reduce false positives. - Removed outdated QA testing report for authentication fixes on the certificates page. - Added final report confirming successful resolution of authentication issues with certificate endpoints. - Deleted previous test output files to maintain a clean test results directory.
6.3 KiB
6.3 KiB
QA/Security Patch-Coverage Remediation Report
Date (UTC): 2026-01-02 Agent: QA_Security Scope: Verification-only for the patch-coverage remediation task (no code changes performed as part of this audit)
Branch: feature/beta-release
Commit: 8f15fdd97f0e3c80afdf25436b00195d46fc92d0
Overall Status: ❌ FAIL
Reason for FAIL (minimal):
- CodeQL Go SARIF contains CRITICAL/HIGH findings.
- CodeQL JS SARIF contains HIGH findings, including at least one from a generated artifact present during the scan (a coverage report output).
Mandatory Task Results (rerun)
| Task | Result | Evidence (fresh rerun) |
|---|---|---|
shell: Test: Backend with Coverage |
✅ PASS | Backend total coverage: 87.5% (go tool cover -func backend/coverage.txt). |
shell: Lint: Pre-commit (All Files) |
✅ PASS | test-results/precommit-full.log ends with: [SUCCESS] All pre-commit hooks passed. |
shell: Security: CodeQL Go Scan (CI-Aligned) [~60s] |
❌ FAIL | Output SARIF: codeql-results-go.sarif (contains CRITICAL/HIGH). |
shell: Security: CodeQL JS Scan (CI-Aligned) [~90s] |
❌ FAIL | Output SARIF: codeql-results-js.sarif (contains HIGH). |
shell: Security: Trivy Scan |
✅ PASS | Skill summary: [SUCCESS] Trivy scan completed - no issues found. |
CodeQL HIGH/CRITICAL Findings — Source Classification
Classification method:
- Use SARIF locations +
git diff -U0 main...HEADhunk ranges. - Categories:
- A) Generated artifacts present during scan (coverage reports / built assets / SARIF outputs; may be tracked or untracked)
- B) Pre-existing vs main (unchanged file, or finding outside patch hunks)
- C) Introduced by this PR (finding location intersects a patch hunk)
CodeQL JS (HIGH)
- A) Generated artifacts present during scan
js/xss-through-dom:frontend/coverage/lcov-report/sorter.js:116- Note:
frontend/coverage/appears to be a generated output and is currently untracked in this workspace, but it was still included in the local CodeQL scan. - C) Introduced by this PR (within patch hunks)
js/regex/missing-regexp-anchor:frontend/src/pages/__tests__/UsersPage.test.tsx:390,:447
- B) Pre-existing vs main (unchanged or outside patch hunks)
js/regex/missing-regexp-anchor:frontend/src/pages/__tests__/ProxyHosts-progress.test.tsx:138js/incomplete-hostname-regexpandjs/regex/missing-regexp-anchor:frontend/src/pages/__tests__/ProxyHosts-extra.test.tsx:252(file changed in PR, but finding is outside patch hunks)
CodeQL Go (CRITICAL/HIGH)
- C) Introduced by this PR (within patch hunks)
go/request-forgery:backend/internal/utils/url_testing.go:276go/log-injection: includes locations within patch hunks (example:backend/internal/api/handlers/docker_handler.go:59,:74)
- B) Pre-existing vs main (unchanged or outside patch hunks)
go/request-forgery:backend/internal/services/notification_service.go:374(file changed in PR, but location is outside patch hunks)go/email-injection:backend/internal/services/mail_service.go:222,:340,:393(file changed in PR, but locations are outside patch hunks)go/log-injection: many additional locations are outside patch hunks (e.g.,backend/internal/api/handlers/backup_handler.go:77)
Coverage Verification
Backend Overall Coverage (project total)
- Total: 87.5% (meets threshold ≥85%)
- Profile:
backend/coverage.txt
Patch-Coverage Risk (10 flagged backend files)
This repo’s patch-coverage work is scoped to the 10 files listed in docs/plans/current_spec.md. The line ranges below are the remaining uncovered, patch-adjacent spans previously extracted from local coverage inspection.
Note: These ranges are kept as-is per request (verification/report only). They should be re-validated against Codecov patch view if the PR is still failing patch coverage.
Priority Order (what to fix first)
- P0 — External URL / SSRF surface
backend/internal/security/url_validator.gobackend/internal/network/safeclient.gobackend/internal/utils/url_testing.go
- P1 — Security-relevant outbound notifications + request paths
backend/internal/services/notification_service.gobackend/internal/api/routes/routes.gobackend/internal/api/handlers/settings_handler.go
- P2 — Cryptography + proxy/server config generation (broad blast radius)
backend/internal/crypto/encryption.gobackend/internal/caddy/config.gobackend/internal/caddy/manager.go
- P3 — Remaining core services
backend/internal/services/dns_provider_service.go
Remaining uncovered patch-adjacent spans (by file)
backend/internal/caddy/config.go: 171-194, 249-251, 253-256, 262-264, 1458-1459backend/internal/services/dns_provider_service.go: 133-133, 152-154, 157-159, 175-177, 192-194, 212-214, 216-218, 233-235, 238-240, 248-250 (and additional spans)backend/internal/caddy/manager.go: 77-79, 100-102, 110-112, 116-118backend/internal/utils/url_testing.go: 24-26, 34-36, 80-80, 157-161, 178-180, 193-195, 197-199, 242-244, 256-258backend/internal/network/safeclient.go: 62-64, 216-218, 224-225, 236-238, 246-248, 282-283, 290-290backend/internal/api/routes/routes.go: 309-311, 426-426backend/internal/services/notification_service.go: 219-219, 221-221, 232-232, 235-236, 296-296, 310-310, 313-313, 315-315, 322-322, 344-344 (and additional spans)backend/internal/crypto/encryption.go: 40-42, 45-47, 51-53, 71-73, 76-78backend/internal/api/handlers/settings_handler.go: 243-246, 317-323backend/internal/security/url_validator.go: 42-43, 127-129, 160-162, 189-191, 263-263
Blockers to Fix Next (smallest set)
- Exclude or clean generated artifacts before CodeQL runs (at minimum
frontend/coverage/lcov-report/*if present). - Resolve CodeQL JS HIGH in tests introduced by this PR (
UsersPage.test.tsxanchored-regex findings). - Resolve CodeQL Go request-forgery introduced by this PR (
backend/internal/utils/url_testing.go:276). - Decide how to handle pre-existing HIGH/CRITICAL (findings outside patch hunks): either remediate, or establish a baseline so patch-coverage-only work is not blocked by unrelated legacy findings.