# CVE-2026-32322: soroban-sdk: `Fr` scalar field equality comparison bypasses modular reduction

> Attackers can bypass security checks in Soroban smart contracts by exploiting incorrect equality comparisons of unreduced scalar field values.

- **Severity:** Medium 5.3 (`CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N`)
- **Exploited in the wild:** Not known
- **Login needed:** Not needed
- **Attackable:** Over the internet
- **Victim action needed:** Not needed
- **Fix available:** Yes
- **Published:** 12 Mar 2026
- **Updated:** 13 Mar 2026
- **Also known as:** GHSA-x2hw-px52-wp4m

## What is CVE-2026-32322?

CVE-2026-32322 is a medium-severity vulnerability in stellar rs-soroban-sdk, published on 12 Mar 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.

### Official description

soroban-sdk is a Rust SDK for Soroban contracts. Prior to 22.0.11, 23.5.3, and 25.3.0, The Fr (scalar field) types for BN254 and BLS12-381 in soroban-sdk compared values using their raw U256 representation without first reducing modulo the field modulus r. This caused mathematically equal field elements to compare as not-equal when one or both values were unreduced (i.e., >= r). The vulnerability requires an attacker to supply crafted Fr values through contract inputs, and compare them directly without going through host-side arithmetic operations. Smart contracts that rely on Fr equality checks for security-critical logic could produce incorrect results. The impact depends on how the affected contract uses Fr equality comparisons, but can result in incorrect authorization decisions or validation bypasses in contracts that perform equality checks on user-supplied scalar values. This vulnerability is fixed in 22.0.11, 23.5.3, and 25.3.0.

Weakness: CWE-697 (Incorrect Comparison)

## Which versions are affected by CVE-2026-32322?

6 open source packages ship an affected version, including soroban-sdk. It affects 1 product.


| Package | Ecosystem | Affected | Fixed in |
| --- | --- | --- | --- |
| `soroban-sdk` | crates.io | All versions | 22.0.11 |
| `soroban-sdk` | crates.io | All versions | 22.0.11 |
| `soroban-sdk` | crates.io | From 23.0.0 | 23.5.3 |
| `soroban-sdk` | crates.io | From 23.0.0 | 23.5.3 |
| `soroban-sdk` | crates.io | From 25.0.0 | 25.3.0 |
| `soroban-sdk` | crates.io | From 25.0.0 | 25.3.0 |

Products: Stellar Rs-Soroban-Sdk.

## How do I fix CVE-2026-32322?

Upgrade soroban-sdk to a fixed version for your release line: 22.0.11, 23.5.3 or 25.3.0.

## Is CVE-2026-32322 being exploited?

There is no known exploitation of CVE-2026-32322 in the wild and no public exploit code.

## Other vulnerabilities in stellar rs-soroban-sdk

- [CVE-2026-26267](https://insights.sbomify.com/CVE-2026-26267/): rs-soroban-sdk #[contractimpl] macro calls inherent function instead of trait function when names collide (high 7.5)
- [CVE-2026-24889](https://insights.sbomify.com/CVE-2026-24889/): soroban-sdk has overflow in Bytes::slice, Vec::slice, GenRange::gen_range for u64 (medium 5.3)

## Fix prompt for AI coding agents

```text
Check this codebase for CVE-2026-32322 and fix it if it is affected.

What it is: CVE-2026-32322 is a medium-severity vulnerability in stellar rs-soroban-sdk, published on 12 Mar 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.
Exploitation: There is no known exploitation of CVE-2026-32322 in the wild and no public exploit code.

Affected packages and fixed versions:
- soroban-sdk (crates.io): affected all versions; fixed in 22.0.11
- soroban-sdk (crates.io): affected all versions; fixed in 22.0.11
- soroban-sdk (crates.io): affected from 23.0.0; fixed in 23.5.3
- soroban-sdk (crates.io): affected from 23.0.0; fixed in 23.5.3
- soroban-sdk (crates.io): affected from 25.0.0; fixed in 25.3.0
- soroban-sdk (crates.io): affected from 25.0.0; fixed in 25.3.0

Task:
1. Search the dependency manifests and lockfiles (for example package.json, package-lock.json, requirements.txt, poetry.lock, uv.lock, pom.xml, build.gradle, go.mod, Cargo.lock, Gemfile.lock) and any Dockerfiles for the affected packages, including transitive dependencies.
2. If an affected version is in use, upgrade it to the fixed version for its release line with the project's package manager, so the lockfile is regenerated. Prefer the smallest upgrade that fixes it.
3. If there is no fix, or the upgrade would break the build, do not guess: explain the risk and the safest workaround instead.
4. Run the tests and summarise what changed and why.
5. If nothing in the project is affected, say so and change nothing.

Reference: https://insights.sbomify.com/CVE-2026-32322/ (Markdown: https://insights.sbomify.com/CVE-2026-32322/index.md)
```

## Sources

- CVE record: https://www.cve.org/CVERecord?id=CVE-2026-32322
- NVD: https://nvd.nist.gov/vuln/detail/CVE-2026-32322
- OSV: https://osv.dev/vulnerability/CVE-2026-32322

---
From sbomify Insights: https://insights.sbomify.com/CVE-2026-32322/
Summaries are generated and may contain mistakes; the official description above is the record.
