Description
The X25519 x86_64 assembly implementation fails to clear the most significant bit during the final modular reduction, so the computed result may not be fully reduced modulo the field prime 2^255 - 19. This can leave the field element in a non-canonical form, producing an incorrect result from the scalar multiplication and potentially a wrong shared secret. The final carry-propagation chains in the x64 and AVX2 reduction routines could overflow into the top bit, and the high limb was not masked afterward, so the 255-bit field element was left non-canonical.
Problem types
Product status
5.6.4 (semver)
Credits
Haruki Oyama
References
github.com/wolfSSL/wolfssl/pull/10536
www.wolfssl.com/docs/security-vulnerabilities/