# GHSA-rc4p-p3j9-6577: pypqc private key retrieval vulnerability

> An attacker with local access or timing information can recover private keys from the pypqc library via a side-channel attack.

- **Severity:** Not scored
- **Exploited in the wild:** Not known
- **Login needed:** Not needed
- **Attackable:** Local or same network only
- **Victim action needed:** Not needed
- **Fix available:** Yes
- **Published:** 22 Feb 2024

## What is GHSA-rc4p-p3j9-6577?

GHSA-rc4p-p3j9-6577 is a vulnerability in pypqc, published on 22 Feb 2024. It can only be exploited from the same machine or local network, with no action from the victim.

### Official description

### Impact
`kyber512`, `kyber768`, and `kyber1024` only: An attacker able to submit many decapsulation requests against a single private key, and to gain timing information about the decapsulation, could recover the private key. Proof-of-concept exploit exists for a local attacker.

CVSS:3.1/AV:A/AC:L/PR:N/UI:N/S:U/C:H/I:L/A:N/E:P/RL:O/RC:C  

### Patches
Version 0.0.6.1 and newer of PyPQC is patched.

### Workarounds
No workarounds have been reported. The 0.0.6 -> 0.0.6.1 upgrade should be a drop-in replacement; it has no known breaking changes.

### References
#### Timeline
1. Cryspen researchers privately reported KyberSlash to the reference implementation maintainers.

2. Peter Schwabe partially patched KyberSlash \(only "KyberSlash 1"\) in the reference implementation on December 1st, 2023, but did not document or advertise this as a security patch.  
   https://www.github.com/pq-crystals/kyber/commit/dda29cc63af721981ee2c831cf00822e69be3220

3. Daniel J. Bernstein publicly reported KyberSlash as a security issue on December 15th, 2023.  
   https://groups.google.com/a/list.nist.gov/g/pqc-forum/c/hWqFJCucuj4/m/-Z-jm_k9AAAJ

4. Daniel J. Bernstein created a webpage for authoritative reference about KyberSlash on December 19th, 2023.  
   https://kyberslash.cr.yp.to/

5. Thom Wiggers acknowledged KyberSlash as a security issue on December 19th, 2023.  
   https://www.github.com/PQClean/PQClean/issues/533

6. Prasanna Ravi and Matthias Kannwischer privately reported further details about KyberSlash \("KyberSlash 2"\) to the reference implementation maintainers.

7. Peter Schwabe completely patched KyberSlash in the reference implementation on December 29th, 2023.
   https://www.github.com/pq-crystals/kyber/commit/11d00ff1f20cfca1f72d819e5a45165c1e0a2816

8. Prasanna Ravi and Matthias Kannwischer publicly reported their findings \("KyberSlash 2"\) on December 30th, 2023.  
   https://groups.google.com/a/list.nist.gov/g/pqc-forum/c/ldX0ThYJuBo/m/ovODsdY7AwAJ

9. Daniel J. Bernstein published a proof-of-concept exploit \(only validated for a local attacker\) for KyberSlash on December 30th, 2023.  
   https://groups.google.com/a/list.nist.gov/g/pqc-forum/c/ldX0ThYJuBo/m/uIOqRF5BAwAJ

10. Thom Wiggers completely patched KyberSlash in PQClean on January 25th, 2024.  
   https://www.github.com/PQClean/PQClean/commit/3b43bc6fe46fe47be38f87af5019a7f1462ae6dd

11. James E. A. completely patched KyberSlash in pypqc and released a security update on January 26th, 2024.  
   https://www.github.com/JamesTheAwesomeDude/pypqc/commit/b33fec8cd36e865f8db6215c64b2d01f429a1ed6

## Which versions are affected by GHSA-rc4p-p3j9-6577?

2 open source packages ship an affected version, including pypqc.


| Package | Ecosystem | Affected | Fixed in |
| --- | --- | --- | --- |
| `pypqc` | PyPI | From 0.0.4 | 0.0.6.1 |
| `pypqc` | PyPI | From 0.0.4 | 0.0.6.1 |

## How do I fix GHSA-rc4p-p3j9-6577?

Upgrade pypqc to 0.0.6.1 or later.

## Is GHSA-rc4p-p3j9-6577 being exploited?

There is no known exploitation of GHSA-rc4p-p3j9-6577 in the wild and no public exploit code.

## Fix prompt for AI coding agents

```text
Check this codebase for GHSA-rc4p-p3j9-6577 and fix it if it is affected.

What it is: GHSA-rc4p-p3j9-6577 is a vulnerability in pypqc, published on 22 Feb 2024. It can only be exploited from the same machine or local network, with no action from the victim.
Exploitation: There is no known exploitation of GHSA-rc4p-p3j9-6577 in the wild and no public exploit code.

Affected packages and fixed versions:
- pypqc (PyPI): affected from 0.0.4; fixed in 0.0.6.1
- pypqc (PyPI): affected from 0.0.4; fixed in 0.0.6.1

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-rc4p-p3j9-6577/ (Markdown: https://insights.sbomify.com/GHSA-rc4p-p3j9-6577/index.md)
```

## Sources

- OSV: https://osv.dev/vulnerability/GHSA-rc4p-p3j9-6577

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