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
9.8
/ 10

CVSS base metrics

Attack vector
Network
Attack complexity
Low
Privileges required
None
User interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H

Weaknesses

CVE ID

CVE-2022-37454

GHSA ID

GHSA-6w4m-2xhg-2658

Source code

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