mppx-condition-gate: Free-access path grants on a self-declared wallet without proving control
mppx-condition-gate provides conditional free-access wrappers for mppx payment methods. Prior to @insumermodel/mppx-condition-gate 3.0.0 and @insumermodel/mppx-token-gate 1.0.4, the packages read a wallet address from the client-supplied credential.source, checked whether that public address met configured on-chain conditions, and returned a successful free-access receipt without invoking the wrapped payment verifier or proving that the caller controlled the wallet. An unauthenticated attacker could name any qualifying wallet and obtain content that should require payment, and cached grants could be reused for the configured cache lifetime. The corrected packages prevent free-access authorization unless payer control has been established. These issues are fixed in @insumermodel/mppx-condition-gate 3.0.0 and @insumermodel/mppx-token-gate 1.0.4.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-104891
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 4 Nov 2026, 16:16 UTC · Revision 1
Source evidence
mppx-condition-gate: Free-access path grants on a self-declared wallet without proving control
core-osv · Original sourcePublished 5 Oct 2026, 15:55 UTC
mppx-condition-gate provides conditional free-access wrappers for mppx payment methods. Prior to @insumermodel/mppx-condition-gate 3.0.0 and @insumermodel/mppx-token-gate 1.0.4, the packages read a wallet address from the client-supplied credential.source, checked whether that public address met configured on-chain conditions, and returned a successful free-access receipt without invoking the wrapped payment verifier or proving that the caller controlled the wallet. An unauthenticated attacker could name any qualifying wallet and obtain content that should require payment, and cached grants could be reused for the configured cache lifetime. The corrected packages prevent free-access authorization unless payer control has been established. These issues are fixed in @insumermodel/mppx-condition-gate 3.0.0 and @insumermodel/mppx-token-gate 1.0.4.
osv:CVE-2026-104891
Complete source record
{
"id": "a43abc9f22bea2e3429084f1cdde9834bce77ad3ef5f427da688f80e0768a1c8",
"url": "https://osv.dev/vulnerability/CVE-2026-104891",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "mppx-condition-gate: Free-access path grants on a self-declared wallet without proving control",
"summary": "mppx-condition-gate provides conditional free-access wrappers for mppx payment methods. Prior to @insumermodel/mppx-condition-gate 3.0.0 and @insumermodel/mppx-token-gate 1.0.4, the packages read a wallet address from the client-supplied credential.source, checked whether that public address met configured on-chain conditions, and returned a successful free-access receipt without invoking the wrapped payment verifier or proving that the caller controlled the wallet. An unauthenticated attacker could name any qualifying wallet and obtain content that should require payment, and cached grants could be reused for the configured cache lifetime. The corrected packages prevent free-access authorization unless payer control has been established. These issues are fixed in @insumermodel/mppx-condition-gate 3.0.0 and @insumermodel/mppx-token-gate 1.0.4.",
"evidence": "osv:CVE-2026-104891",
"products": [],
"severity": "high",
"structured": {
"id": "CVE-2026-104891",
"aliases": [
"CVE-2026-104891",
"GHSA-jg6q-3qfh-r9f8"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/insumerapi/mppx-condition-gate",
"type": "GIT",
"events": [
{
"introduced": "0"
},
{
"fixed": "b1d9935a57ba6d32da49eead1bfb459ad0cd55ab"
},
{
"fixed": "ec43a2fcd443a0fa102b6d4203abed2b785bd954"
}
],
"database_specific": {
"extracted_events": [
{
"range": [
{
"introduced": "0"
},
{
"fixed": "b1d9935a57ba6d32da49eead1bfb459ad0cd55ab"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StringRangeExpression"
},
{
"range": [
{
"fixed": "b1d9935a57ba6d32da49eead1bfb459ad0cd55ab"
}
],
"source": "REFERENCES_COMMIT"
},
{
"range": [
{
"fixed": "ec43a2fcd443a0fa102b6d4203abed2b785bd954"
}
],
"source": "REFERENCES_COMMIT"
}
]
}
}
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-104891.json"
}
}
],
"modified": "2026-10-28T02:30:36.824803081Z",
"provider": "osv",
"references": [
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/104xxx/CVE-2026-104891.json",
"https://github.com/insumerapi/mppx-condition-gate/security/advisories/GHSA-jg6q-3qfh-r9f8",
"https://nvd.nist.gov/vuln/detail/CVE-2026-104891",
"https://github.com/insumerapi/mppx-condition-gate/commit/b1d9935a57ba6d32da49eead1bfb459ad0cd55ab",
"https://github.com/insumerapi/mppx-condition-gate/commit/ec43a2fcd443a0fa102b6d4203abed2b785bd954"
],
"provider_metadata": {
"cwe_ids": [
"CWE-290",
"CWE-863"
],
"cna_assigner": "GitHub_M",
"unresolved_ranges": [
{
"extracted_events": [
{
"range": [
{
"fixed": "3.0.0"
},
{
"fixed": "1.0.4"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StringRangeExpression"
}
]
}
],
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/104xxx/CVE-2026-104891.json"
}
},
"related_cves": [
{
"value": "CVE-2026-104891",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 504237,
"published_at": "2026-10-05T15:55:28.731+00:00"
}