CVE-2026-59694
Full vulnerability record from the local CVENow database.
Description
Improper Validation of Specified Quantity in Input in ZenHive mpp allows an unauthenticated remote client to inflate the fee-payer's gas cost per payment by a large multiplier, degrading the sponsor's operating margin. When the mpp Elixir library is configured as fee payer (fee_payer: true), MPP.Tempo.Transaction.cosign_fee_payer/3 re-signs the client-supplied base fields of the 0x76 AASigned envelope verbatim, including the EIP-2930 access list, without validating its length or contents. EIP-2930 access list entries incur intrinsic gas (~2,400 gas per address, plus 1,900 gas per storage key) charged before any opcode executes, regardless of whether the listed addresses are ever touched. A malicious client submits a valid transferWithMemo call alongside a large number of fabricated access-list entries. The server co-signs and broadcasts the transaction. The intended transfer executes normally, but the fee-payer wallet pays a large multiple of the expected gas cost with no corresponding on-chain work. At the maintainer's default of 137 access-list entries (fitting within Bandit's 10,000-byte per-header-field limit) and 100 Gwei max_fee_per_gas, per-payment gas cost rises from ~51,287 to ~380,087 gas, a 7.4x multiplier. Sustained abuse destroys the sponsor's operating margin on low-cost payments and, over time, drains the fee-payer wallet. This issue affects mpp: from 0.2.0 before 0.6.0.
View original CVE JSON
{
"id": "CVE-2026-59694",
"sourceIdentifier": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"published": "2026-07-17T11:17:13.960",
"lastModified": "2026-10-24T20:10:00.137",
"vulnStatus": "Deferred",
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "Improper Validation of Specified Quantity in Input in ZenHive mpp allows an unauthenticated remote client to inflate the fee-payer's gas cost per payment by a large multiplier, degrading the sponsor's operating margin.\n\nWhen the mpp Elixir library is configured as fee payer (fee_payer: true), MPP.Tempo.Transaction.cosign_fee_payer/3 re-signs the client-supplied base fields of the 0x76 AASigned envelope verbatim, including the EIP-2930 access list, without validating its length or contents. EIP-2930 access list entries incur intrinsic gas (~2,400 gas per address, plus 1,900 gas per storage key) charged before any opcode executes, regardless of whether the listed addresses are ever touched. A malicious client submits a valid transferWithMemo call alongside a large number of fabricated access-list entries. The server co-signs and broadcasts the transaction. The intended transfer executes normally, but the fee-payer wallet pays a large multiple of the expected gas cost with no corresponding on-chain work.\n\nAt the maintainer's default of 137 access-list entries (fitting within Bandit's 10,000-byte per-header-field limit) and 100 Gwei max_fee_per_gas, per-payment gas cost rises from ~51,287 to ~380,087 gas, a 7.4x multiplier. Sustained abuse destroys the sponsor's operating margin on low-cost payments and, over time, drains the fee-payer wallet.\n\nThis issue affects mpp: from 0.2.0 before 0.6.0."
},
{
"lang": "es",
"value": "Validación incorrecta de la cantidad especificada en la entrada en ZenHive mpp permite a un cliente remoto no autenticado inflar el costo de gas por pago del pagador de tarifas por un gran multiplicador, degradando el margen operativo del patrocinador.\n\nCuando la biblioteca Elixir mpp está configurada como pagador de tarifas (fee_payer: true), MPP.Tempo.Transaction.cosign_fee_payer/3 vuelve a firmar los campos base suministrados por el cliente del sobre 0x76 AASigned textualmente, incluyendo la lista de acceso EIP-2930, sin validar su longitud o contenido. Las entradas de la lista de acceso EIP-2930 incurren en gas intrínseco (~2.400 gas por dirección, más 1.900 gas por clave de almacenamiento) cobrado antes de que se ejecute cualquier código de operación, independientemente de si las direcciones listadas se tocan alguna vez. Un cliente malicioso envía una llamada transferWithMemo válida junto con un gran número de entradas de lista de acceso fabricadas. El servidor co-firma y transmite la transacción. La transferencia prevista se ejecuta normalmente, pero la billetera del pagador de tarifas paga un gran múltiplo del costo de gas esperado sin trabajo en cadena correspondiente.\n\nCon el valor predeterminado del mantenedor de 137 entradas de lista de acceso (encajando dentro del límite de 10.000 bytes por campo de encabezado de Bandit) y 100 Gwei max_fee_per_gas, el costo de gas por pago aumenta de ~51.287 a ~380.087 gas, un multiplicador de 7,4x. El abuso sostenido destruye el margen operativo del patrocinador en pagos de bajo costo y, con el tiempo, agota la billetera del pagador de tarifas.\n\nEste problema afecta a mpp: desde 0.2.0 antes de 0.6.0."
}
],
"affected": [
{
"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"affectedData": [
{
"vendor": "ZenHive",
"product": "mpp",
"defaultStatus": "unaffected",
"collectionURL": "https://repo.hex.pm",
"packageName": "mpp",
"cpes": [
"cpe:2.3:a:ZenHive:mpp:*:*:*:*:*:*:*:*"
],
"modules": [
"'Elixir.MPP.Tempo.Transaction'"
],
"programFiles": [
"lib/mpp/tempo/transaction.ex"
],
"programRoutines": [
{
"name": "'Elixir.MPP.Tempo.Transaction':cosign_fee_payer/3"
}
],
"repo": "https://github.com/ZenHive/mpp",
"packageURL": "pkg:hex/mpp",
"versions": [
{
"version": "0.2.0",
"lessThan": "0.6.0",
"versionType": "semver",
"status": "affected"
}
]
},
{
"vendor": "ZenHive",
"product": "mpp",
"defaultStatus": "unaffected",
"collectionURL": "https://github.com",
"packageName": "ZenHive/mpp",
"cpes": [
"cpe:2.3:a:ZenHive:mpp:*:*:*:*:*:*:*:*"
],
"modules": [
"'Elixir.MPP.Tempo.Transaction'"
],
"programFiles": [
"lib/mpp/tempo/transaction.ex"
],
"programRoutines": [
{
"name": "'Elixir.MPP.Tempo.Transaction':cosign_fee_payer/3"
}
],
"repo": "https://github.com/ZenHive/mpp",
"packageURL": "pkg:github/ZenHive/mpp",
"versions": [
{
"version": "d29d54e507918db00a5b65d90136b73166c017d7",
"lessThan": "5d6338e2334084c5f2a78cfcca474830733ed7e8",
"versionType": "git",
"status": "affected"
}
]
}
]
}
],
"metrics": {
"cvssMetricV40": [
{
"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"type": "Secondary",
"cvssData": {
"version": "4.0",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:H/VA:L/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",
"baseScore": 8.3,
"baseSeverity": "HIGH",
"attackVector": "NETWORK",
"attackComplexity": "LOW",
"attackRequirements": "PRESENT",
"privilegesRequired": "NONE",
"userInteraction": "NONE",
"vulnConfidentialityImpact": "NONE",
"vulnIntegrityImpact": "HIGH",
"vulnAvailabilityImpact": "LOW",
"subConfidentialityImpact": "NONE",
"subIntegrityImpact": "NONE",
"subAvailabilityImpact": "NONE",
"exploitMaturity": "NOT_DEFINED",
"confidentialityRequirement": "NOT_DEFINED",
"integrityRequirement": "NOT_DEFINED",
"availabilityRequirement": "NOT_DEFINED",
"modifiedAttackVector": "NOT_DEFINED",
"modifiedAttackComplexity": "NOT_DEFINED",
"modifiedAttackRequirements": "NOT_DEFINED",
"modifiedPrivilegesRequired": "NOT_DEFINED",
"modifiedUserInteraction": "NOT_DEFINED",
"modifiedVulnConfidentialityImpact": "NOT_DEFINED",
"modifiedVulnIntegrityImpact": "NOT_DEFINED",
"modifiedVulnAvailabilityImpact": "NOT_DEFINED",
"modifiedSubConfidentialityImpact": "NOT_DEFINED",
"modifiedSubIntegrityImpact": "NOT_DEFINED",
"modifiedSubAvailabilityImpact": "NOT_DEFINED",
"Safety": "NOT_DEFINED",
"Automatable": "NOT_DEFINED",
"Recovery": "NOT_DEFINED",
"valueDensity": "NOT_DEFINED",
"vulnerabilityResponseEffort": "NOT_DEFINED",
"providerUrgency": "NOT_DEFINED"
}
}
],
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"timestamp": "2026-07-17T12:22:40.105353Z",
"id": "CVE-2026-59694",
"options": [
{
"exploitation": "poc"
},
{
"automatable": "no"
},
{
"technicalImpact": "partial"
}
],
"role": "CISA Coordinator",
"version": "2.0.3"
}
}
]
},
"weaknesses": [
{
"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db",
"type": "Secondary",
"description": [
{
"lang": "en",
"value": "CWE-1284"
}
]
}
],
"references": [
{
"url": "https://cna.erlef.org/cves/CVE-2026-59694.html",
"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"
},
{
"url": "https://github.com/ZenHive/mpp/commit/5d6338e2334084c5f2a78cfcca474830733ed7e8",
"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"
},
{
"url": "https://github.com/ZenHive/mpp/security/advisories/GHSA-qpxh-ff8m-c62v",
"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"
},
{
"url": "https://osv.dev/vulnerability/EEF-CVE-2026-59694",
"source": "6b3ad84c-e1a6-4bf7-a703-f496b71e49db"
},
{
"url": "https://github.com/ZenHive/mpp/security/advisories/GHSA-qpxh-ff8m-c62v",
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0"
}
]
}