{"id":"GHSA-j2x6-9323-fp7h","summary":"Integer bounds error in Vyper","details":"### Impact\nin the following code, the return of `\u003ciface\u003e.returns_int128()` is not validated to fall within the bounds of `int128`. as of v0.3.0, `\u003ciface\u003e.returns_int128()` is validated in simple expressions, but not complex expressions.\n```vyper\ninterface iface:\n    def returns_int128() -\u003e int128: view\n    def returns_Bytes33() -\u003e Bytes[33]: view\n\nx: iface\n \n@external\ndef call_out():\n    x: int128 = self.x.returns_int128()  # affected, \u003c0.3.0\n    y: uint256 = convert(self.x.returns_int128(), uint256)  # affected, \u003c0.3.2\n    z: Bytes[33] = concat(self.x.returns_Bytes33(), b\"\")  # affected \u003e= 0.3.0, \u003c0.3.2\n```\n\n### Patches\n0.3.2 (as of https://github.com/vyperlang/vyper/commit/049dbdc647b2ce838fae7c188e6bb09cf16e470b)\n\n### Workarounds\nBreak up operations involving external calls into multiple statements. For instance, instead of the example above, use\n```\nx: int128 = self.x.returns_int128()\ny: uint256 = convert(x, uint256)\n```","aliases":["CVE-2022-24845","PYSEC-2022-198"],"modified":"2023-11-08T04:08:38.494818Z","published":"2022-04-22T20:24:13Z","database_specific":{"cwe_ids":["CWE-190"],"severity":"HIGH","github_reviewed":true,"github_reviewed_at":"2022-04-22T20:24:13Z","nvd_published_at":"2022-04-13T22:15:00Z"},"references":[{"type":"WEB","url":"https://github.com/vyperlang/vyper/security/advisories/GHSA-j2x6-9323-fp7h"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2022-24845"},{"type":"WEB","url":"https://github.com/vyperlang/vyper/commit/049dbdc647b2ce838fae7c188e6bb09cf16e470b"},{"type":"WEB","url":"https://github.com/pypa/advisory-database/tree/main/vulns/vyper/PYSEC-2022-198.yaml"},{"type":"PACKAGE","url":"https://github.com/vyperlang/vyper"}],"affected":[{"package":{"name":"vyper","ecosystem":"PyPI","purl":"pkg:pypi/vyper"},"ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.3.2"}]}],"versions":["0.1.0b1","0.1.0b10","0.1.0b11","0.1.0b12","0.1.0b13","0.1.0b14","0.1.0b15","0.1.0b16","0.1.0b17","0.1.0b2","0.1.0b3","0.1.0b4","0.1.0b5","0.1.0b6","0.1.0b7","0.1.0b8","0.1.0b9","0.2.1","0.2.10","0.2.11","0.2.12","0.2.13","0.2.14","0.2.15","0.2.16","0.2.2","0.2.3","0.2.4","0.2.5","0.2.6","0.2.7","0.2.8","0.2.9","0.3.0","0.3.1"],"database_specific":{"source":"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2022/04/GHSA-j2x6-9323-fp7h/GHSA-j2x6-9323-fp7h.json"}}],"schema_version":"1.9.0","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H"}]}