`InterfaceAccount` allows account substitution between unexpected types
Exact source revision recorded 24 Oct 2026 13:19:54 UTC. It does not establish the source's current position. Latest evidence.
osv · RUSTSEC-2026-0146
PublishedAffected versions of `anchor-lang` allowed `InterfaceAccount` to accept accounts with an unexpected Anchor discriminator. A change to `InterfaceAccount` caused checked deserialization to be bypassed for this account wrapper, so validation proved only that the account owner matched one of the accepted interface owners. It did not prove that the account data belonged to the expected account type. Programs using `InterfaceAccount` rely on Anchor to enforce both owner and account-type validation before the handler runs. With discriminator checking disabled, an attacker could pass another account type owned by an accepted program and have it deserialized through the expected interface wrapper. This could bypass account-type assumptions made by the program and lead to incorrect authorization or state handling. The issue was fixed in `anchor-lang` 1.0.0-rc.2 by restoring checked deserialization for `InterfaceAccount::try_from`, while keeping explicitly unchecked behavior available only through the unchecked API. Users should upgrade to `anchor-lang` 1.0.0-rc.2 or later.
- Source published
- 8 May 2026 12:00:00 UTC
- Source modified
- 12 Oct 2026 18:00:08 UTC
- Observed here
- 24 Oct 2026 13:19:54 UTC
- Source terms
- OSV · upstream source license applies
Original source record · Cite this exact observation · Complete original publisher JSON
This view projects the publisher's source fields for reading; the original JSON retains additional fields and CVE enrichment containers. Attribution: osv · OSV · upstream source license applies. Source text is retained; field grouping and change labels are provided by ChangeIntel.
CVSS_V4 · CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N