Bug 2255135 (CVE-2023-50981) - CVE-2023-50981 cryptopp: malformed DER public key file can trigger infinite loop condition
Summary: CVE-2023-50981 cryptopp: malformed DER public key file can trigger infinite l...
Keywords:
Status: NEW
Alias: CVE-2023-50981
Product: Security Response
Classification: Other
Component: vulnerability
Version: unspecified
Hardware: All
OS: Linux
medium
medium
Target Milestone: ---
Assignee: Product Security
QA Contact:
URL:
Whiteboard:
Depends On: 2255136 2255137
Blocks: 2255124
TreeView+ depends on / blocked
 
Reported: 2023-12-18 19:55 UTC by Robb Gatica
Modified: 2023-12-19 05:11 UTC (History)
0 users

Fixed In Version:
Clone Of:
Environment:
Last Closed:
Embargoed:


Attachments (Terms of Use)

Description Robb Gatica 2023-12-18 19:55:57 UTC
Reference: https://github.com/weidai11/cryptopp/issues/1249

-----
Hi, recently I found a security issue in the ModularSquareRoot function of Crypto++ library that would cause an infinite loop, since this function is being used in ECP::DecodePoint, an attacker could potentially craft a malformed DER public key file, and any user or server attempting to read this public key file in processes such as ECDSA may be susceptible to a DOS attack.
Issue

The issue lies in the second while loop in this function, the loop starts with n = 2 and increments n by one each time until we find an n such that Jacobi(n, p) = -1. However, this overlooks the case when p is in the form of m^2 and m is an odd number.

In this case, jacobi(n, p) = jacobi(n, m^2) can be converted into the product of a series of squares of Jacobi symbols using the properties of Jacobi symbols, this means that its value can only be 1 or 0 but not -1, therefore, no matter how n continues to increase, it will never satisfy Jacobi(n, p) = -1 to break out of the loop, thus leading to an infinite loop.

Comment 1 Robb Gatica 2023-12-18 19:56:14 UTC
Created cryptopp tracking bugs for this issue:

Affects: epel-all [bug 2255136]
Affects: fedora-all [bug 2255137]


Note You need to log in before you can comment on or make changes to this bug.