CVE-2023-46232 (GCVE-0-2023-46232)
Vulnerability from cvelistv5
Published
2023-10-25 21:01
Modified
2024-09-10 14:02
Severity ?
VLAI Severity ?
EPSS score ?
CWE
- CWE-471 - Modification of Assumed-Immutable Data (MAID)
Summary
era-compiler-vyper is the EraVM Vyper compiler for zkSync Era, a layer 2 rollup that uses zero-knowledge proofs to scale Ethereum. Prior to era-compiler-vype version 1.3.10, a bug prevented the initialization of the first immutable variable for Vyper contracts meeting certain criteria. The problem arises when there is a String or Array with more 256-bit words allocated than initialized. It results in the second word’s index unset, that is effectively set to 0, so the first immutable value with the actual 0 index is overwritten in the ImmutableSimulator. Version 1.3.10 fixes this issue by setting all indexes in advance. The problem will go away, but it will get more expensive if the user allocates a lot of uninitialized space, e.g. `String[4096]`. Upgrading and redeploying affected contracts is the only way of working around the issue.
References
Impacted products
| Vendor | Product | Version | ||
|---|---|---|---|---|
| matter-labs | era-compiler-vyper |
Version: < 1.3.10 |
{
"containers": {
"adp": [
{
"providerMetadata": {
"dateUpdated": "2024-08-02T20:37:40.164Z",
"orgId": "af854a3a-2127-422b-91ae-364da2661108",
"shortName": "CVE"
},
"references": [
{
"name": "https://github.com/matter-labs/era-compiler-vyper/security/advisories/GHSA-h8jv-969m-94r4",
"tags": [
"x_refsource_CONFIRM",
"x_transferred"
],
"url": "https://github.com/matter-labs/era-compiler-vyper/security/advisories/GHSA-h8jv-969m-94r4"
},
{
"name": "https://github.com/matter-labs/era-compiler-vyper/commit/8be305a1b9c68d0fd47dad3434224ed85944ca25",
"tags": [
"x_refsource_MISC",
"x_transferred"
],
"url": "https://github.com/matter-labs/era-compiler-vyper/commit/8be305a1b9c68d0fd47dad3434224ed85944ca25"
},
{
"name": "https://github.com/matter-labs/era-system-contracts/blob/main/contracts/ImmutableSimulator.sol#L37",
"tags": [
"x_refsource_MISC",
"x_transferred"
],
"url": "https://github.com/matter-labs/era-system-contracts/blob/main/contracts/ImmutableSimulator.sol#L37"
}
],
"title": "CVE Program Container"
},
{
"affected": [
{
"cpes": [
"cpe:2.3:a:matter-labs:era-compiler-vyper:*:*:*:*:*:*:*:*"
],
"defaultStatus": "unknown",
"product": "era-compiler-vyper",
"vendor": "matter-labs",
"versions": [
{
"lessThan": "1.3.10",
"status": "affected",
"version": "0",
"versionType": "custom"
}
]
}
],
"metrics": [
{
"other": {
"content": {
"id": "CVE-2023-46232",
"options": [
{
"Exploitation": "none"
},
{
"Automatable": "yes"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2024-09-10T13:54:36.889917Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2024-09-10T14:02:31.551Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"product": "era-compiler-vyper",
"vendor": "matter-labs",
"versions": [
{
"status": "affected",
"version": "\u003c 1.3.10"
}
]
}
],
"descriptions": [
{
"lang": "en",
"value": "era-compiler-vyper is the EraVM Vyper compiler for zkSync Era, a layer 2 rollup that uses zero-knowledge proofs to scale Ethereum. Prior to era-compiler-vype version 1.3.10, a bug prevented the initialization of the first immutable variable for Vyper contracts meeting certain criteria. The problem arises when there is a String or Array with more 256-bit words allocated than initialized. It results in the second word\u2019s index unset, that is effectively set to 0, so the first immutable value with the actual 0 index is overwritten in the ImmutableSimulator. Version 1.3.10 fixes this issue by setting all indexes in advance. The problem will go away, but it will get more expensive if the user allocates a lot of uninitialized space, e.g. `String[4096]`. Upgrading and redeploying affected contracts is the only way of working around the issue.\n"
}
],
"metrics": [
{
"cvssV3_1": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "NONE",
"baseScore": 5.3,
"baseSeverity": "MEDIUM",
"confidentialityImpact": "NONE",
"integrityImpact": "LOW",
"privilegesRequired": "NONE",
"scope": "UNCHANGED",
"userInteraction": "NONE",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N",
"version": "3.1"
}
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-471",
"description": "CWE-471: Modification of Assumed-Immutable Data (MAID)",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2023-10-25T21:01:51.692Z",
"orgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"shortName": "GitHub_M"
},
"references": [
{
"name": "https://github.com/matter-labs/era-compiler-vyper/security/advisories/GHSA-h8jv-969m-94r4",
"tags": [
"x_refsource_CONFIRM"
],
"url": "https://github.com/matter-labs/era-compiler-vyper/security/advisories/GHSA-h8jv-969m-94r4"
},
{
"name": "https://github.com/matter-labs/era-compiler-vyper/commit/8be305a1b9c68d0fd47dad3434224ed85944ca25",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/matter-labs/era-compiler-vyper/commit/8be305a1b9c68d0fd47dad3434224ed85944ca25"
},
{
"name": "https://github.com/matter-labs/era-system-contracts/blob/main/contracts/ImmutableSimulator.sol#L37",
"tags": [
"x_refsource_MISC"
],
"url": "https://github.com/matter-labs/era-system-contracts/blob/main/contracts/ImmutableSimulator.sol#L37"
}
],
"source": {
"advisory": "GHSA-h8jv-969m-94r4",
"discovery": "UNKNOWN"
},
"title": "era-compiler-vyper First Immutable Variable Initialization vulnerability"
}
},
"cveMetadata": {
"assignerOrgId": "a0819718-46f1-4df5-94e2-005712e83aaa",
"assignerShortName": "GitHub_M",
"cveId": "CVE-2023-46232",
"datePublished": "2023-10-25T21:01:51.692Z",
"dateReserved": "2023-10-19T20:34:00.946Z",
"dateUpdated": "2024-09-10T14:02:31.551Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.1",
"vulnerability-lookup:meta": {
"vulnrichment": {
"containers": "{\"adp\": [{\"title\": \"CVE Program Container\", \"references\": [{\"url\": \"https://github.com/matter-labs/era-compiler-vyper/security/advisories/GHSA-h8jv-969m-94r4\", \"name\": \"https://github.com/matter-labs/era-compiler-vyper/security/advisories/GHSA-h8jv-969m-94r4\", \"tags\": [\"x_refsource_CONFIRM\", \"x_transferred\"]}, {\"url\": \"https://github.com/matter-labs/era-compiler-vyper/commit/8be305a1b9c68d0fd47dad3434224ed85944ca25\", \"name\": \"https://github.com/matter-labs/era-compiler-vyper/commit/8be305a1b9c68d0fd47dad3434224ed85944ca25\", \"tags\": [\"x_refsource_MISC\", \"x_transferred\"]}, {\"url\": \"https://github.com/matter-labs/era-system-contracts/blob/main/contracts/ImmutableSimulator.sol#L37\", \"name\": \"https://github.com/matter-labs/era-system-contracts/blob/main/contracts/ImmutableSimulator.sol#L37\", \"tags\": [\"x_refsource_MISC\", \"x_transferred\"]}], \"providerMetadata\": {\"orgId\": \"af854a3a-2127-422b-91ae-364da2661108\", \"shortName\": \"CVE\", \"dateUpdated\": \"2024-08-02T20:37:40.164Z\"}}, {\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2023-46232\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"none\"}, {\"Automatable\": \"yes\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2024-09-10T13:54:36.889917Z\"}}}], \"affected\": [{\"cpes\": [\"cpe:2.3:a:matter-labs:era-compiler-vyper:*:*:*:*:*:*:*:*\"], \"vendor\": \"matter-labs\", \"product\": \"era-compiler-vyper\", \"versions\": [{\"status\": \"affected\", \"version\": \"0\", \"lessThan\": \"1.3.10\", \"versionType\": \"custom\"}], \"defaultStatus\": \"unknown\"}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2024-09-10T14:02:24.487Z\"}}], \"cna\": {\"title\": \"era-compiler-vyper First Immutable Variable Initialization vulnerability\", \"source\": {\"advisory\": \"GHSA-h8jv-969m-94r4\", \"discovery\": \"UNKNOWN\"}, \"metrics\": [{\"cvssV3_1\": {\"scope\": \"UNCHANGED\", \"version\": \"3.1\", \"baseScore\": 5.3, \"attackVector\": \"NETWORK\", \"baseSeverity\": \"MEDIUM\", \"vectorString\": \"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N\", \"integrityImpact\": \"LOW\", \"userInteraction\": \"NONE\", \"attackComplexity\": \"LOW\", \"availabilityImpact\": \"NONE\", \"privilegesRequired\": \"NONE\", \"confidentialityImpact\": \"NONE\"}}], \"affected\": [{\"vendor\": \"matter-labs\", \"product\": \"era-compiler-vyper\", \"versions\": [{\"status\": \"affected\", \"version\": \"\u003c 1.3.10\"}]}], \"references\": [{\"url\": \"https://github.com/matter-labs/era-compiler-vyper/security/advisories/GHSA-h8jv-969m-94r4\", \"name\": \"https://github.com/matter-labs/era-compiler-vyper/security/advisories/GHSA-h8jv-969m-94r4\", \"tags\": [\"x_refsource_CONFIRM\"]}, {\"url\": \"https://github.com/matter-labs/era-compiler-vyper/commit/8be305a1b9c68d0fd47dad3434224ed85944ca25\", \"name\": \"https://github.com/matter-labs/era-compiler-vyper/commit/8be305a1b9c68d0fd47dad3434224ed85944ca25\", \"tags\": [\"x_refsource_MISC\"]}, {\"url\": \"https://github.com/matter-labs/era-system-contracts/blob/main/contracts/ImmutableSimulator.sol#L37\", \"name\": \"https://github.com/matter-labs/era-system-contracts/blob/main/contracts/ImmutableSimulator.sol#L37\", \"tags\": [\"x_refsource_MISC\"]}], \"descriptions\": [{\"lang\": \"en\", \"value\": \"era-compiler-vyper is the EraVM Vyper compiler for zkSync Era, a layer 2 rollup that uses zero-knowledge proofs to scale Ethereum. Prior to era-compiler-vype version 1.3.10, a bug prevented the initialization of the first immutable variable for Vyper contracts meeting certain criteria. The problem arises when there is a String or Array with more 256-bit words allocated than initialized. It results in the second word\\u2019s index unset, that is effectively set to 0, so the first immutable value with the actual 0 index is overwritten in the ImmutableSimulator. Version 1.3.10 fixes this issue by setting all indexes in advance. The problem will go away, but it will get more expensive if the user allocates a lot of uninitialized space, e.g. `String[4096]`. Upgrading and redeploying affected contracts is the only way of working around the issue.\\n\"}], \"problemTypes\": [{\"descriptions\": [{\"lang\": \"en\", \"type\": \"CWE\", \"cweId\": \"CWE-471\", \"description\": \"CWE-471: Modification of Assumed-Immutable Data (MAID)\"}]}], \"providerMetadata\": {\"orgId\": \"a0819718-46f1-4df5-94e2-005712e83aaa\", \"shortName\": \"GitHub_M\", \"dateUpdated\": \"2023-10-25T21:01:51.692Z\"}}}",
"cveMetadata": "{\"cveId\": \"CVE-2023-46232\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2024-09-10T14:02:31.551Z\", \"dateReserved\": \"2023-10-19T20:34:00.946Z\", \"assignerOrgId\": \"a0819718-46f1-4df5-94e2-005712e83aaa\", \"datePublished\": \"2023-10-25T21:01:51.692Z\", \"assignerShortName\": \"GitHub_M\"}",
"dataType": "CVE_RECORD",
"dataVersion": "5.1"
}
}
}
Loading…
Loading…
Sightings
| Author | Source | Type | Date |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or seen somewhere by the user.
- Confirmed: The vulnerability is confirmed from an analyst perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: This vulnerability was exploited and seen by the user reporting the sighting.
- Patched: This vulnerability was successfully patched by the user reporting the sighting.
- Not exploited: This vulnerability was not exploited or seen by the user reporting the sighting.
- Not confirmed: The user expresses doubt about the veracity of the vulnerability.
- Not patched: This vulnerability was not successfully patched by the user reporting the sighting.
Loading…
Loading…