CVE-2026-64313: crypto: ecc - Fix carry overflow in vli multiplication

Greg Kroah-Hartman <[email protected]> Sat, 25 Jul 2026 10:48:50 +0200
Newsgroups org.kernel.vger.linux-cve-announce
Message-ID <2026072509-CVE-2026-64313-1119@gregkh>
From: Greg Kroah-Hartman <[email protected]>

Description
===========

In the Linux kernel, the following vulnerability has been resolved:

crypto: ecc - Fix carry overflow in vli multiplication

The carry flag calculation fails when r01.m_high is saturated
(0xFFFFFFFFFFFFFFFF) and addition of lower bits overflows.

The condition (r01.m_high < product.m_high) doesn't handle the case
where r01.m_high == product.m_high and an additional carry exists
from lower-bit overflow.

When commit 3c4b23901a0c ("crypto: ecdh - Add ECDH software support")
introduced crypto/ecc.c, it split the muladd() function in the
micro-ecc library into separate mul_64_64() and add_128_128() helpers.
It seems the check got lost in translation.

Add proper handling for this boundary by accounting for the carry
from the lower addition.

The Linux kernel CVE team has assigned CVE-2026-64313 to this issue.


Affected and fixed versions
===========================

	Issue introduced in 4.8 with commit 3c4b23901a0c766879dff680cd6bdab47bcdbbd2 and fixed in 5.10.261 with commit d11b2bb99bec1f5557c01cac42231e23745f49b8
	Issue introduced in 4.8 with commit 3c4b23901a0c766879dff680cd6bdab47bcdbbd2 and fixed in 5.15.212 with commit b709e0e768766abe29a49e1c1922a1604be602f4
	Issue introduced in 4.8 with commit 3c4b23901a0c766879dff680cd6bdab47bcdbbd2 and fixed in 6.1.178 with commit 24a54dfa06d09813b4802a374fad3d2c0e16a884
	Issue introduced in 4.8 with commit 3c4b23901a0c766879dff680cd6bdab47bcdbbd2 and fixed in 6.6.145 with commit 677450e5ef850c4d28b7956aa01104548c2a894e
	Issue introduced in 4.8 with commit 3c4b23901a0c766879dff680cd6bdab47bcdbbd2 and fixed in 6.12.96 with commit 5275e0fca256d081e2e7d4ba3dd8216c6e50d44e
	Issue introduced in 4.8 with commit 3c4b23901a0c766879dff680cd6bdab47bcdbbd2 and fixed in 6.18.39 with commit 774ddddf5eb26eeca177350413e3e2bc50930ee9
	Issue introduced in 4.8 with commit 3c4b23901a0c766879dff680cd6bdab47bcdbbd2 and fixed in 7.1.4 with commit ebaae7c4251cc0cdb2602f334d4f08a3e82d271e
	Issue introduced in 4.8 with commit 3c4b23901a0c766879dff680cd6bdab47bcdbbd2 and fixed in 7.2-rc1 with commit 27b536a2ec8e2f85a0380c2d13c9ecbc7aaab406

Please see https://www.kernel.org for a full list of currently supported
kernel versions by the kernel community.

Unaffected versions might change over time as fixes are backported to
older supported kernel versions.  The official CVE entry at
	https://cve.org/CVERecord/?id=CVE-2026-64313
will be updated if fixes are backported, please check that for the most
up to date information about this issue.


Affected files
==============

The file(s) affected by this issue are:
	crypto/ecc.c


Mitigation
==========

The Linux kernel CVE team recommends that you update to the latest
stable kernel version for this, and many other bugfixes.  Individual
changes are never tested alone, but rather are part of a larger kernel
release.  Cherry-picking individual commits is not recommended or
supported by the Linux kernel community at all.  If however, updating to
the latest release is impossible, the individual changes to resolve this
issue can be found at these commits:
	https://git.kernel.org/stable/c/d11b2bb99bec1f5557c01cac42231e23745f49b8
	https://git.kernel.org/stable/c/b709e0e768766abe29a49e1c1922a1604be602f4
	https://git.kernel.org/stable/c/24a54dfa06d09813b4802a374fad3d2c0e16a884
	https://git.kernel.org/stable/c/677450e5ef850c4d28b7956aa01104548c2a894e
	https://git.kernel.org/stable/c/5275e0fca256d081e2e7d4ba3dd8216c6e50d44e
	https://git.kernel.org/stable/c/774ddddf5eb26eeca177350413e3e2bc50930ee9
	https://git.kernel.org/stable/c/ebaae7c4251cc0cdb2602f334d4f08a3e82d271e
	https://git.kernel.org/stable/c/27b536a2ec8e2f85a0380c2d13c9ecbc7aaab406