1
0
mirror of https://github.com/bitwarden/browser synced 2026-02-03 10:13:31 +00:00
Commit Graph

19703 Commits

Author SHA1 Message Date
Claude
293a2e131d Critical: Fix type definition mismatch for newApplications field
Make newApplications optional in OrganizationReportSummary type definition
to match the validation logic. This resolves the type safety violation where
compile-time type checking required the field but runtime validation treated
it as optional.

The field is optional because legacy encrypted data predates this field's
introduction, and making it required would break decryption of existing data.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-30 05:18:31 +00:00
Claude
e8b99d99b8 Fix validation error: make newApplications field optional in OrganizationReportSummary
The validation functions required the newApplications field to be present,
but this field is not in the type definition and old encrypted data doesn't
have it. This was causing decryption failures with the error:
"Invalid OrganizationReportSummary: missing or invalid fields: newApplications (string[])"

Changes:
- Updated isOrganizationReportSummary() to allow newApplications to be undefined
- Updated validateOrganizationReportSummary() to only validate newApplications if present
- Added comments explaining backward compatibility requirement

This provides backward compatibility with existing encrypted data while still
validating the field when it is present.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-30 04:42:15 +00:00
Vijay Oommen
55a6e25c0d [PM-27291] Preserve critical apps after run-report is selected (#17114) 2025-10-29 21:23:00 -05:00
Jared Snider
a1570fc8b1 feat(AuthRouteConstants): [Auth/PM-27370] Convert auth routes to use constants (#16980)
* PM-22663 WIP on auth route constants

* PM-22663 - Convert desktop & extension to use constants - first pass

* PM-22663 - Further clean up

* PM-22663 - catch more missed routes

* PM-22663 - add barrel files

* PM-22663 - Per PR feedback, add missing as const

* PM-22663 - Per PR feedback and TS docs, use same name for const enum like and derived type. Adjusted filenames to be singular.

* PM-22663 - Per PR feedback update desktop app routing module since auto rename didn't update it for whatever reason.
2025-10-29 19:28:21 -04:00
Shane Melton
51a557514f [PM-20379] Fix At-risk password task permission bug (#17110)
* [PM-20379] Fix at risk password task permission checks

* [PM-20379] Fix at risk password component specs

* [PM-20379] Cleanup FIXMEs

* [PM-20379] Update to OnPush

* [PM-20379] Add tests for pendingTasks$

* [PM-20379] Reduce test boilerplate / redundancy

* [PM-20379] Cleanup as any

* [PM-20379] Remove redundant "should" language
2025-10-29 14:47:55 -07:00
Daniel James Smith
9fca0b0138 [PM-26731] Fix feature flag check for "pm-25855-chromium-importer-abe" (#17102)
* Fix feature flag check for "pm-25855-chromium-importer-abe"

The old lofgic actually removed all chromium support when the flag was disabled. It should only remove those browser if the flag is disabled and when on Windows.

* Extend tests

* Update comment

* Remove duplicate test

* Add test for when device cannot be detected and throws and error

* Add descriptive comment to feature flag test case assertions

* Better test assertion

---------

Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
2025-10-29 21:56:55 +01:00
Vicki League
6b3c4f87c7 [CL-807] Improve aria a11y of nav group (#17078) 2025-10-29 16:52:28 -04:00
Jordan Aasen
b8921cb079 fix lint error (#17115) 2025-10-29 20:28:36 +00:00
Jordan Aasen
c05ea23ce4 [PM-25083][26650][26651][26652] - Autofill confirmation dialog (#16835)
* add autofill confirmation dialog

* fix key

* better handle bad uris

* add specs

* adjustments to autofill confirmation to include exact match dialog. fix gradient

* update logic. add tests
2025-10-29 12:55:23 -07:00
Thomas Avery
94f778006f Fix lint (#17113) 2025-10-29 19:49:48 +00:00
John Harrington
e333c0a8bc Preserve export type across export source selections (#16922) 2025-10-29 12:49:31 -07:00
Vijay Oommen
66052b6dd3 PM-26676 change the org should update the access intelligence report (#17053) 2025-10-29 14:06:18 -05:00
Brandon Treston
75846e8fb1 add decryption logic (#17106) 2025-10-29 15:04:37 -04:00
Oscar Hinton
d85b9986d0 [CL-901] [CL-903] Unowned - Prefer signal & change detection (#16949) 2025-10-29 13:42:19 -05:00
renovate[bot]
4bdfefd001 [deps] UI Foundation: Update chromatic to v13.3.1 (#16630)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Bryan Cunningham <bcunningham@bitwarden.com>
2025-10-29 13:51:25 -04:00
renovate[bot]
6896c77332 [deps] UI Foundation: Update axe-playwright to v2.2.2 (#16629)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Bryan Cunningham <bcunningham@bitwarden.com>
2025-10-29 13:21:07 -04:00
Bernd Schoolmann
ee420258e6 Remove deprecated encstring usage from dirt code (#17100) 2025-10-29 11:46:50 -05:00
Vijay Oommen
687f3d144c [PM-17577] Inactive two-step login report - check hostname and domain name (#16823) 2025-10-29 10:58:38 -05:00
cyprain-okeke
d567530e15 resolve the button name (#17094) 2025-10-29 16:02:59 +01:00
Bernd Schoolmann
b1738cc6b2 [PM-26340] Add linux biometrics v2 (#16660)
* Extract windows biometrics v2 changes

Co-authored-by: Bernd Schoolmann <mail@quexten.com>

* Address some code review feedback

* cargo fmt

* rely on zeroizing allocator

* Handle TDE edge cases

* Update windows default

* Make windows rust code async and fix restoring focus freezes

* fix formatting

* cleanup native logging

* Add unit test coverage

* Add missing logic to edge case for PIN disable.

* Address code review feedback

* fix test

* code review changes

* fix clippy warning

* Swap to unimplemented on each method

* Implement encrypted memory store

* Make dpapi secure key container pub(super)

* Add linux biometrics v2

* Run cargo fmt

* Fix cargo lock

* Undo AC changes

* Undo change

* Fix build

* Cargo fmt

---------

Co-authored-by: Thomas Avery <tavery@bitwarden.com>
Co-authored-by: Thomas Avery <43214426+Thomas-Avery@users.noreply.github.com>
2025-10-29 15:51:50 +01:00
Daniel Riera
d31b921169 PM-27364 delete bar.scss and drop bar.html internals (#17023)
* PM-27364 delete bar.scss and drop bar.html internals

* no longer clear document
2025-10-29 14:40:27 +00:00
SmithThe4th
4d00d0caa5 Fixed edit menu on admin console and removed favorite item on the admin console (#16982) 2025-10-29 10:31:21 -04:00
Bryan Cunningham
5b815c4ae4 [CL-879] use tooltip on icon button (#16576)
* Add tooltip to icon button to display label

* remove legacy cdr variable

* create overlay on focus or hover

* attach describdedby ids

* fix type errors

* remove aria-describedby when not necessary

* fix failing tests

* implement Claude feedback

* fixing broken specs

* remove host attr binding

* Simplify directive aria logic

* Move id to statis number

* do not render empty tooltip

* pass id to tooltip component

* remove pointer-events none to allow tooltip on normal buttons

* exclude some tooltip stories

* change describedby input name

* add story with tooltip on regular button

* enhanced tooltip docs

* set model directly

* change model to input
2025-10-29 09:49:16 -04:00
Alex Morask
460d66d624 Remove FF: pm-17772-admin-initiated-sponsorships (#16873)
* Remove FF

* Fix test
2025-10-29 07:41:35 -05:00
Maciej Zieniuk
ff30df3dd6 [PM-19300] Session timeout policy (#16583)
* Session timeout policy

* default "custom" is 8 hours, validation fixes

* ownership update

* default max allowed timeout is not selected

* adjusting defaults, fixing backwards compatibility, skip type confirmation dialog when switching between the never and on system lock

* unit test coverage

* wording update, custom hours, minutes jumping on errors

* wording update

* wrong session timeout action dropdown label

* show dialog as valid when opened first time, use @for loop, use controls instead of get

* dialog static opener

* easier to understand type value listener

* unit tests

* explicit maximum allowed timeout required error

* eslint revert
2025-10-28 20:28:34 +01:00
Mick Letofsky
69d5c533ef Implement Claude respond reusable workflow (#17079) 2025-10-28 20:19:41 +01:00
Dave
af1809222f fix(input-password-component) [PM-24266]: Update modal title. (#16932) 2025-10-28 15:14:48 -04:00
Daniel Riera
fe26826369 PM-27366 drop scss and convert to vanilla css (#17046) 2025-10-28 18:47:49 +00:00
renovate[bot]
185c912c62 [deps]: Update peter-evans/repository-dispatch action to v4 (#16848)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-28 14:46:17 -04:00
Mick Letofsky
11d3f5247c Refactor canClone method to use CipherAuthorizationService (#16849) 2025-10-28 19:00:56 +01:00
Brandon Treston
c1a988c2ab fix DI (#17076) 2025-10-28 12:25:56 -04:00
John Harrington
8d54ad7883 PM-26201 [Defect] [Safari] Cannot unzip vault export (#16909)
• ensure extension method can accept both `blob` type and `arrayBuffer` type 
• replace usage of Swift's `url.absoluteString` with `url.path`
• explicitly discard promise returned by `downloadSafari()`
• confine `data` type to `string` since code all code paths assign a `string` value
2025-10-28 09:02:38 -07:00
Alex
2058c772ac [PM-26352] drawers for activity cards (#16895)
* new drawer functions for crit apps

* logic for triggering the drawer functions in components

* cleanup unused logic and rename "navigation" to "action"
- ... since the click is now triggering the drawer instead of navigating to another tab/page

* null check for reportData in drawer methods

* use criticalReportResults$ to avoid duplicating logic

* use criticalReportResults$ to avoid dupe logic

* remove unused code
2025-10-28 08:44:42 -07:00
Stephon Brown
bf66b5ac19 -[PM-27123] Update Signals and Update Estimated Tax and Credit Logic (#17055)
* billing(fix): update signals and update estimated tax and credit logic

* fix(billing): update with claude feedback and expose total observable
2025-10-28 15:25:07 +00:00
Miles Blackwood
714daa5779 Removes deprecated keypress event. (#17058) 2025-10-28 11:09:29 -04:00
Alex
6505ce05db [PM-27162] Add runtime type guards for decrypted JSON data (#16996)
* Add runtime type guards for decrypted JSON data

- Create risk-insights-type-guards.ts with validation functions
- Replace unsafe type assertions with runtime validation in encryption service
- Validate ApplicationHealthReportDetail, OrganizationReportSummary, and OrganizationReportApplication
- Add detailed error messages for validation failures
- Remove TODO comments for type guard implementation

Improves security by preventing malformed data from bypassing type safety and ensures data integrity for decrypted report structures.

* test file fix

* date validation

* add runtime type guards and validation failure tests

Issue 1: Missing Test Coverage for Type Guard Validation Failures
- Create comprehensive test suite with 17 tests covering all validation scenarios
- Test invalid structures, missing fields, wrong types, and edge cases
- Verify proper error messages and validation logic for all data types

Issue 2: Silent Failure on Validation Errors (Security Concern)
- Re-throw validation errors instead of silently returning empty/default data
- Add descriptive error messages indicating potential data corruption or tampering
- Ensure all validation failures are surfaced as security issues, not swallowed

Additional Fix: Date Validation Vulnerability
- Validate date strings before creating Date objects to prevent Invalid Date (NaN)
- Throw explicit errors for unparseable date strings
- Update error handling to catch and properly surface date validation failures

* add empty string validation and sanitize error messages

- Validate array elements are non-empty strings (atRiskCipherIds, cipherIds, newApplications)
- Sanitize validation error messages to prevent information disclosure
- Log detailed errors for debugging, re-throw generic messages
- Add tests for empty string validation and error message sanitization

* add comprehensive validation for scalar strings and numeric ranges

- Validate all scalar string fields are non-empty (applicationName, userName, email, cipherId, userGuid)
- Add numeric range validation (finite, non-negative) for all count fields
- Export type guard functions for testability and reusability
- Add 19 new tests covering edge cases (empty strings, NaN, Infinity, negative numbers)

* prevent prototype pollution and unexpected property injection in type guards

- Validate object prototype is Object.prototype (prevents __proto__ attacks)
- Check for dangerous own properties (constructor, prototype)
- Strict property enumeration - reject objects with unexpected properties
- Add comprehensive security tests (prototype pollution, unexpected props)
- Protects against data tampering and information leakage

* security: always sanitize error messages to prevent information disclosure

- Remove fragile pattern matching in error handlers
- Always throw generic error messages by default
- Log detailed errors for debugging, never expose to callers
- Future-proof against validation error message changes
- Prevents disclosure of internal data structure details

Applies to all decryption/validation methods in encryption service

* security: comprehensive hardening of type validation system

CRITICAL FIXES:
- Add __proto__ to prototype pollution checks (loop-based)
- Remove conditional error sanitization (always sanitize)

SECURITY ENHANCEMENTS:
- Add integer overflow protection (Number.isSafeInteger)
- Add DoS prevention (array/string length limits: 50K/1K)
- Strengthen all 4 type guards with 10-layer validation

LIMITS:
- Max string length: 1,000 characters
- Max array length: 50,000 elements
- Max safe integer: 2^53 - 1

DOCUMENTATION:
- Update code-review-methodology.md with patterns
- Update .cursorrules with security best practices
- Create comprehensive security audit document

All 57 tests passing. No linting errors.
Defense-in-depth complete - production ready.

* fix: consolidate security constants and add upper bound validation

CRITICAL FIXES:
- Consolidate MAX_STRING_LENGTH and MAX_ARRAY_LENGTH to file level (DRY)
- Add MAX_COUNT constant (10M) for upper bound validation
- Apply upper bound checks to all 12 count fields

BENEFITS:
- Single source of truth for security limits
- Prevents business logic issues from extreme values
- Easier maintenance and updates
2025-10-28 08:03:11 -07:00
Stephon Brown
6f34b6098a [PM-27252] Upgrade Dialog Should not Show in Self Host (#17051)
* fix(billing): update and refactor observable logic

* tests(billing): add additional expects for dialog

* fix(billing): update for claude feedback

* tests(billing): update test conditions and comments
2025-10-28 14:51:30 +00:00
Brandon Treston
8162c06700 [PM-26372] Add auto confirm service (#17001)
* add state definition for auto confirm

* typo

* refactor organziation user service

* WIP create auto confirm service

* add POST method, finish implementation

* add missing userId param, jsdoc

* fix DI

* refactor organziation user service

* WIP create auto confirm service

* add POST method, finish implementation

* add missing userId param, jsdoc

* clean up, more DI fixes

* remove @Injectable from service, fix tests

* remove from libs/common, fix dir structure, add tests
2025-10-28 09:47:54 -04:00
Jonathan Prusik
af061282c6 do not multiply delay of fill script action execution 🕴️ (#17049)
Co-authored-by: Miles Blackwood <milesblackwoodmusic@gmail.com>
2025-10-28 09:36:33 -04:00
Daniel James Smith
8eef78960d [PM-27358] Remove unused getInstalledBrowsers method (#17019)
* Remove unused getInstalledBrowsers metthod

* Run cargo fmt

---------

Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
2025-10-28 11:13:58 +01:00
renovate[bot]
2b2b1f4a27 [deps] Platform: Update @types/node to v22.18.11 (#15698)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2025-10-27 17:29:45 -04:00
Daniel James Smith
47975fda37 Address issues with eslint rules regarding signals and OnPush change detection (#17057)
Co-authored-by: Daniel James Smith <djsmith85@users.noreply.github.com>
2025-10-27 19:24:36 +00:00
Alex
32a40a91f5 [PM-26929] filter at risk passwords count to only critical apps (#16879)
* filter at risk passwords count to only critical apps

* PM-26929 assign tasks to those apps that are marked as critical

---------

Co-authored-by: voommen-livefront <voommen@livefront.com>
2025-10-27 11:38:49 -07:00
Mauritz Sjödin
2ff9c23dc4 fix: prevent action buttons from overflowing for long passwords (#17027)
Co-authored-by: Bryan Cunningham <bcunningham@bitwarden.com>
2025-10-27 12:34:22 -04:00
Oscar Hinton
42377a1533 [PM-27341] Chrome importer refactors (#16720)
Various refactors to the chrome importer
2025-10-27 17:24:50 +01:00
Thomas Avery
bd89c0ce6d [PM-23628] Require userId for fetching provider keys (#16993)
* remove getProviderKey and expose providerKeys$

* update consumers
2025-10-27 11:04:17 -05:00
Kyle Denney
b335987213 [PM-27267] fix disappearing border from upgrade plan card (#17007) 2025-10-27 10:44:56 -05:00
Mick Letofsky
d5f2c9d5ec Implement reusable Claude code review workflow (#16979) 2025-10-27 16:25:40 +01:00
tangowithfoxtrot
93227324bf [SM-1465] - Add Terraform provider to integrations page (#16876)
* fix: add Datadog org integration service to SM integrations module

* misc: add Terraform provider integration card

* misc: update Ansible integration link
2025-10-27 10:22:13 -05:00
Bryan Cunningham
f452f39f3c [CL-847] Card consolidation (#16952)
* created shared card directive

* WIP

* use base card in anon layout

* use bit-card for pricing card component

* add base card to integration cards

* add base card to reports cards

* add base card to integration card

* use card content on report card

* use base card directive on base component

* update dirt card to use bit-card

* run prettier. fix whitespace

* add missing imports to report list stories

* add base card story and docs
2025-10-27 11:14:42 -04:00