Browse documentation
DURPDEPLOY DOCUMENTATION

Historical SonarCloud review

Read the recorded source fixes and reviewed scanner dispositions from October 2026.

On this page

Scope: the 24 unresolved new-code bugs and vulnerabilities returned for developerdurp_durpdeploy, branch main, on 2026-10-06. The baseline remains previous version (2026-08-14). Gate thresholds and exclusions are unchanged.

Source fixes

Finding keys Rule / location Change
AaDx5fiD4wRks0l6WTmC, AaDx5fiD4wRks0l6WTmD, AaDx5fiD4wRks0l6WTmE javascript:S9383, static/js/app.js Mark event-launched promises with void. Passkey helpers already catch failures; HTMX reports request errors through its events. Regenerate the committed bundle with esbuild.
AaCfcEDpFlmS90VF4jrf, AaCfcEDpFlmS90VF4jre secrets:S6698 / S7539, scripts/e2e_db_test.sh Remove implicit password-bearing DSNs and SQL Server client passwords. Require supplied DSNs and SQLCMDPASSWORD. Remove matching credentials from Makefile container setup and readiness checks; bind database ports to loopback.
AaAA5rY4ETc0FGsiMUbY, AaAA5rY4ETc0FGsiMUba, AaAA5rZhETc0FGsiMUbo githubactions:S8545 / docker:S8545, release.yml / Dockerfile Run the existing go tool templ locked by go.mod/go.sum instead of an independent installation.
AaAA5rY4ETc0FGsiMUbW githubactions:S7636, release.yml Pass the registry token through a step environment variable and standard input.
AaAA5rZhETc0FGsiMUbp docker:S6505, Dockerfile Use npm ci –ignore-scripts. Existing platform-specific esbuild packages supply the native binary.
AaAA5rXkETc0FGsiMUbH kubernetes:S6870, deployment.yaml Supply default ephemeral-storage requests and limits through the existing resources values. PVC storage is separate.

The removed database values were public development defaults, not evidence of credentials used in a production deployment. Existing containers can still contain those values: stop or replace them only after preserving any needed manual-test data. Use new secret-manager credentials when recreating them. This PR does not delete, rotate, or modify existing databases.

Reviewed false-positive dispositions

The maintainer approved these 13 dispositions on 2026-10-06 after security review. Each was applied with its rationale through SonarCloud and read back as FALSE_POSITIVE. They do not accept a confirmed vulnerability.

Finding key Rule / location Source-specific rationale
AaAPNwUAeYN0teSpHiDi gosecurity:S5146, fixture_protocol.go The test IdP compares the supplied redirect URL with its configured callback before building the redirect. An unregistered redirect is rejected by TestFixtureAuthorizeRejectsInvalidRequest.
AaAPNwT0eYN0teSpHiDh go:S5542, fixture_token.go rsa.SignPKCS1v15 signs SHA-256 JWTs using RS256, the required test protocol operation. It does not encrypt attacker-controlled plaintext. The fixture generates its own 2048-bit key.
AaAPNwifeYN0teSpHiDr plsql:NullComparison, migrations/024_oidc.sql This is SQLite SQL. An empty string is not NULL; the comparison requires the remainder to be empty after removing permitted hexadecimal characters from a 64-character state_hash. Applying Oracle PL/SQL empty-string semantics would change the constraint.
AaAPNwdyeYN0teSpHiDq plsql:NullComparison, migrations/mssql/009_oidc.sql This is SQL Server SQL, which also distinguishes an empty string from NULL. The existing constraint is intentional.
AaCfcEClFlmS90VF4jrc go:S5332, oidc-browser-fixture/harness.go The oidctest-tagged browser fixture binds the application callback listener to 127.0.0.1 on an ephemeral port. The fixture IdP uses TLS. This HTTP callback does not cross a network boundary.
AaCfcEClFlmS90VF4jrd go:S5332, oidc-browser-fixture/harness.go The readiness state publishes the application URL for the same loopback-only temporary listener.
AaAA5rLkETc0FGsiMUW2 go:S2092, login_mfa_pending.go This expires an empty pending-login cookie with Secure set from h.cookieSecure. HTTPS DURPDEPLOY_URL enables it; local HTTP development is supported. Production operators must configure the documented HTTPS public URL. An unset URL does not guarantee a loopback-only listener.
AaAA5rNQETc0FGsiMUXL go:S2092, login_session.go Session issuance explicitly sets Secure from h.cookieSecure, enabled by the configured HTTPS public URL. It is not an omitted or hardcoded false flag.
AaAA5rM1ETc0FGsiMUXI go:S2092, security.go This expires an empty pending-login cookie with h.cookieSecure, not a hardcoded false flag.
AaAA5rMKETc0FGsiMUW- go:S2092, security_passkey_verification_helpers.go This clears an empty WebAuthn challenge cookie using the same conditional Secure policy as creation.
AaAA5rNYETc0FGsiMUXM go:S2092, auth.go Logout expires an empty session cookie with h.cookieSecure; the session creation policy is unchanged.
AaAA5rIXETc0FGsiMUWV go:S2077, api/admin.go The private countRows helper receives only the literal identifiers users, projects, and deployments. No request input supplies the formatted SQL identifier; the endpoint is admin-protected.
AaAA5rZZETc0FGsiMUbn docker:S6471, Dockerfile.mobile-browser This is the disposable CI browser-test image, not the published application runtime. It needs to copy the checkout and install test fixtures. The mobile job does not mount a container-engine socket. The production Dockerfile uses USER 10001:10001.

Completion evidence

The CI development-database contract checks loopback port bindings, rejects missing credentials before container replacement, and rejects missing DSNs before contacting the server. Existing Go, browser, API E2E, image build, Helm, and SonarCloud checks remain required.

The PR gate does not prove the main-branch gate has recovered. After merge, verify the latest main analysis has reliability A and security A, and that coverage, duplication, maintainability, and hotspot review still pass. Keep issue #112 open until that evidence and reviewed dispositions exist.