GHSA-8X4M-QW58-3PCX
Vulnerability from github – Published: 2026-03-29 15:15 – Updated: 2026-03-29 15:15Impact
Multiple vulnerabilities were discovered in tempo/charge and tempo/session which allowed for undesirable behaviors, including:
- Replaying tempo/charge transaction hashes across push/pull modes, across charge/session endpoints, and via concurrent requests
- Performing free tempo/charge requests due to missing transfer log verification in pull-mode
- Replaying tempo/charge credentials across routes via cross-route scope confusion (memo/splits not included in scope binding)
- Manipulating the fee payer of a tempo/charge handler into paying for requests (missing sender signature before co-signing)
- Bypassing tempo/session voucher signature verification
- Piggybacking off existing tempo/session channels via settle voucher reuse and weak channel ID binding
- Performing free tempo/session requests by exploiting channel reopen without on-chain settled state
- Accepting deductions on finalized tempo/session channels
- Bypassing payment on free routes via method-mismatch fallback
- Griefing tempo/session channels via force-close detection bypass (closeRequestedAt not persisted)
Patches
Fixed in 0.4.8.
Workarounds
There are no workarounds available for these vulnerabilities.
{
"affected": [
{
"package": {
"ecosystem": "npm",
"name": "mppx"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "0.4.8"
}
],
"type": "ECOSYSTEM"
}
]
}
],
"aliases": [],
"database_specific": {
"cwe_ids": [
"CWE-288",
"CWE-294",
"CWE-345"
],
"github_reviewed": true,
"github_reviewed_at": "2026-03-29T15:15:36Z",
"nvd_published_at": null,
"severity": "CRITICAL"
},
"details": "### Impact\n\nMultiple vulnerabilities were discovered in `tempo/charge` and `tempo/session` which allowed for undesirable behaviors, including:\n- Replaying `tempo/charge` transaction hashes across push/pull modes, across charge/session endpoints, and via concurrent requests\n- Performing free `tempo/charge` requests due to missing transfer log verification in pull-mode\n- Replaying `tempo/charge` credentials across routes via cross-route scope confusion (`memo`/`splits` not included in scope binding)\n- Manipulating the fee payer of a `tempo/charge` handler into paying for requests (missing sender signature before co-signing)\n- Bypassing `tempo/session` voucher signature verification\n- Piggybacking off existing `tempo/session` channels via settle voucher reuse and weak channel ID binding\n- Performing free `tempo/session` requests by exploiting channel reopen without on-chain settled state\n- Accepting deductions on finalized `tempo/session` channels\n- Bypassing payment on free routes via method-mismatch fallback\n- Griefing `tempo/session` channels via force-close detection bypass (`closeRequestedAt` not persisted)\n\n### Patches\n\nFixed in 0.4.8.\n\n### Workarounds\n\nThere are no workarounds available for these vulnerabilities.",
"id": "GHSA-8x4m-qw58-3pcx",
"modified": "2026-03-29T15:15:36Z",
"published": "2026-03-29T15:15:36Z",
"references": [
{
"type": "WEB",
"url": "https://github.com/wevm/mppx/security/advisories/GHSA-8x4m-qw58-3pcx"
},
{
"type": "PACKAGE",
"url": "https://github.com/wevm/mppx"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:H/SI:H/SA:N",
"type": "CVSS_V4"
}
],
"summary": "mppx has multiple payment bypass and griefing vulnerabilities"
}
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.