CVE-2023-51939 is a high severity flaw in the BBS short signature code of relic-toolkit 0.6.0, scored 8.8 by NVD. A fault injection attack such as Rowhammer can leak the secret key. The maintainer says RELIC is a research library and did not apply a fix, so avoid it where hardware faults are a concern.
What's affected
CVE-2023-51939 affects the cp_bbs_sig function in src/cp/relic_cp_bbs.c of Relic relic-toolkit version 0.6.0. NVD published it on 2024-02-01 with a score of 8.8 (high) and the vector CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H.
This is a source conflict on how the attack works. The NVD vector says network attack vector and describes a remote attacker. The reporter's GitHub issue instead describes a malicious process on the same machine inducing DRAM bit flips with Rowhammer before the victim signs a message. That is a co-resident attack, not a remote one over the network. The score and the vector are NVD's; the attack model is the reporter's. Use the reporter's description to judge your own exposure.
On fixes: the maintainer replied on the issue that RELIC is a research library whose threat model does not include fault injection, said a fix is not warranted, and updated the project disclaimer to make that limit explicit. So there is no fixed version to move to. The issue is closed.
Weakness class: CWE-74.
How to check if you're exposed
Find out whether RELIC is in your build. It is a C library, so it often arrives as a vendored source tree, a submodule or a static library rather than a package manager entry. Search your repositories:
grep -rIl "relic_cp_bbs\|relic_core" .
git submodule status | grep -i relic
Then check whether anything calls the BBS short signature scheme at all. If your code uses RELIC only for other primitives, this CVE does not touch you. If it signs with BBS, ask where that code runs: a shared host with untrusted tenants is the case the reporter describes, while a dedicated device running only trusted code is a much weaker target.
Safeguard's free in-browser dependency scan at gold.safeguard.sh/scan checks the open source packages you ship. It does not inspect appliance firmware or a vendor's closed product, so for this CVE the useful work is asset inventory and vendor follow-up.
What to do now
- Inventory every use of RELIC in your products and note which ones call the BBS signing function.
- Read the reporter's issue and the maintainer's reply, and decide whether fault injection belongs in your threat model. If it does, RELIC as shipped does not defend against it.
- For deployments where untrusted code can share memory with the signer, move signing to hardware or a library designed to resist fault attacks, or isolate the signer on a dedicated machine.
- Where you must keep RELIC, consider adding your own fault detection, such as verifying a signature before releasing it, as the reporter's write-up discusses countermeasures. Test any such change yourself.
- Record the decision in your risk register so a later scanner finding on this CVE has a documented answer.
Why it matters
The advisory lists CWE-74, an injection class, which fits the record loosely. The underlying issue in the reporter's words is that the signing code can be driven into using a corrupted secret value, and the resulting faulty signatures reveal bits of the key. The reporter says they recovered 190 of 224 secret bits in their proof of concept.
The story is a useful reminder that a CVE score and a real risk are different things. Many scanners will flag 8.8 and ask for an upgrade, but no upgrade exists, and the right response is a threat model decision. The record's KEV flag is false and I found no report of exploitation outside the researchers' tests.
Try it yourself
Click through it at your own pace, or open it full screen.
Quick check
Is there a patch for CVE-2023-51939?
No fix was applied. The maintainer updated the disclaimer and said fault injection is outside RELIC's threat model.
Can someone exploit this over the internet?
The NVD vector says network, but the reporter describes a process on the same machine causing memory bit flips. Treat it as a local, co-tenant risk unless you learn otherwise.
Sources
GitHub issue 284 in relic-toolkit/relic (fetched)
Reporter proof of concept repository (listed in the record, not fetched)
NVD record for CVE-2023-51939 (the record this guide is built from)
Last reviewed: 19 October 2026.