Skip to content

GO-2023-1621 BIT-golang-2023-24532 CVE-2023-24532

Incorrect calculation on P256 curves in crypto/internal/nistec

Medium Go
Severity
5.3 / 10
Medium · CVSS 3.1
Exploit chance (EPSS)
0.82%
Chance of exploitation in the next 30 days. Higher than 57.13% of scored vulnerabilities.
Known exploited
No
Not in CISA's catalog
Weakness
CWE-682 Incorrect Calculation
Fix
1.20.2
Upgrade stdlib to this version or later

Description

The ScalarMult and ScalarBaseMult methods of the P256 Curve may return an incorrect result if called with some specific unreduced scalars (a scalar larger than the order of the curve).

This does not impact usages of crypto/ecdsa or crypto/ecdh.

Affected versions

Go

PackageVulnerableFixed in
stdlib
< 1.19.7
>= 1.20.0-0, < 1.20.2
1.19.7
1.20.2

How to fix

Move to the fixed version or later with your package manager, update the lockfile, and run your tests. If the package only arrives through another dependency, upgrade that dependency first. If none of its releases pulls a fixed version yet, force the version with your package manager's override.

stdlib Go → 1.20.2

go
go get stdlib@v1.20.2 && go mod tidy

Severity breakdown

CVSS 3.1 5.3

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N

Attack vector
Network
Attack complexity
Low
Privileges required
None
User interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
Low
Availability
None

Weakness

CWE-682: Incorrect Calculation

The product performs a calculation that generates incorrect or unintended results that are later used in security-critical decisions or resource management.

How to prevent it
  • Implementation: Understand your programming language's underlying representation and how it interacts with numeric calculation. Pay close attention to byte size discrepancies, precision, signed/unsigned distinctions, truncation, conversion and casting between types, "not-a-number" calculations, and how your language handles numbers that are too large or too small for its underlying representation.
  • Implementation: Perform input validation on any numeric input by ensuring that it is within the expected range. Enforce that the input meets both the minimum and maximum requirements for the expected range.
  • Implementation: Use the appropriate type for the desired action. For example, in C/C++, only use unsigned types for values that could never be negative, such as height, width, or other numbers related to quantity.
  • Architecture and Design: Use languages, libraries, or frameworks that make it easier to handle numbers without unexpected consequences. Examples include safe integer handling packages such as SafeInt (C++) or IntegerLib (C or C++).
  • Architecture and Design: Use languages, libraries, or frameworks that make it easier to handle numbers without unexpected consequences. Examples include safe integer handling packages such as SafeInt (C++) or IntegerLib (C or C++).
  • Implementation: Examine compiler warnings closely and eliminate problems with potential security implications, such as signed / unsigned mismatch in memory operations, or use of uninitialized variables. Even if the weakness is rarely exploitable, a single failure may lead to the compromise of the entire system.

References

Timeline

  1. Published
  2. Last updated by the source
  3. Latest EPSS score
AdvisorySeverityWhy it's related
GHSA-4374-p667-p6c8
HTTP/2 rapid reset can cause excessive work in net/http
High Known exploited Also affects stdlib
CVE-2020-0601
Certificate validation bypass on Windows in crypto/x509
High Known exploited Also affects stdlib
RUSTSEC-2026-0382
Distrust compromised intermediate certificates in crypto/x509
Medium Also affects stdlib
GO-2026-6613
HTTP/1 server connection desynchronization after 2xx CONNECT response in net/http
High Also affects stdlib
GO-2026-6609
Lack of limit on size of parsed Range headers in net/http
High Also affects stdlib
GO-2026-6608
Memory limit bypass when parsing MIME headers in net/textproto, mime/multipart
High Also affects stdlib
GO-2026-6607
Reject malformed ECH outer extension references in crypto/tls
High Also affects stdlib
GO-2026-6604
Root.Mkdir(All) can follow junctions out of the root on Windows in os
Critical Also affects stdlib

Credits: Guido Vranken, via the Ethereum Foundation bug bounty program

Is this in your code?

MergeHarbor checks every repository's dependencies against this database, ranks what matters by exploitability and reachability, routes it to the owning team and opens the fix pull request.

Check your repos with MergeHarbor