CVE-2026-45137 json
Anchor: Program<'info, System> is not properly validated
published 2026-05-07 6 mo ago modified 2026-10-26 13 d ago also GHSA-c6rc-8jpp-2fgc , RUSTSEC-2026-0144 , EUVD-2026-32665
- cvss
- 8.2
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.3%
- EPSS 0.3% chance of exploitation in 30 days, percentile 20%
- public exploits
- 0
- none known
Summary
Anchor is a framework providing several convenient developer tools for writing Solana programs. From 1.0.0 to before 1.0.2, an logic error causes anchor programs to accept any program id when requiring the system program id, causing false assumptions resulting in potential arbitrary cpi in programs that invoke system program instructions. In the TryFrom<&'a AccountInfo<'a>> implementation for Program<'a, T>, the id of T is compared with Pubkey::default() to check whether anchor should allow any executable account, or a specific account, because when no T is supplied, T defaults to (), which implements Id::id() by returning Pubkey::default(). This results in T = () and T = System (which has Pubkey::default() as the id) having the same behavior, both allow any executable account. Programs built with anchor assume that the anchor runtime verifies passed in programs of type Program<'a, System> are in fact the system program. This false assumption can lead to arbitrary CPI or payment bypassing when programs try making CPI calls to the system program using the passed in system program due to the fact that the attacker can pass in any program instead of the system program. This vulnerability is fixed in 1.0.2.
Patch / fix
- crates.io anchor-lang 1.0.2
- anchor-lang anchor 1.0.2
CISA SSVC
- Exploitation
- Proof of concept is public
- Automatable
- yes
- Technical impact
- partial
- Assessed
- 5 mo ago
Exploit prediction
0.28% chance of exploitation in the next 30 days, higher than 20% of all scored CVEs (FIRST EPSS, 2026-11-08).
Exploits and checks
- github.com https://github.com/otter-sec/anchor/security/advisories/GHSA-c6rc-8jpp-2fgc referenced PoC, tagged "exploit" by a source, unverified
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 8.2 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:N |
| GitHub | 3.1 | 8.2 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:N |
| OSV | 3.1 | 8.2 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:H/A:N |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| crates.io | anchor-lang | >=1.0.0, <1.0.2 |
1.0.2 |
Affected products
- solana-foundation anchor
Classification
- Weakness
-
- CWE-20 Improper Input Validation
References
-
github.com
/solana-foundation/anchor/commit/3eb1fb0427d4fed0e944b627aef76db651a93aab
web
-
github.com
/otter-sec/anchor/security/advisories/GHSA-c6rc-8jpp-2fgc
exploit, web, vendor-advisory
-
github.com
/solana-foundation/anchor/security/advisories/GHSA-c6rc-8jpp-2fgc
web
-
nvd.nist.gov
/vuln/detail/CVE-2026-45137
advisory
-
github.com
/solana-foundation/anchor
package
-
github.com
/solana-foundation/anchor/releases/tag/v1.0.2
web
-
rustsec.org
/advisories/RUSTSEC-2026-0144.html
web, advisory
-
crates.io
/crates/anchor-lang
package
Sources
- CVE List CVE-2026-45137
- GitHub Advisory GHSA-c6rc-8jpp-2fgc
- NVD CVE-2026-45137
- OSV RUSTSEC-2026-0144
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.