CVE-2026-70557: diboot-core Authenticated Arbitrary Field Read via loadRelatedData Discloses Password Hashes and Salts
diboot-core's POST /common/load-related-data endpoint resolves caller-supplied field names to any @TableField column of any entity and returns those values for all rows, with no field or entity allowlist. The only guard, relatedDataSecurityCheck(), returns true unconditionally, so any authenticated user (including a zero-role account) can read @JsonIgnore-annotated secret fields such as IamAccount.authSecret and IamAccount.secretSalt for every account, or arbitrary secret fields of any other entity. Shiro's two-iteration MD5 with an 8-character salt is trivially crackable offline, so the disclosed admin password hashes convert to full administrative takeover. The endpoint is not example code; the official diboot-admin-ui frontend requires it, so deployments following the vendor's recommended integration expose it. The mechanism was renamed relatedData to attachMore on the development branch, but attachMoreSecurityCheck() also returns true unconditionally.
Affected Software
Event History
Frequently Asked Questions
What is the severity of CVE-2026-70557?
CVE-2026-70557 has a medium severity rating of 6.5.
How do I fix CVE-2026-70557?
To fix CVE-2026-70557, implement a proper field and entity allowlist for the /common/load-related-data endpoint.
What risk does CVE-2026-70557 pose?
CVE-2026-70557 poses a risk level of 38, indicating a significant potential impact if exploited.
What kind of data does CVE-2026-70557 disclose?
CVE-2026-70557 discloses sensitive information such as password hashes and salts.
Is user authentication a factor in CVE-2026-70557?
Yes, CVE-2026-70557 requires user authentication to exploit the vulnerability.