GitHub Advisoryadvisory · PyPI
GHSA-xchq-w5r3-4wg3 vyper performs incorrect topic logging in raw_log
MEDIUM
Official page ↗
- Aliases
- CVE-2024-32645
- Ecosystem
- PyPI
- Packages
- vyper
- Severity
- Moderate
- CVSS vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
- Weaknesses
- CWE-20
- Reviewed
- 2024-04-25
Affected packages
• PyPI vyper: < 0.4.0 → fixed in 0.4.0
Description
Summary
Incorrect values can be logged when `raw_log` builtin is called with memory or storage arguments to be used as topics.
A contract search was performed and no vulnerable contracts were found in production. In particular, no uses of `raw_log()` were found at all in production; it is apparently not a well-known function.
Details
The `build_IR` function of the `RawLog` class fails to properly unwrap the variables provided as topics. Consequently, incorrect values are logged as topics.
PoC
```vyper
x: bytes32
@external
def f():
self.x = 0x1234567890123456789012345678901234567890123456789012345678901234
raw_log([self.x], b"") # LOG1(offset:0x60, size:0x00, topic1:0x00)
y: bytes32 = 0x1234567890123456789012345678901234567890123456789012345678901234
raw_log([y], b"") # LOG1(offset:0x80, size:0x00, topic1:0x40)
```
Patches
Fixed in https://github.com/vyperlang/vyper/pull/3977.
Impact
Incorrect values can be logged which may result in unexpected behavior in client-side applications relying on these logs.
Related
Alias · CVE (1)
- CVE-2024-32645 Vyper is a pythonic Smart Contract Language for the Ethereum virtual machine. vulnerability
Weakness · CWE (1)
- CWE-20 Improper Input Validation weakness