Skip to content

Buffer overflow in sponge queue functions

Critical severity GitHub Reviewed Published Oct 20, 2022 in XKCP/XKCP • Updated May 3, 2023

Package

pip pysha3 (pip)

Affected versions

<= 1.0.2

Patched versions

None
bundler sha3 (RubyGems)
< 1.0.5
1.0.5

Description

Impact

The Keccak sponge function interface accepts partial inputs to be absorbed and partial outputs to be squeezed. A buffer can overflow when partial data with some specific sizes are queued, where at least one of them has a length of 2^32 - 200 bytes or more.

Patches

Yes, see commit fdc6fef0.

Workarounds

The problem can be avoided by limiting the size of the partial input data (or partial output digest) below 2^32 - 200 bytes. Multiple calls to the queue system can be chained at a higher level to retain the original functionality. Alternatively, one can process the entire input (or produce the entire output) at once, avoiding the queuing functions altogether.

References

See issue #105 for more details.

References

@gvanas gvanas published to XKCP/XKCP Oct 20, 2022
Published by the National Vulnerability Database Oct 21, 2022
Published to the GitHub Advisory Database Apr 26, 2023
Reviewed Apr 26, 2023
Last updated May 3, 2023

Severity

Critical

CVSS overall score

This score calculates overall vulnerability severity from 0 to 10 and is based on the Common Vulnerability Scoring System (CVSS).
/ 10

CVSS v3 base metrics

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

CVSS v3 base metrics

Attack vector: More severe the more the remote (logically and physically) an attacker can be in order to exploit the vulnerability.
Attack complexity: More severe for the least complex attacks.
Privileges required: More severe if no privileges are required.
User interaction: More severe when no user interaction is required.
Scope: More severe when a scope change occurs, e.g. one vulnerable component impacts resources in components beyond its security scope.
Confidentiality: More severe when loss of data confidentiality is highest, measuring the level of data access available to an unauthorized user.
Integrity: More severe when loss of data integrity is the highest, measuring the consequence of data modification possible by an unauthorized user.
Availability: More severe when the loss of impacted component availability is highest.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

EPSS score

3.092%
(91st percentile)

Weaknesses

CVE ID

CVE-2022-37454

GHSA ID

GHSA-6w4m-2xhg-2658

Source code

No known source code
Loading Checking history
See something to contribute? Suggest improvements for this vulnerability.