CVE-2026-59252 (GCVE-0-2026-59252)

Vulnerability from cvelistv5 – Published: 2026-07-17 10:11 – Updated: 2026-07-18 04:12
VLAI
Title
Missing gas_limit validation in mpp Tempo fee-payer enables wallet drain
Summary
Improper Validation of Specified Quantity in Input in ZenHive mpp allows an unauthenticated remote client to drain the fee-payer wallet, resulting in denial of service for legitimate clients. When the mpp Elixir library is configured as fee payer (fee_payer: true), the MPP.Methods.Tempo payment method co-signs and broadcasts a client-supplied EVM transaction without first validating that the client-supplied gas_limit is sufficient to complete the intended call. A malicious client can submit a signed transferWithMemo transaction with gas_limit deliberately set just below the amount required for successful execution. The server co-signs the transaction and broadcasts it via rpc_broadcast_sync. The transaction runs out of gas during EVM execution and reverts, but the fee-payer wallet is still charged for the burned gas while the client pays nothing and receives no resource. Repeated requests from one or more malicious clients drain the fee-payer wallet at near-zero cost to the attacker, ultimately preventing the server from sponsoring gas for legitimate payment requests. The wait_for_confirmation = false (optimistic) path is also affected: it invokes simulate_payment_call via eth_call, but that simulation omits the gas parameter and therefore does not catch out-of-gas conditions. This issue affects mpp: from 0.2.0 before 0.6.0.
SSVC
Exploitation: poc Automatable: no Technical Impact: partial
CISA Coordinator · CISA-ADP (v2.0.3)
Decision recorded 2026-07-17 12:21 UTC
CWE
  • CWE-1284 - Improper Validation of Specified Quantity in Input
Assigner
Impacted products
Vendor Product Version CPE status
ZenHive mpp Affected: 0.2.0 , < 0.6.0 (semver)
    cpe:2.3:a:ZenHive:mpp:*:*:*:*:*:*:*:*
Create a notification for this product.
ZenHive mpp Affected: d29d54e507918db00a5b65d90136b73166c017d7 , < d84e3e528db39654540c2035ea0fbdf7b950d3d1 (git)
    cpe:2.3:a:ZenHive:mpp:*:*:*:*:*:*:*:*
Create a notification for this product.
Show details on NVD website

{
  "containers": {
    "adp": [
      {
        "metrics": [
          {
            "other": {
              "content": {
                "id": "CVE-2026-59252",
                "options": [
                  {
                    "Exploitation": "poc"
                  },
                  {
                    "Automatable": "no"
                  },
                  {
                    "Technical Impact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2026-07-17T12:21:12.801804Z",
                "version": "2.0.3"
              },
              "type": "ssvc"
            }
          }
        ],
        "providerMetadata": {
          "dateUpdated": "2026-07-17T12:21:18.794Z",
          "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
          "shortName": "CISA-ADP"
        },
        "references": [
          {
            "tags": [
              "exploit"
            ],
            "url": "https://github.com/ZenHive/mpp/security/advisories/GHSA-vj8p-hp9x-gh47"
          }
        ],
        "title": "CISA ADP Vulnrichment"
      }
    ],
    "cna": {
      "affected": [
        {
          "collectionURL": "https://repo.hex.pm",
          "cpes": [
            "cpe:2.3:a:ZenHive:mpp:*:*:*:*:*:*:*:*"
          ],
          "defaultStatus": "unaffected",
          "modules": [
            "\u0027Elixir.MPP.Methods.Tempo\u0027"
          ],
          "packageName": "mpp",
          "packageURL": "pkg:hex/mpp",
          "product": "mpp",
          "programFiles": [
            "lib/mpp/methods/tempo.ex"
          ],
          "programRoutines": [
            {
              "name": "\u0027Elixir.MPP.Methods.Tempo\u0027:broadcast_and_verify/7"
            }
          ],
          "repo": "https://github.com/ZenHive/mpp",
          "vendor": "ZenHive",
          "versions": [
            {
              "lessThan": "0.6.0",
              "status": "affected",
              "version": "0.2.0",
              "versionType": "semver"
            }
          ]
        },
        {
          "collectionURL": "https://github.com",
          "cpes": [
            "cpe:2.3:a:ZenHive:mpp:*:*:*:*:*:*:*:*"
          ],
          "defaultStatus": "unaffected",
          "modules": [
            "\u0027Elixir.MPP.Methods.Tempo\u0027"
          ],
          "packageName": "ZenHive/mpp",
          "packageURL": "pkg:github/ZenHive/mpp",
          "product": "mpp",
          "programFiles": [
            "lib/mpp/methods/tempo.ex"
          ],
          "programRoutines": [
            {
              "name": "\u0027Elixir.MPP.Methods.Tempo\u0027:broadcast_and_verify/7"
            }
          ],
          "repo": "https://github.com/ZenHive/mpp",
          "vendor": "ZenHive",
          "versions": [
            {
              "lessThan": "d84e3e528db39654540c2035ea0fbdf7b950d3d1",
              "status": "affected",
              "version": "d29d54e507918db00a5b65d90136b73166c017d7",
              "versionType": "git"
            }
          ]
        }
      ],
      "configurations": [
        {
          "lang": "en",
          "supportingMedia": [
            {
              "base64": false,
              "type": "text/html",
              "value": "\u003cp\u003eThe vulnerable code path is only reachable when the \u003ctt\u003eMPP.Methods.Tempo\u003c/tt\u003e method is configured with \u003ctt\u003efee_payer: true\u003c/tt\u003e (server-side gas sponsorship). Default deployments with \u003ctt\u003efee_payer: false\u003c/tt\u003e are not affected, since the client pays for gas out of its own wallet.\u003c/p\u003e"
            }
          ],
          "value": "The vulnerable code path is only reachable when the MPP.Methods.Tempo method is configured with fee_payer: true (server-side gas sponsorship). Default deployments with fee_payer: false are not affected, since the client pays for gas out of its own wallet."
        }
      ],
      "cpeApplicability": [
        {
          "nodes": [
            {
              "cpeMatch": [
                {
                  "criteria": "cpe:2.3:a:ZenHive:mpp:*:*:*:*:*:*:*:*",
                  "versionEndExcluding": "0.6.0",
                  "versionStartIncluding": "0.2.0",
                  "vulnerable": true
                }
              ],
              "negate": false,
              "operator": "AND"
            }
          ],
          "operator": "OR"
        }
      ],
      "credits": [
        {
          "lang": "en",
          "type": "finder",
          "value": "Kian Kai Ang"
        },
        {
          "lang": "en",
          "type": "remediation developer",
          "value": "E.FU"
        },
        {
          "lang": "en",
          "type": "analyst",
          "value": "Jonatan M\u00e4nnchen / EEF"
        }
      ],
      "descriptions": [
        {
          "lang": "en",
          "supportingMedia": [
            {
              "base64": false,
              "type": "text/html",
              "value": "\u003cp\u003eImproper Validation of Specified Quantity in Input in ZenHive mpp allows an unauthenticated remote client to drain the fee-payer wallet, resulting in denial of service for legitimate clients.\u003c/p\u003e\u003cp\u003eWhen the \u003ctt\u003empp\u003c/tt\u003e Elixir library is configured as fee payer (\u003ctt\u003efee_payer: true\u003c/tt\u003e), the \u003ctt\u003eMPP.Methods.Tempo\u003c/tt\u003e payment method co-signs and broadcasts a client-supplied EVM transaction without first validating that the client-supplied \u003ctt\u003egas_limit\u003c/tt\u003e is sufficient to complete the intended call. A malicious client can submit a signed \u003ctt\u003etransferWithMemo\u003c/tt\u003e transaction with \u003ctt\u003egas_limit\u003c/tt\u003e deliberately set just below the amount required for successful execution. The server co-signs the transaction and broadcasts it via \u003ctt\u003erpc_broadcast_sync\u003c/tt\u003e. The transaction runs out of gas during EVM execution and reverts, but the fee-payer wallet is still charged for the burned gas while the client pays nothing and receives no resource. Repeated requests from one or more malicious clients drain the fee-payer wallet at near-zero cost to the attacker, ultimately preventing the server from sponsoring gas for legitimate payment requests.\u003c/p\u003e\u003cp\u003eThe \u003ctt\u003ewait_for_confirmation = false\u003c/tt\u003e (optimistic) path is also affected: it invokes \u003ctt\u003esimulate_payment_call\u003c/tt\u003e via \u003ctt\u003eeth_call\u003c/tt\u003e, but that simulation omits the \u003ctt\u003egas\u003c/tt\u003e parameter and therefore does not catch out-of-gas conditions.\u003c/p\u003e\u003cp\u003eThis issue affects mpp: from 0.2.0 before 0.6.0.\u003c/p\u003e"
            }
          ],
          "value": "Improper Validation of Specified Quantity in Input in ZenHive mpp allows an unauthenticated remote client to drain the fee-payer wallet, resulting in denial of service for legitimate clients.\n\nWhen the mpp Elixir library is configured as fee payer (fee_payer: true), the MPP.Methods.Tempo payment method co-signs and broadcasts a client-supplied EVM transaction without first validating that the client-supplied gas_limit is sufficient to complete the intended call. A malicious client can submit a signed transferWithMemo transaction with gas_limit deliberately set just below the amount required for successful execution. The server co-signs the transaction and broadcasts it via rpc_broadcast_sync. The transaction runs out of gas during EVM execution and reverts, but the fee-payer wallet is still charged for the burned gas while the client pays nothing and receives no resource. Repeated requests from one or more malicious clients drain the fee-payer wallet at near-zero cost to the attacker, ultimately preventing the server from sponsoring gas for legitimate payment requests.\n\nThe wait_for_confirmation = false (optimistic) path is also affected: it invokes simulate_payment_call via eth_call, but that simulation omits the gas parameter and therefore does not catch out-of-gas conditions.\n\nThis issue affects mpp: from 0.2.0 before 0.6.0."
        }
      ],
      "impacts": [
        {
          "capecId": "CAPEC-130",
          "descriptions": [
            {
              "lang": "en",
              "value": "CAPEC-130 Excessive Allocation"
            }
          ]
        }
      ],
      "metrics": [
        {
          "cvssV4_0": {
            "attackComplexity": "LOW",
            "attackRequirements": "PRESENT",
            "attackVector": "NETWORK",
            "baseScore": 8.2,
            "baseSeverity": "HIGH",
            "privilegesRequired": "NONE",
            "subAvailabilityImpact": "NONE",
            "subConfidentialityImpact": "NONE",
            "subIntegrityImpact": "NONE",
            "userInteraction": "NONE",
            "vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N",
            "version": "4.0",
            "vulnAvailabilityImpact": "HIGH",
            "vulnConfidentialityImpact": "NONE",
            "vulnIntegrityImpact": "NONE"
          },
          "format": "CVSS",
          "scenarios": [
            {
              "lang": "en",
              "value": "GENERAL"
            }
          ]
        }
      ],
      "problemTypes": [
        {
          "descriptions": [
            {
              "cweId": "CWE-1284",
              "description": "CWE-1284 Improper Validation of Specified Quantity in Input",
              "lang": "en",
              "type": "CWE"
            }
          ]
        }
      ],
      "providerMetadata": {
        "dateUpdated": "2026-07-18T04:12:42.459Z",
        "orgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
        "shortName": "EEF"
      },
      "references": [
        {
          "tags": [
            "vendor-advisory",
            "related"
          ],
          "url": "https://github.com/ZenHive/mpp/security/advisories/GHSA-vj8p-hp9x-gh47"
        },
        {
          "tags": [
            "related"
          ],
          "url": "https://cna.erlef.org/cves/CVE-2026-59252.html"
        },
        {
          "tags": [
            "related"
          ],
          "url": "https://osv.dev/vulnerability/EEF-CVE-2026-59252"
        },
        {
          "tags": [
            "patch"
          ],
          "url": "https://github.com/ZenHive/mpp/commit/d84e3e528db39654540c2035ea0fbdf7b950d3d1"
        }
      ],
      "source": {
        "discovery": "EXTERNAL"
      },
      "title": "Missing gas_limit validation in mpp Tempo fee-payer enables wallet drain",
      "x_generator": {
        "engine": "cvelib 1.8.0"
      }
    }
  },
  "cveMetadata": {
    "assignerOrgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
    "assignerShortName": "EEF",
    "cveId": "CVE-2026-59252",
    "datePublished": "2026-07-17T10:11:54.436Z",
    "dateReserved": "2026-07-04T04:24:03.653Z",
    "dateUpdated": "2026-07-18T04:12:42.459Z",
    "state": "PUBLISHED"
  },
  "dataType": "CVE_RECORD",
  "dataVersion": "5.2",
  "vulnerability-lookup:meta": {
    "epss": {
      "cve": "CVE-2026-59252",
      "date": "2026-09-22",
      "epss": "0.0063",
      "percentile": "0.48797"
    },
    "nvd": {
      "cve": {
        "affected": [
          {
            "affectedData": [
              {
                "collectionURL": "https://repo.hex.pm",
                "cpes": [
                  "cpe:2.3:a:ZenHive:mpp:*:*:*:*:*:*:*:*"
                ],
                "defaultStatus": "unaffected",
                "modules": [
                  "\u0027Elixir.MPP.Methods.Tempo\u0027"
                ],
                "packageName": "mpp",
                "packageURL": "pkg:hex/mpp",
                "product": "mpp",
                "programFiles": [
                  "lib/mpp/methods/tempo.ex"
                ],
                "programRoutines": [
                  {
                    "name": "\u0027Elixir.MPP.Methods.Tempo\u0027:broadcast_and_verify/7"
                  }
                ],
                "repo": "https://github.com/ZenHive/mpp",
                "vendor": "ZenHive",
                "versions": [
                  {
                    "lessThan": "0.6.0",
                    "status": "affected",
                    "version": "0.2.0",
                    "versionType": "semver"
                  }
                ]
              },
              {
                "collectionURL": "https://github.com",
                "cpes": [
                  "cpe:2.3:a:ZenHive:mpp:*:*:*:*:*:*:*:*"
                ],
                "defaultStatus": "unaffected",
                "modules": [
                  "\u0027Elixir.MPP.Methods.Tempo\u0027"
                ],
                "packageName": "ZenHive/mpp",
                "packageURL": "pkg:github/ZenHive/mpp",
                "product": "mpp",
                "programFiles": [
                  "lib/mpp/methods/tempo.ex"
                ],
                "programRoutines": [
                  {
                    "name": "\u0027Elixir.MPP.Methods.Tempo\u0027:broadcast_and_verify/7"
                  }
                ],
                "repo": "https://github.com/ZenHive/mpp",
                "vendor": "ZenHive",
                "versions": [
                  {
                    "lessThan": "d84e3e528db39654540c2035ea0fbdf7b950d3d1",
                    "status": "affected",
                    "version": "d29d54e507918db00a5b65d90136b73166c017d7",
                    "versionType": "git"
                  }
                ]
              }
            ],
            "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"
          }
        ],
        "cveTags": [],
        "descriptions": [
          {
            "lang": "en",
            "value": "Improper Validation of Specified Quantity in Input in ZenHive mpp allows an unauthenticated remote client to drain the fee-payer wallet, resulting in denial of service for legitimate clients.\n\nWhen the mpp Elixir library is configured as fee payer (fee_payer: true), the MPP.Methods.Tempo payment method co-signs and broadcasts a client-supplied EVM transaction without first validating that the client-supplied gas_limit is sufficient to complete the intended call. A malicious client can submit a signed transferWithMemo transaction with gas_limit deliberately set just below the amount required for successful execution. The server co-signs the transaction and broadcasts it via rpc_broadcast_sync. The transaction runs out of gas during EVM execution and reverts, but the fee-payer wallet is still charged for the burned gas while the client pays nothing and receives no resource. Repeated requests from one or more malicious clients drain the fee-payer wallet at near-zero cost to the attacker, ultimately preventing the server from sponsoring gas for legitimate payment requests.\n\nThe wait_for_confirmation = false (optimistic) path is also affected: it invokes simulate_payment_call via eth_call, but that simulation omits the gas parameter and therefore does not catch out-of-gas conditions.\n\nThis issue affects mpp: from 0.2.0 before 0.6.0."
          }
        ],
        "id": "CVE-2026-59252",
        "lastModified": "2026-07-17T18:09:55.213",
        "metrics": {
          "cvssMetricV40": [
            {
              "cvssData": {
                "Automatable": "NOT_DEFINED",
                "Recovery": "NOT_DEFINED",
                "Safety": "NOT_DEFINED",
                "attackComplexity": "LOW",
                "attackRequirements": "PRESENT",
                "attackVector": "NETWORK",
                "availabilityRequirement": "NOT_DEFINED",
                "baseScore": 8.2,
                "baseSeverity": "HIGH",
                "confidentialityRequirement": "NOT_DEFINED",
                "exploitMaturity": "NOT_DEFINED",
                "integrityRequirement": "NOT_DEFINED",
                "modifiedAttackComplexity": "NOT_DEFINED",
                "modifiedAttackRequirements": "NOT_DEFINED",
                "modifiedAttackVector": "NOT_DEFINED",
                "modifiedPrivilegesRequired": "NOT_DEFINED",
                "modifiedSubAvailabilityImpact": "NOT_DEFINED",
                "modifiedSubConfidentialityImpact": "NOT_DEFINED",
                "modifiedSubIntegrityImpact": "NOT_DEFINED",
                "modifiedUserInteraction": "NOT_DEFINED",
                "modifiedVulnAvailabilityImpact": "NOT_DEFINED",
                "modifiedVulnConfidentialityImpact": "NOT_DEFINED",
                "modifiedVulnIntegrityImpact": "NOT_DEFINED",
                "privilegesRequired": "NONE",
                "providerUrgency": "NOT_DEFINED",
                "subAvailabilityImpact": "NONE",
                "subConfidentialityImpact": "NONE",
                "subIntegrityImpact": "NONE",
                "userInteraction": "NONE",
                "valueDensity": "NOT_DEFINED",
                "vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X",
                "version": "4.0",
                "vulnAvailabilityImpact": "HIGH",
                "vulnConfidentialityImpact": "NONE",
                "vulnIntegrityImpact": "NONE",
                "vulnerabilityResponseEffort": "NOT_DEFINED"
              },
              "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
              "type": "Secondary"
            }
          ],
          "ssvcV203": [
            {
              "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
              "ssvcData": {
                "id": "CVE-2026-59252",
                "options": [
                  {
                    "exploitation": "poc"
                  },
                  {
                    "automatable": "no"
                  },
                  {
                    "technicalImpact": "partial"
                  }
                ],
                "role": "CISA Coordinator",
                "timestamp": "2026-07-17T12:21:12.801804Z",
                "version": "2.0.3"
              }
            }
          ]
        },
        "published": "2026-07-17T11:17:13.803",
        "references": [
          {
            "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
            "url": "https://cna.erlef.org/cves/CVE-2026-59252.html"
          },
          {
            "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
            "url": "https://github.com/ZenHive/mpp/commit/d84e3e528db39654540c2035ea0fbdf7b950d3d1"
          },
          {
            "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
            "url": "https://github.com/ZenHive/mpp/security/advisories/GHSA-vj8p-hp9x-gh47"
          },
          {
            "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
            "url": "https://osv.dev/vulnerability/EEF-CVE-2026-59252"
          },
          {
            "source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
            "url": "https://github.com/ZenHive/mpp/security/advisories/GHSA-vj8p-hp9x-gh47"
          }
        ],
        "sourceIdentifier": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
        "vulnStatus": "Deferred",
        "weaknesses": [
          {
            "description": [
              {
                "lang": "en",
                "value": "CWE-1284"
              }
            ],
            "source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
            "type": "Secondary"
          }
        ]
      }
    },
    "vulnrichment": {
      "containers": {
        "adp": [
          {
            "metrics": [
              {
                "other": {
                  "content": {
                    "id": "CVE-2026-59252",
                    "options": [
                      {
                        "Exploitation": "poc"
                      },
                      {
                        "Automatable": "no"
                      },
                      {
                        "Technical Impact": "partial"
                      }
                    ],
                    "role": "CISA Coordinator",
                    "timestamp": "2026-07-17T12:21:12.801804Z",
                    "version": "2.0.3"
                  },
                  "type": "ssvc"
                }
              }
            ],
            "providerMetadata": {
              "dateUpdated": "2026-07-17T12:20:25.349Z",
              "orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
              "shortName": "CISA-ADP"
            },
            "references": [
              {
                "tags": [
                  "exploit"
                ],
                "url": "https://github.com/ZenHive/mpp/security/advisories/GHSA-vj8p-hp9x-gh47"
              }
            ],
            "title": "CISA ADP Vulnrichment"
          }
        ],
        "cna": {
          "affected": [
            {
              "collectionURL": "https://repo.hex.pm",
              "cpes": [
                "cpe:2.3:a:ZenHive:mpp:*:*:*:*:*:*:*:*"
              ],
              "defaultStatus": "unaffected",
              "modules": [
                "\u0027Elixir.MPP.Methods.Tempo\u0027"
              ],
              "packageName": "mpp",
              "packageURL": "pkg:hex/mpp",
              "product": "mpp",
              "programFiles": [
                "lib/mpp/methods/tempo.ex"
              ],
              "programRoutines": [
                {
                  "name": "\u0027Elixir.MPP.Methods.Tempo\u0027:broadcast_and_verify/7"
                }
              ],
              "repo": "https://github.com/ZenHive/mpp",
              "vendor": "ZenHive",
              "versions": [
                {
                  "lessThan": "0.6.0",
                  "status": "affected",
                  "version": "0.2.0",
                  "versionType": "semver"
                }
              ]
            },
            {
              "collectionURL": "https://github.com",
              "cpes": [
                "cpe:2.3:a:ZenHive:mpp:*:*:*:*:*:*:*:*"
              ],
              "defaultStatus": "unaffected",
              "modules": [
                "\u0027Elixir.MPP.Methods.Tempo\u0027"
              ],
              "packageName": "ZenHive/mpp",
              "packageURL": "pkg:github/ZenHive/mpp",
              "product": "mpp",
              "programFiles": [
                "lib/mpp/methods/tempo.ex"
              ],
              "programRoutines": [
                {
                  "name": "\u0027Elixir.MPP.Methods.Tempo\u0027:broadcast_and_verify/7"
                }
              ],
              "repo": "https://github.com/ZenHive/mpp",
              "vendor": "ZenHive",
              "versions": [
                {
                  "lessThan": "d84e3e528db39654540c2035ea0fbdf7b950d3d1",
                  "status": "affected",
                  "version": "d29d54e507918db00a5b65d90136b73166c017d7",
                  "versionType": "git"
                }
              ]
            }
          ],
          "configurations": [
            {
              "lang": "en",
              "supportingMedia": [
                {
                  "base64": false,
                  "type": "text/html",
                  "value": "\u003cp\u003eThe vulnerable code path is only reachable when the \u003ctt\u003eMPP.Methods.Tempo\u003c/tt\u003e method is configured with \u003ctt\u003efee_payer: true\u003c/tt\u003e (server-side gas sponsorship). Default deployments with \u003ctt\u003efee_payer: false\u003c/tt\u003e are not affected, since the client pays for gas out of its own wallet.\u003c/p\u003e"
                }
              ],
              "value": "The vulnerable code path is only reachable when the MPP.Methods.Tempo method is configured with fee_payer: true (server-side gas sponsorship). Default deployments with fee_payer: false are not affected, since the client pays for gas out of its own wallet."
            }
          ],
          "cpeApplicability": [
            {
              "nodes": [
                {
                  "cpeMatch": [
                    {
                      "criteria": "cpe:2.3:a:ZenHive:mpp:*:*:*:*:*:*:*:*",
                      "versionEndExcluding": "0.6.0",
                      "versionStartIncluding": "0.2.0",
                      "vulnerable": true
                    }
                  ],
                  "negate": false,
                  "operator": "AND"
                }
              ],
              "operator": "OR"
            }
          ],
          "credits": [
            {
              "lang": "en",
              "type": "finder",
              "value": "Kian Kai Ang"
            },
            {
              "lang": "en",
              "type": "remediation developer",
              "value": "E.FU"
            },
            {
              "lang": "en",
              "type": "analyst",
              "value": "Jonatan M\u00e4nnchen / EEF"
            }
          ],
          "descriptions": [
            {
              "lang": "en",
              "supportingMedia": [
                {
                  "base64": false,
                  "type": "text/html",
                  "value": "\u003cp\u003eImproper Validation of Specified Quantity in Input in ZenHive mpp allows an unauthenticated remote client to drain the fee-payer wallet, resulting in denial of service for legitimate clients.\u003c/p\u003e\u003cp\u003eWhen the \u003ctt\u003empp\u003c/tt\u003e Elixir library is configured as fee payer (\u003ctt\u003efee_payer: true\u003c/tt\u003e), the \u003ctt\u003eMPP.Methods.Tempo\u003c/tt\u003e payment method co-signs and broadcasts a client-supplied EVM transaction without first validating that the client-supplied \u003ctt\u003egas_limit\u003c/tt\u003e is sufficient to complete the intended call. A malicious client can submit a signed \u003ctt\u003etransferWithMemo\u003c/tt\u003e transaction with \u003ctt\u003egas_limit\u003c/tt\u003e deliberately set just below the amount required for successful execution. The server co-signs the transaction and broadcasts it via \u003ctt\u003erpc_broadcast_sync\u003c/tt\u003e. The transaction runs out of gas during EVM execution and reverts, but the fee-payer wallet is still charged for the burned gas while the client pays nothing and receives no resource. Repeated requests from one or more malicious clients drain the fee-payer wallet at near-zero cost to the attacker, ultimately preventing the server from sponsoring gas for legitimate payment requests.\u003c/p\u003e\u003cp\u003eThe \u003ctt\u003ewait_for_confirmation = false\u003c/tt\u003e (optimistic) path is also affected: it invokes \u003ctt\u003esimulate_payment_call\u003c/tt\u003e via \u003ctt\u003eeth_call\u003c/tt\u003e, but that simulation omits the \u003ctt\u003egas\u003c/tt\u003e parameter and therefore does not catch out-of-gas conditions.\u003c/p\u003e\u003cp\u003eThis issue affects mpp: from 0.2.0 before 0.6.0.\u003c/p\u003e"
                }
              ],
              "value": "Improper Validation of Specified Quantity in Input in ZenHive mpp allows an unauthenticated remote client to drain the fee-payer wallet, resulting in denial of service for legitimate clients.\n\nWhen the mpp Elixir library is configured as fee payer (fee_payer: true), the MPP.Methods.Tempo payment method co-signs and broadcasts a client-supplied EVM transaction without first validating that the client-supplied gas_limit is sufficient to complete the intended call. A malicious client can submit a signed transferWithMemo transaction with gas_limit deliberately set just below the amount required for successful execution. The server co-signs the transaction and broadcasts it via rpc_broadcast_sync. The transaction runs out of gas during EVM execution and reverts, but the fee-payer wallet is still charged for the burned gas while the client pays nothing and receives no resource. Repeated requests from one or more malicious clients drain the fee-payer wallet at near-zero cost to the attacker, ultimately preventing the server from sponsoring gas for legitimate payment requests.\n\nThe wait_for_confirmation = false (optimistic) path is also affected: it invokes simulate_payment_call via eth_call, but that simulation omits the gas parameter and therefore does not catch out-of-gas conditions.\n\nThis issue affects mpp: from 0.2.0 before 0.6.0."
            }
          ],
          "impacts": [
            {
              "capecId": "CAPEC-130",
              "descriptions": [
                {
                  "lang": "en",
                  "value": "CAPEC-130 Excessive Allocation"
                }
              ]
            }
          ],
          "metrics": [
            {
              "cvssV4_0": {
                "attackComplexity": "LOW",
                "attackRequirements": "PRESENT",
                "attackVector": "NETWORK",
                "baseScore": 8.2,
                "baseSeverity": "HIGH",
                "privilegesRequired": "NONE",
                "subAvailabilityImpact": "NONE",
                "subConfidentialityImpact": "NONE",
                "subIntegrityImpact": "NONE",
                "userInteraction": "NONE",
                "vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N",
                "version": "4.0",
                "vulnAvailabilityImpact": "HIGH",
                "vulnConfidentialityImpact": "NONE",
                "vulnIntegrityImpact": "NONE"
              },
              "format": "CVSS",
              "scenarios": [
                {
                  "lang": "en",
                  "value": "GENERAL"
                }
              ]
            }
          ],
          "problemTypes": [
            {
              "descriptions": [
                {
                  "cweId": "CWE-1284",
                  "description": "CWE-1284 Improper Validation of Specified Quantity in Input",
                  "lang": "en",
                  "type": "CWE"
                }
              ]
            }
          ],
          "providerMetadata": {
            "dateUpdated": "2026-07-18T04:12:42.459Z",
            "orgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
            "shortName": "EEF"
          },
          "references": [
            {
              "tags": [
                "vendor-advisory",
                "related"
              ],
              "url": "https://github.com/ZenHive/mpp/security/advisories/GHSA-vj8p-hp9x-gh47"
            },
            {
              "tags": [
                "related"
              ],
              "url": "https://cna.erlef.org/cves/CVE-2026-59252.html"
            },
            {
              "tags": [
                "related"
              ],
              "url": "https://osv.dev/vulnerability/EEF-CVE-2026-59252"
            },
            {
              "tags": [
                "patch"
              ],
              "url": "https://github.com/ZenHive/mpp/commit/d84e3e528db39654540c2035ea0fbdf7b950d3d1"
            }
          ],
          "source": {
            "discovery": "EXTERNAL"
          },
          "title": "Missing gas_limit validation in mpp Tempo fee-payer enables wallet drain",
          "x_generator": {
            "engine": "cvelib 1.8.0"
          }
        }
      },
      "cveMetadata": {
        "assignerOrgId": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
        "assignerShortName": "EEF",
        "cveId": "CVE-2026-59252",
        "datePublished": "2026-07-17T10:11:54.436Z",
        "dateReserved": "2026-07-04T04:24:03.653Z",
        "dateUpdated": "2026-07-18T04:12:42.459Z",
        "state": "PUBLISHED"
      },
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }
  }
}



Log in or create an account to share your comment.




Tags
Taxonomy of the tags.


Loading…

Loading…

Loading…

Forecast uses a logistic model when the trend is rising, or an exponential decay model when the trend is falling. Fitted via linearized least squares.

Sightings

Author Source Type Date Other

Nomenclature

  • Seen: The vulnerability was mentioned, discussed, or observed by the user.
  • Confirmed: The vulnerability has been validated from an analyst's perspective.
  • Published Proof of Concept: A public proof of concept is available for this vulnerability.
  • Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
  • Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
  • Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
  • Not confirmed: The user expressed doubt about the validity of the vulnerability.
  • Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.

Loading…

Loading…

Loading…

Related by attack behaviour

Vulnerabilities whose description is nearest to this one in the vector space of the CIRCL/vulnerability-attack-technique-biencoder model. This is a similarity search over the bi-encoder space (plain cosine), not a classification, and it has no measured accuracy.


Loading…