{"cve":"CVE-2025-47774","nvd":{"published":"2025-05-15T18:15:38.440","modified":"2026-06-17T09:28:40.037","status":"Deferred","description":"Vyper is the Pythonic Programming Language for the Ethereum Virtual Machine. In versions up to and including 0.4.2rc1, the `slice()` builtin can elide side effects when the output length is 0, and the source bytestring is a builtin (`msg.data` or `<address>.code`). The reason is that for these source locations, the check that `length >= 1` is skipped. The result is that a 0-length bytestring constructed with slice can be passed to `make_byte_array_copier`, which elides evaluation of its source argument when the max length is 0. The impact is that side effects in the `start` argument may be elided when the `length` argument is 0, e.g. `slice(msg.data, self.do_side_effect(), 0)`. The fix in pull request 4645 disallows any invocation of `slice()` with length 0, including for the ad hoc locations discussed in this advisory. The fix is expected to be part of version 0.4.2.","cvss_v4":{"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N/E:P","score":2.9},"cvss_v3":null,"cwes":["CWE-691"],"references":["https://github.com/vyperlang/vyper/blob/68b68c4b30c5ef2f312b4674676170b8a6eaa316/vyper/builtins/functions.py#L315-L319","https://github.com/vyperlang/vyper/blob/68b68c4b30c5ef2f312b4674676170b8a6eaa316/vyper/codegen/core.py#L189-L191","https://github.com/vyperlang/vyper/pull/4645","https://github.com/vyperlang/vyper/security/advisories/GHSA-3vcg-j39x-cwfm"],"products":[],"source":"nvd","synced_at":"2026-10-19T22:01:57.636215869+00:00"},"epss":{"cve":"CVE-2025-47774","score":0.00479,"percentile":0.41354,"date":"2026-11-01"},"kev":null,"osv":[{"id":"GHSA-3vcg-j39x-cwfm","url":"https://osv.dev/vulnerability/GHSA-3vcg-j39x-cwfm","summary":"Vyper's `slice()` may elide side-effects when output length is 0","modified":"2026-07-07T17:57:17.629946444Z","packages":[{"ecosystem":"PyPI","name":"vyper","purl":"pkg:pypi/vyper","ranges":["<=0.4.2rc1"],"fixed":[]}]},{"id":"PYSEC-2026-2028","url":"https://osv.dev/vulnerability/PYSEC-2026-2028","summary":"Vyper's `slice()` may elide side-effects when output length is 0","modified":"2026-07-07T17:47:20.257466071Z","packages":[{"ecosystem":"PyPI","name":"vyper","purl":"pkg:pypi/vyper","ranges":["<=0.4.2rc1"],"fixed":[]}]}],"attribution":["This product uses the NVD API but is not endorsed or certified by the NVD.","EPSS scores: FIRST Exploit Prediction Scoring System, https://www.first.org/epss","Known exploited vulnerabilities: CISA Known Exploited Vulnerabilities Catalog, https://www.cisa.gov/known-exploited-vulnerabilities-catalog","Package advisories: OSV (https://osv.dev), from the GitHub Advisory Database, PyPA, Go, RustSec and other ecosystem databases, under CC-BY 4.0 or CC0","CVE records: the CVE Program's CVE List (https://www.cve.org), under its terms of use (https://www.cve.org/Legal/TermsOfUse). CVE is a registered trademark of The MITRE Corporation; this product is not affiliated with the CVE Program."]}