CVE-2026-47738: liboqs: Uninitialized function-pointer dereference in OQS_KEM_encaps_derand for NTRU KEMs
liboqs is a C-language cryptographic library that provides implementations of post-quantum cryptography algorithms. Prior to 0.16.0, OQSKEMencapsderand can dereference an uninitialized encapsderand function pointer when called on NTRU-HPS-2048-509, NTRU-HPS-2048-677, NTRU-HPS-4096-821, NTRU-HPS-4096-1229, NTRU-HRSS-701, or NTRU-HRSS-1373. The affected NTRU constructors omit the OQSKEM.encapsderand member because those schemes do not support derandomized encapsulation, OQSKEM objects are allocated without zero initialization, and the wrapper in src/kem/kem.c checks only that the OQSKEM pointer is non-null before calling through the residual heap value. An application is affected only if it instantiates one of those six NTRU KEMs and invokes OQSKEMencapsderand on it. The supported impact is a calling-process crash and denial of service. This issue is fixed in version 0.16.0.
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
liboqsto a version that resolves this vulnerability.Fixed in 0.16.0
Event History
Frequently Asked Questions
Which applications are exposed to this issue?
Only applications that instantiate one of the six affected NTRU KEMs and call OQS_KEM_encaps_derand on that object are affected. The listed schemes are NTRU-HPS-2048-509, NTRU-HPS-2048-677, NTRU-HPS-4096-821, NTRU-HPS-4096-1229, NTRU-HRSS-701, and NTRU-HRSS-1373.
What must occur for exploitation to cause an impact?
The application must invoke the derandomized encapsulation wrapper for an affected NTRU KEM. Those schemes do not support derandomized encapsulation, so the call can dispatch through a residual, uninitialized heap value.
What is the supported impact?
The supported impact is a crash of the calling process, resulting in denial of service.
How can I determine whether my application is affected?
Review whether it uses a liboqs version prior to 0.16.0, creates any of the six named NTRU KEM objects, and calls OQS_KEM_encaps_derand for them. All three conditions are required according to the advisory.
What should be done if upgrading is not immediately possible?
Do not call OQS_KEM_encaps_derand with any of the affected NTRU KEM objects. These schemes do not support derandomized encapsulation.