Skip to content

[PM-28045] - Validate Organization Key Population#19954

Open
jrmccannon wants to merge 6 commits intomainfrom
jmccannon/ac/pm-28405-validate-keys
Open

[PM-28045] - Validate Organization Key Population#19954
jrmccannon wants to merge 6 commits intomainfrom
jmccannon/ac/pm-28405-validate-keys

Conversation

@jrmccannon
Copy link
Copy Markdown
Contributor

@jrmccannon jrmccannon commented Apr 2, 2026

🎟️ Tracking

PM-28045

📔 Objective

Organizations have been found in production without public/private keypairs. This PR addresses the client side by making it structurally impossible to send an org creation request without keys. Previously, the request models were plain DTOs where keys were set via property assignment after construction, so nothing stopped a caller from skipping them. Now all four creation request models require keys in their constructors and validate them at runtime.

Related PR

Server

@jrmccannon jrmccannon changed the title [PM-28405] - Validate Organization Key Population [PM-28045] - Validate Organization Key Population Apr 2, 2026
@codecov
Copy link
Copy Markdown

codecov bot commented Apr 2, 2026

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 46.59%. Comparing base (9c6eedd) to head (6d00757).
⚠️ Report is 39 commits behind head on main.
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #19954      +/-   ##
==========================================
+ Coverage   46.56%   46.59%   +0.03%     
==========================================
  Files        3878     3879       +1     
  Lines      115976   116075      +99     
  Branches    17625    17660      +35     
==========================================
+ Hits        54006    54088      +82     
- Misses      59519    59531      +12     
- Partials     2451     2456       +5     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Apr 2, 2026

Logo
Checkmarx One – Scan Summary & Details3231b3b2-75d8-4860-b2c1-6c6f99062b8c


New Issues (31) Checkmarx found the following issues in this Pull Request
# Severity Issue Source File / Package Checkmarx Insight
1 HIGH Absolute_Path_Traversal /apps/cli/src/oss-serve-configurator.ts: 360
detailsMethod Lambda at line 360 of /apps/cli/src/oss-serve-configurator.ts gets dynamic data from the query element. This element’s value then flows ...
Attack Vector
2 HIGH Absolute_Path_Traversal /apps/cli/src/oss-serve-configurator.ts: 328
detailsMethod Lambda at line 328 of /apps/cli/src/oss-serve-configurator.ts gets dynamic data from the query element. This element’s value then flows ...
Attack Vector
3 HIGH Absolute_Path_Traversal /apps/cli/src/oss-serve-configurator.ts: 360
detailsMethod Lambda at line 360 of /apps/cli/src/oss-serve-configurator.ts gets dynamic data from the query element. This element’s value then flows ...
Attack Vector
4 HIGH Absolute_Path_Traversal /apps/cli/src/oss-serve-configurator.ts: 328
detailsMethod Lambda at line 328 of /apps/cli/src/oss-serve-configurator.ts gets dynamic data from the query element. This element’s value then flows ...
Attack Vector
5 HIGH Client_DOM_XSS /apps/web/src/connectors/redirect.ts: 6
detailsThe method Lambda embeds untrusted data in generated output with href, at line 16 of /apps/web/src/connectors/redirect.ts. This untrusted data is...
Attack Vector
6 HIGH Relative_Path_Traversal /apps/cli/src/oss-serve-configurator.ts: 397
detailsMethod Lambda at line 397 of /apps/cli/src/oss-serve-configurator.ts gets dynamic data from the query element. This element’s value then flows ...
Attack Vector
7 HIGH Relative_Path_Traversal /apps/cli/src/oss-serve-configurator.ts: 397
detailsMethod Lambda at line 397 of /apps/cli/src/oss-serve-configurator.ts gets dynamic data from the query element. This element’s value then flows ...
Attack Vector
8 HIGH SSRF /libs/common/src/services/api.service.ts: 1325
detailsThe application sends a request to a remote server, for some resource, using createRequest in /libs/common/src/services/api.service.ts:1270. How...
Attack Vector
9 HIGH SSRF /libs/common/src/services/api.service.ts: 1324
detailsThe application sends a request to a remote server, for some resource, using createRequest in /libs/common/src/services/api.service.ts:1241. How...
Attack Vector
10 HIGH SSRF /libs/common/src/services/api.service.ts: 1325
detailsThe application sends a request to a remote server, for some resource, using createRequest in /libs/common/src/services/api.service.ts:1241. How...
Attack Vector
11 HIGH SSRF /libs/common/src/services/api.service.ts: 1327
detailsThe application sends a request to a remote server, for some resource, using createRequest in /libs/common/src/services/api.service.ts:1270. How...
Attack Vector
12 HIGH SSRF /libs/common/src/services/api.service.ts: 1335
detailsThe application sends a request to a remote server, for some resource, using createRequest in /libs/common/src/services/api.service.ts:1270. How...
Attack Vector
13 HIGH SSRF /libs/common/src/services/api.service.ts: 1328
detailsThe application sends a request to a remote server, for some resource, using createRequest in /libs/common/src/services/api.service.ts:1270. How...
Attack Vector
14 HIGH SSRF /libs/common/src/services/api.service.ts: 1327
detailsThe application sends a request to a remote server, for some resource, using createRequest in /libs/common/src/services/api.service.ts:1241. How...
Attack Vector
15 HIGH SSRF /libs/common/src/services/api.service.ts: 1335
detailsThe application sends a request to a remote server, for some resource, using createRequest in /libs/common/src/services/api.service.ts:1241. How...
Attack Vector
16 HIGH SSRF /libs/common/src/services/api.service.ts: 1328
detailsThe application sends a request to a remote server, for some resource, using createRequest in /libs/common/src/services/api.service.ts:1241. How...
Attack Vector
17 MEDIUM Client_DOM_Open_Redirect /apps/web/src/connectors/redirect.ts: 6
detailsThe potentially tainted value provided by href in /apps/web/src/connectors/redirect.ts at line 6 is used as a destination URL by href in /apps/web...
Attack Vector
18 MEDIUM HttpOnly_Cookie_Flag_Not_Set /apps/desktop/src/platform/services/server-communication-config/default-server-communication-config.service.ts: 71
detailsThe web application's getCookies method creates a cookie cookies, at line 71 of /apps/desktop/src/platform/services/server-communication-config/d...
Attack Vector
19 MEDIUM HttpOnly_Cookie_Flag_Not_Set /apps/web/src/connectors/sso.ts: 37
detailsThe web application's initiateBrowserSso method creates a cookie cookie, at line 37 of /apps/web/src/connectors/sso.ts, and returns it in the resp...
Attack Vector
20 MEDIUM Insecure_Storage_of_Sensitive_Data /apps/cli/src/commands/get.command.ts: 403
detailsThe application takes sensitive, personal data cipher, found at line 403 of /apps/cli/src/commands/get.command.ts, and stores it in an unprotecte...
Attack Vector
21 MEDIUM Insecure_Storage_of_Sensitive_Data /apps/cli/src/commands/get.command.ts: 402
detailsThe application takes sensitive, personal data cipherService, found at line 402 of /apps/cli/src/commands/get.command.ts, and stores it in an unp...
Attack Vector
22 MEDIUM Insecure_Storage_of_Sensitive_Data /apps/cli/src/tools/export.command.ts: 76
detailsThe application takes sensitive, personal data password, found at line 76 of /apps/cli/src/tools/export.command.ts, and stores it in an unprotect...
Attack Vector
23 MEDIUM Insecure_Storage_of_Sensitive_Data /apps/cli/src/commands/get.command.ts: 387
detailsThe application takes sensitive, personal data cipher, found at line 387 of /apps/cli/src/commands/get.command.ts, and stores it in an unprotecte...
Attack Vector
24 MEDIUM Insecure_Storage_of_Sensitive_Data /apps/cli/src/tools/export.command.ts: 81
detailsThe application takes sensitive, personal data password, found at line 81 of /apps/cli/src/tools/export.command.ts, and stores it in an unprotect...
Attack Vector
25 MEDIUM Missing_HSTS_Header /apps/cli/src/auth/commands/login.command.ts: 571
detailsThe web-application does not define an HSTS header, leaving it vulnerable to attack.
Attack Vector
26 MEDIUM SSL_Verification_Bypass /scripts/reverse-proxy-emulator/index.ts: 219
details/scripts/reverse-proxy-emulator/index.ts relies HTTPS requests, in . The rejectUnauthorized parameter, at line 219, effectively disables verifi...
Attack Vector
27 MEDIUM SSL_Verification_Bypass /scripts/reverse-proxy-emulator/index.ts: 301
details/scripts/reverse-proxy-emulator/index.ts relies HTTPS requests, in Lambda. The rejectUnauthorized parameter, at line 301, effectively disables ...
Attack Vector
28 LOW Angular_Usage_of_Unsafe_DOM_Sanitizer /libs/components/src/svg/svg.component.ts: 29
detailsUsage of an unsafe class bypassSecurityTrustHtml, which overrides output sanitization, was found at /libs/components/src/svg/svg.component.ts in ...
Attack Vector
29 LOW Angular_Usage_of_Unsafe_DOM_Sanitizer /apps/desktop/src/app/components/avatar.component.ts: 96
detailsUsage of an unsafe class bypassSecurityTrustResourceUrl, which overrides output sanitization, was found at /apps/desktop/src/app/components/avatar...
Attack Vector
30 LOW Client_Use_Of_Iframe_Without_Sandbox /apps/browser/src/autofill/overlay/inline-menu/pages/menu-container/autofill-inline-menu-container.ts: 107
detailsThe application employs an HTML iframe at whose contents are not properly sandboxed
Attack Vector
31 LOW Missing_CSP_Header /apps/cli/src/auth/commands/login.command.ts: 571
detailsA Content Security Policy is not explicitly defined within the web-application.
Attack Vector

@jrmccannon jrmccannon marked this pull request as ready for review April 6, 2026 20:59
@jrmccannon jrmccannon requested review from a team as code owners April 6, 2026 21:00
Copy link
Copy Markdown
Contributor

@JimmyVo16 JimmyVo16 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just one minor change, but overall approved.

Copy link
Copy Markdown
Contributor

@amorask-bitwarden amorask-bitwarden left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Billing changes look good.

@jrmccannon jrmccannon requested a review from JimmyVo16 April 7, 2026 18:02
@sonarqubecloud
Copy link
Copy Markdown

sonarqubecloud bot commented Apr 7, 2026

@jrmccannon jrmccannon added the needs-qa Marks a PR as requiring QA approval label Apr 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs-qa Marks a PR as requiring QA approval

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants