This release includes 4 security fixes for security teams reviewing exposed deployments.
Topics
Affected surfaces
ReleasePort's take
Moderate signalVersionβ―3.2.0.8 of Teampass resolves critical security vulnerabilities including massβassignment privilege escalation, OAuth2 authentication bypass, SQL injection in userβlogs, and authenticated path traversal/file write during file upload.
Why it matters: All four highβseverity fixes (GHSA scores 95) address exploitable attack surfaces; operators must upgrade immediately to prevent privilege escalation, unauthorized access, data leakage, and arbitrary file writes.
Summary
AI summaryBroad release touches π Security fixes, Important, π οΈ Improvements, and π Bug fixes.
Changes in this release
| Type | Severity | Summary | CVE |
|---|---|---|---|
| Security | Critical |
Fixes mass-assignment privilege escalation in user management (GHSA-x8jf-9g87-j232, GHSA-8mvg-rv84-jwgg). Fixes mass-assignment privilege escalation in user management (GHSA-x8jf-9g87-j232, GHSA-8mvg-rv84-jwgg). Source: llm_adapter@2026-07-16 Confidence: high |
β |
| Security | Critical |
Fixes OAuth2 authentication bypass (GHSA-2mvr-v9w8-34c7). Fixes OAuth2 authentication bypass (GHSA-2mvr-v9w8-34c7). Source: llm_adapter@2026-07-16 Confidence: high |
β |
| Security | Critical |
Fixes SQL injection in the user-logs datatable (GHSA-fqg6-xvv8-w228). Fixes SQL injection in the user-logs datatable (GHSA-fqg6-xvv8-w228). Source: llm_adapter@2026-07-16 Confidence: high |
β |
| Security | Critical |
Fixes authenticated path traversal / arbitrary file write in file upload (GHSA-wwxq-c766-v93w). Fixes authenticated path traversal / arbitrary file write in file upload (GHSA-wwxq-c766-v93w). Source: llm_adapter@2026-07-16 Confidence: high |
β |
| Breaking | High |
Enforces folderβlevel rights on bulk delete, move, and items_delete operations (#5275). Enforces folderβlevel rights on bulk delete, move, and items_delete operations (#5275). Source: llm_adapter@2026-07-16 Confidence: high |
β |
| Feature | Medium |
Adds API item cache synchronization on create/update/delete (PR #5274). Adds API item cache synchronization on create/update/delete (PR #5274). Source: llm_adapter@2026-07-16 Confidence: high |
β |
| Feature | Medium |
Adds search/filtering on the API users table and refactors APIβkeys display (PR #5273). Adds search/filtering on the API users table and refactors APIβkeys display (PR #5273). Source: llm_adapter@2026-07-16 Confidence: high |
β |
| Feature | Medium |
Adds newβversion notifications with release messages on the admin dashboard (PR #5270). Adds newβversion notifications with release messages on the admin dashboard (PR #5270). Source: llm_adapter@2026-07-16 Confidence: high |
β |
| Bugfix | Medium |
Fixes legacy attachment decryption after phpseclib v1βv3 migration (#5269). Fixes legacy attachment decryption after phpseclib v1βv3 migration (#5269). Source: llm_adapter@2026-07-16 Confidence: high |
β |
| Bugfix | Medium |
Fixes fatal 500 on login after idle session. Fixes fatal 500 on login after idle session. Source: llm_adapter@2026-07-16 Confidence: high |
β |
Full changelog
What's Changed
This is a security and stability release. Upgrading is strongly recommended for all installations, as it closes several authenticated vulnerabilities and access-control gaps.
π Security fixes
- Mass-assignment privilege escalation in user management (GHSA-x8jf-9g87-j232) - the save_user_change handler wrote attacker-controlled columns into the users table, allowing a user to grant themselves admin. Writes are now restricted to an allow-list of non-privileged columns, with manager/admin target-scope enforcement. Also closes the related duplicate report GHSA-8mvg-rv84-jwgg and a residual cross-user API-key overwrite in the same handler.
- OAuth2 authentication bypass (GHSA-2mvr-v9w8-34c7) - an unbound oauth2LoginOngoing session flag let an OAuth2 user authenticate as any local/LDAP account. The flag is now bound to the authenticated subject (the submitted login must match the session userPrincipalName).
- SQL injection in the user-logs datatable (GHSA-fqg6-xvv8-w228) - an unvalidated ordering parameter was concatenated into the ORDER BY clause. The clause is now rebuilt from a fixed column map with a strict asc/desc allow-list.
- Authenticated path traversal / arbitrary file write in file upload (GHSA-wwxq-c766-v93w) - the on-disk destination was built from the POST name field with insufficient sanitization. Path separators and traversal are now rejected, the name is reduced to basename(), the checked extension is derived from the on-disk name, and a realpath() containment check is enforced.
π‘οΈ Access-rights enforcement (#5275)
Folder-level rights are now consistently enforced on bulk operations, matching the single-item paths and the UI:
- Mass item deletion now checks the folder delete right (previously only folder accessibility), so a user with No-Delete access can no longer bulk-delete via the search menu.
- Mass item move now enforces the delete right on the source folder and the edit right on the destination.
- items_delete no longer falls through to the deletion after a failed right check (which previously deleted the item anyway and returned malformed JSON). Unauthorized items are skipped and reported.
- Added the missing English and French language keys for the items_delete response (previously raw keys were shown to users).
π Bug fixes
- Legacy attachment decryption after phpseclib v1βv3 migration (#5269) - attachments uploaded before the migration failed to decrypt. decryptFile() now tries v3 first and falls back to the legacy v1 key derivation. Item passwords were unaffected.
- Fatal 500 on login after idle session - an expired/garbage-collected session during an idle login page caused an uncaught TypeError. The login flow now emits the standard "session expired / log in again" dialog instead.
π οΈ Improvements
- API item cache (PR #5274) - item create/update/delete now keep the API item cache in sync, with an authorId parameter, a UNIQUE(id) constraint plus INSERT IGNORE to eliminate a duplicate-row race in the self-heal path (applied to the installer schema and to existing installs via upgrade), and new coverage in ApiItemCacheSyncTest.
- Admin - API users (PR #5273) - added search/filtering on the API users table and refactored the API-keys display logic.
- New-version notifications (PR #5270) - the admin dashboard now surfaces a new-version alert and lets admins view release messages, with dedicated brand/version badge styling.
β¬οΈ Upgrade notes
- A database upgrade step adds a UNIQUE(id) constraint to the API item cache table on existing installs, no manual action required, applied automatically by the upgrade.
Full Changelog
Full Changelog: https://github.com/nilsteampassnet/TeamPass/compare/3.2.0.7...3.2.0.8
Important
- Requires at least
PHP 8.2
Languages
Please join Teampass v3 translation project on Poeditor and translate it for your language.
Installation
Follow instructions from Documentation.
Upgrade
Follow instructions from Documentation.
Ideas and comments
Are welcome ... please use Discussions.
Breaking Changes
- Minimum supported PHP version raised to 8.2
Security Fixes
- GHSA-x8jf-9g87-j232 β Massβassignment privilege escalation in user management (write to attackerβcontrolled columns)
- GHSA-2mvr-v9w8-34c7 β OAuth2 authentication bypass allowing impersonation of any local/LDAP account
- GHSA-fqg6-xvv8-w228 β SQL injection via unvalidated ordering parameter in userβlogs datatable
- GHSA-wwxq-c766-v93w β Authenticated path traversal / arbitrary file write in file upload
Weekly OSS security release digest.
The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.
No spam, unsubscribe anytime.
Share this release
About Teampass
Password manager dedicated for managing passwords in a collaborative way. One symmetric key is used to encrypt all shared/team passwords and stored server side in a file and the database. works on any server Apache, MySQL and PHP.
Related context
Beta — feedback welcome: [email protected]