Safeguard
Vulnerability Analysis•

CVE-2026-85214: High Profile Overwrite Flaw in vhr

CVE-2026-85214: vhr lets any logged-in user overwrite other HR profiles and disable admins through PUT /hr/info. No fix is confirmed; patch locally.

Safeguard Security Team
3 min read

CVE-2026-85214 is a high severity authorization flaw in vhr, an open source Java HR system. The PUT /hr/info endpoint accepts a profile ID in the request body, so any logged in user can overwrite someone else's profile or disable an administrator account. No fix is confirmed.

What's affected

  • Product: vhr (lenve/vhr), HrInfoController and HrMapper.xml.
  • Affected: commit 03abbd3 and earlier.
  • Fixed version: none confirmed. Issue #349 was open when read, and the reporter said earlier emails got no reply.
  • Privilege needed: any authenticated session, regardless of role, according to the issue.

Severity in the record: High, CVSS 8.1 (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H). VulnCheck scores it 7.2 under CVSS v4. The record has 8.1 under CVSS v3.1.

Weakness class: CWE-639 (Authorization Bypass Through User-Controlled Key).

How to check if you're exposed

  1. Confirm the commit you deployed with git log -1 --format=%h.
  2. Search application logs for PUT requests to /hr/info where the profile ID in the body differs from the session user.
  3. Check recent changes to names, addresses and the enabled flag on accounts, especially administrators.
  4. Review whether a disabled administrator account could lock you out, and keep a documented recovery path.

What to do now

  1. Change the update handler to use the ID of the authenticated user and ignore any ID in the request body.
  2. Add a regression test with two users so one cannot edit the other.
  3. Put vhr on a private network or behind a VPN until patched.
  4. Audit HR profile records for unexpected edits and re-enable any accounts disabled by mistake.
  5. Watch the vhr repository for an official fix.

Why it matters

The update passes the object sent by the client straight to a mapper that writes by primary key. The key comes from the body, so the caller picks which row changes. The authenticated user's identity is never compared with it. This is CWE-639, insecure direct object reference, and it is one of the most common web flaws.

The impact is integrity and availability. Overwriting names and addresses damages HR data, and disabling an administrator account can deny access to the whole system. A related issue in the same project covers password changes. The record does not claim exploitation in the wild.

Quick check

What is the quickest fix for vhr users?

Make the controller use the logged in user's ID for the update and drop the ID from the request body, then add a test for it.

Sources

Last reviewed: 18 October 2026.

Never miss an update

Weekly insights on software supply chain security, delivered to your inbox.

Self-healing security runs on Safeguard.

Your first fix PR is minutes away.

No sales call required, even your agent can complete the purchase over MCP.