Skip to content

Updating App security and stability to bring it up to standards - #2

Open
JordanKeo45 wants to merge 30 commits into
mainfrom
tpn-compliance
Open

JordanKeo45 wants to merge 30 commits into
mainfrom
tpn-compliance

Conversation

@JordanKeo45

Copy link
Copy Markdown
Collaborator

Brings app closer to TPN Complaince requirements and follows standard best practices for security

…l field

- Link Details: new Processing panel showing per-file review copy, HLS and
  watermark status with progress, errors and Retry.
- Delete link/project dialogs: say when all files are used by other links and
  disable cleanup; show "deletable of total" sizes and a collapsible file list;
  "Untitled link" label.
- Settings: "Renewed your license?" key field.
- Remove dead outputs_exist prompt, unused watermarkRelPath option and the
  ingest.register log filter.
Add CIDR guidance, policy previews, and apply/confirm UI.
Include regression tests and combined test runner.
Show queued/running scan feedback during desktop upload finalization
and retain server-reported passed or skipped results. Clear transfer
speed and ETA while waiting, preserve legacy-server compatibility,
and add progress regression tests.
…iene QA

- Store admin JWTs and opt-in remembered passwords using Electron safeStorage
- Migrate legacy credentials out of localStorage and sessionStorage
- Reject insecure Linux basic_text storage and use memory-only sessions
- Guard credential IPC and clear saved credentials on logout or removal
- Prevent late authentication responses from restoring logged-out sessions
- Add native restart checks for KWallet, GNOME Keyring, DPAPI and Keychain
- Document automated coverage, JSON reports and remaining deployment checks
Disable and refuse Electron webviews, remove the unused webview
preload, and send sudo passwords over stdin during remote setup.
Use a private temporary setup script that is removed on exit.
…leanup

- Truncate long link titles and show the full value on hover
- Show License Expired and Pro Legacy labels instead of stale trial status
- Consolidate duplicate license-expiry notifications
- Display the correct legacy-license panel in Settings
- Close and reset Quick Share on logout or session expiry
- Redirect unauthenticated server selections to the prefilled reconnect form
- Prevent protected views from rendering without a connected session
- Show logged-out and reconnect-required status in connection lists
- Preserve immediate switching between connected servers
- Add session-guard regression tests
Comment thread scripts/hygiene/renderer.js Fixed
Comment thread scripts/hygiene/renderer.js Fixed
Comment thread scripts/hygiene/renderer.js Fixed
Comment thread src/main/sshCertificateTrust.ts Dismissed
Comment thread scripts/hygiene/runner.test.js Fixed
- security.yml: Yarn audit across all workspaces (fails on high/critical)
  and Gitleaks secret scan on PRs and pushes; manual run scans full history
- semgrep.yml: report-only Semgrep CE (JS/TS/Node/Express), SARIF upload
- dependabot.yml: weekly npm + GitHub Actions updates, minor/patch grouped
- .gitignore: allow the new workflow files to be committed
@github-advanced-security

Copy link
Copy Markdown

You are seeing this message because GitHub Code Scanning has recently been set up for this repository, or this pull request contains the workflow file for the Code Scanning tool.

What Enabling Code Scanning Means:

  • The 'Security' tab will display more code scanning analysis results (e.g., for the default branch).
  • Depending on your configuration and choice of analysis tool, future pull requests will be annotated with code scanning analysis results.
  • You will be able to see the analysis results for the pull request's branch on this overview once the scans have completed and the checks have passed.

For more information about GitHub Code Scanning, check out the documentation.

Comment thread src/main/secureTokens.test.js Fixed
Comment thread src/main/sshCertificateTrust.ts Dismissed
- security.yml: --mode=skip-builds -> --mode=skip-build (valid Yarn 4 value)
- secureTokens.test.js: pass authTagLength to createDecipheriv
  (clears Semgrep gcm-no-tag-length)
- Refresh vulnerable transitive packages within existing ranges
- electron-builder 26.0.12 -> 26.18.0; vitest 3 -> 4
- Scoped resolutions for houston-common tooling: vitest 4, zod 4 +
  zod-validation-error 4, patched lodash/minimatch; dedupe electron
  pulled in by @types/electron
- CI audit now reads .github/audit-exceptions.json: ignores only the
  listed Electron 38 / extract-zip advisory IDs until 2027-01-31 and
  fails once expired (Electron upgrade tracked separately)
- Enable renderer sandbox; preload only requires electron
- Allowlist IPC channels in the preload bridge and stop passing the
  raw IpcRendererEvent (its sender exposed unrestricted ipcRenderer)
- Drop 'unsafe-inline' from script-src; add object-src/base-uri 'none'
- Block app-window navigation away from the bundled renderer
- Reject chains using the compromised eMudhra intermediate keys
  (GHSA-jr5w-w6x2-84p9) in the default session, the electron-updater
  session, and Node TLS, mirroring Electron 42.11.16's blocklist
- scripts/test-hardening.cjs: launches the real built app in a temp
  profile and checks sandbox/isolation, preload API, IPC allowlist,
  sender stripping, navigation and window.open guards, route rendering,
  console for blocked-IPC/CSP errors, and the blocked-key certificate
  checks (default session, updater session, Node TLS) with a local PKI
- preload.test.js: fail if any literal renderer IPC channel is not
  allowlisted
Comment thread scripts/hardening/electron.cjs Fixed
Comment thread scripts/hardening/electron.cjs Fixed
Comment thread scripts/hardening/electron.cjs Fixed
Comment thread scripts/hardening/electron.cjs Fixed
Replaces Array#includes with an explicit equality helper; CodeQL read it
as URL substring sanitization (false positive).
DELETE /api/links/:linkId/comments/:commentId (auth + license) soft-deletes a
comment and its replies, logs activity/audit, and notifies open share pages.
Check every selected file before starting transfers or transcoding.
Report all rejected files without partially uploading the batch.
Add spreadsheet and Word MIME mappings.

Requires the server batch-validation endpoint.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants