{"schema":"threatline.record/2","record":{"id":"CVE-2021-48018","aliases":["GHSA-7f92-rr6w-cq64"],"summary":"Vyper 0.2.13 before 0.2.15 Storage Corruption via @nonreentrant Decorator","details":"Vyper from 0.2.13 before 0.2.15 allocates storage slots for @nonreentrant reentrancy locks at the same locations as contract storage variables. When a function using @nonreentrant is called, setting the lock overwrites the overlapping storage variable, corrupting contract state and breaking the contract's intended logic.","categories":["Libraries & packages"],"product":"vyper","vendor":"vyperlang","ecosystem":"PyPI","affected_ranges":[{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2021-48018","source_modified_at":"2026-10-23T14:57:15.214Z","fetched_at":"2026-10-23T18:42:43.628194Z","product":"vyper","vendor":"vyperlang","versions":[{"lessThan":"0.2.15","status":"affected","version":"0.2.13","versionType":"python"},{"status":"unaffected","version":"0.2.15","versionType":"python"}],"defaultStatus":"unaffected"},{"source":"OSV","source_url":"https://osv.dev/vulnerability/GHSA-7f92-rr6w-cq64","source_modified_at":"2024-12-02T05:40:46.631779Z","fetched_at":"2026-10-23T18:45:31.882637Z","package":{"name":"vyper","ecosystem":"PyPI","purl":"pkg:pypi/vyper"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0.2.13"},{"fixed":"0.2.15"}]}],"versions":["0.2.13","0.2.14"]}],"fixed_versions":[{"source":"CVE List","source_url":"https://www.cve.org/CVERecord?id=CVE-2021-48018","source_modified_at":"2026-10-23T14:57:15.214Z","fetched_at":"2026-10-23T18:42:43.628194Z","package":{"name":"vyper","ecosystem":null},"version":"0.2.15","basis":"first unaffected version stated in the CVE record"},{"source":"OSV","source_url":"https://osv.dev/vulnerability/GHSA-7f92-rr6w-cq64","source_modified_at":"2024-12-02T05:40:46.631779Z","fetched_at":"2026-10-23T18:45:31.882637Z","package":{"name":"vyper","ecosystem":"PyPI","purl":"pkg:pypi/vyper"},"version":"0.2.15"}],"cvss":8.3,"severity":"High","kev":{"listed":false},"epss":{"probability":0.00321,"percentile":0.23844,"score_date":"2026-10-23"},"published_at":"2026-10-21T00:36:18.265Z","modified_at":"2026-10-23T14:57:15.214Z","provenance":[{"source":"CVE List","url":"https://www.cve.org/CVERecord?id=CVE-2021-48018","fetched_at":"2026-10-23T18:42:43.628194Z","source_modified_at":"2026-10-23T14:57:15.214Z"},{"source":"OSV","url":"https://osv.dev/vulnerability/GHSA-7f92-rr6w-cq64","fetched_at":"2026-10-23T18:45:31.882637Z","source_modified_at":"2024-12-02T05:40:46.631779Z"},{"source":"EPSS","url":"https://api.first.org/data/v1/epss?cve=CVE-2021-48018","fetched_at":"2026-10-23T18:42:43.628194Z","source_modified_at":"2026-10-23"}],"sources":["CVE List","OSV","EPSS"],"references":[{"source":"CVE List","url":"https://github.com/vyperlang/vyper/security/advisories/GHSA-7f92-rr6w-cq64","tags":["vendor-advisory"]},{"source":"CVE List","url":"https://www.vulncheck.com/advisories/vyper-0.2.13-before-0.2.15-storage-corruption-via-nonreentrant-decorator","tags":["third-party-advisory"]}],"locations":[],"motoko_assessment":{"status":"requires_architecture_review","automatic_remediation":false},"cve_state":"PUBLISHED","cvss_source":"CVE List","ssvc":{"exploitation":"none","automatable":"no","technical_impact":"partial","assessed_at":"2026-10-23T14:57:03.783104Z"},"classification":{"method":"product-first software-layer rules","rules_version":"2.1","matched_on":"ecosystem","confidence":"heuristic","reviewed":false},"change_timestamp":"2026-10-23T14:57:15.214Z","content_hash":"bab2fd54615c62aa99dacc4a81e4ebf9facaa489c2f74e71c7ba754e65f730c3"}}
