# GHSA-xw5j-gv2g-mjm2: Miscompilation in cortex-m-rt 0.7.1 and 0.7.2

> A miscompilation in the cortex-m-rt crate causes stack alignment violations, leading to incorrect runtime behavior in embedded applications.

- **Severity:** Not scored
- **Exploited in the wild:** Not known
- **Login needed:** Not needed
- **Attackable:** Not stated
- **Victim action needed:** Not needed
- **Fix available:** Yes
- **Published:** 13 Feb 2023
- **Also known as:** RUSTSEC-2023-0014

## What is GHSA-xw5j-gv2g-mjm2?

GHSA-xw5j-gv2g-mjm2 is a vulnerability in cortex-m-rt, published on 13 Feb 2023. 

### Official description

Version 0.7.1 of the `cortex-m-rt` crate introduced a regression causing the stack to NOT be eight-byte aligned prior to calling `main` (or any other specified entrypoint), violating the [stack ABI of AAPCS32], the default ABI used by all Cortex-M targets. This regression is also present in version 0.7.2 of the `cortex-m-rt` crate.

This regression can cause certain compiler optimizations (which assume the eight-byte alignment) to produce incorrect behavior at runtime. This incorrect behavior has been [observed in real-world applications].

**It is advised that ALL users of `v0.7.1` and `v0.7.2` of the `cortex-m-rt` crate update to the latest version (`v0.7.3`), AS SOON AS POSSIBLE.** Users of `v0.7.0` and prior versions of `cortex-m-rt` are not affected by this regression.

It will be necessary to rebuild all affected firmware binaries, and flash or deploy the new firmware binaries to affected devices.

[stack ABI of AAPCS32]: https://github.com/ARM-software/abi-aa/blob/edd7460d87493fff124b8b5713acf71ffc06ee91/aapcs32/aapcs32.rst#6212stack-constraints-at-a-public-interface
[observed in real-world applications]: https://github.com/peter9477/test2

## Which versions are affected by GHSA-xw5j-gv2g-mjm2?

3 open source packages ship an affected version, including cortex-m-rt.


| Package | Ecosystem | Affected | Fixed in |
| --- | --- | --- | --- |
| `cortex-m-rt` | crates.io | From 0.7.0 | 0.7.3 |
| `cortex-m-rt` | crates.io | From 0.7.0 | 0.7.3 |
| `cortex-m-rt` | crates.io | From 0.7.1-0 | 0.7.3 |

## How do I fix GHSA-xw5j-gv2g-mjm2?

Upgrade cortex-m-rt to 0.7.3 or later.

## Is GHSA-xw5j-gv2g-mjm2 being exploited?

There is no known exploitation of GHSA-xw5j-gv2g-mjm2 in the wild and no public exploit code.

## Fix prompt for AI coding agents

```text
Check this codebase for GHSA-xw5j-gv2g-mjm2 and fix it if it is affected.

What it is: GHSA-xw5j-gv2g-mjm2 is a vulnerability in cortex-m-rt, published on 13 Feb 2023. 
Exploitation: There is no known exploitation of GHSA-xw5j-gv2g-mjm2 in the wild and no public exploit code.

Affected packages and fixed versions:
- cortex-m-rt (crates.io): affected from 0.7.0; fixed in 0.7.3
- cortex-m-rt (crates.io): affected from 0.7.0; fixed in 0.7.3
- cortex-m-rt (crates.io): affected from 0.7.1-0; fixed in 0.7.3

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/GHSA-xw5j-gv2g-mjm2/ (Markdown: https://insights.sbomify.com/GHSA-xw5j-gv2g-mjm2/index.md)
```

## Sources

- OSV: https://osv.dev/vulnerability/GHSA-xw5j-gv2g-mjm2

---
From sbomify Insights: https://insights.sbomify.com/GHSA-xw5j-gv2g-mjm2/
Summaries are generated and may contain mistakes; the official description above is the record.
