Skip to content

fix(api): conceal hash fields on read (GHSA-mvv8-v4jj-g47j) - #427

Open
louisdussarps wants to merge 3 commits into
mainfrom
fix/revisions-sensitive-fields-GHSA-mvv8-v4jj-g47j
Open

louisdussarps wants to merge 3 commits into
mainfrom
fix/revisions-sensitive-fields-GHSA-mvv8-v4jj-g47j

Conversation

@louisdussarps

Copy link
Copy Markdown
Contributor

Change description

The hash transformer of PayloadService now conceals values on read (**********), like the conceal special. Empty values are left as is.

Hash fields created from the data model only get the hash special, without conceal. On item creation, the revision is built with prepareDelta from the payload before it is hashed, and processValues('read') returned the value unchanged: the submitted value was stored in clear text in directus_revisions. Their argon2 hash was also returned by the API and stored in update snapshots. System hash fields (directus_users.password, directus_shares.password) already had conceal and are unaffected.

Authentication and share login read the stored hash directly with knex, so they are unaffected.

The flow logs part of the advisory (raw trigger payload stored in directus_revisions) will be handled in a separate PR.

Type of change

  • Bug fix (fixes an issue)
  • New feature (adds functionality)

Related issues

Fix GHSA-mvv8-v4jj-g47j / CVE-2026-39943 (Dependabot alert #677)

Checklists

Development

  • Lint rules pass locally
  • Application changes have been tested thoroughly
  • Automated tests covering modified code pass

Security

  • Security impact of change has been considered
  • Code follows company security practices and guidelines

Network

  • Changes to network configurations have been reviewed
  • Any newly exposed public endpoints or data have gone through security review

Code review

  • Pull request has a descriptive title and context useful to a reviewer. Screenshots or screencasts are attached as
    necessary
  • reviewers assigned
  • Pull request linked to task tracker where applicable

Hash fields without the conceal special had their submitted value stored in
clear text in revisions on item creation, and their hash returned by the API.
They are now concealed on read, like conceal fields.

Signed-off-by: louis <louis@webcapsule.io>
@louisdussarps louisdussarps added the p2 Medium Priority label Oct 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

p2 Medium Priority security

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants