Search

Find a vulnerability

Search criteria

    2 vulnerabilities found for commerce-mollie by craftcms

    CVE-2026-115937 (GCVE-0-2026-115937)

    Vulnerability from nvd – Published: 2026-10-23 21:50 – Updated: 2026-10-23 21:50
    VLAI
    Title
    Unauthenticated payment reuse allows unpaid orders to be marked as paid
    Summary
    The Mollie webhook endpoint accepts two independent, attacker-controlled parameters and never verifies that they belong together: * commerceTransactionHash — selects which Craft Commerce transaction is completed * id — selects which Mollie payment is queried for its status An unauthenticated attacker holding any paid Mollie payment ID from the merchant’s account can pair it with any transaction hash. Commerce queries Mollie, sees status: paid, and marks the target transaction successful for that transaction’s full amount, regardless of how much was actually paid.
    CWE
    • CWE-345 - Insufficient Verification of Data Authenticity
    Assigner
    Hackrate CNA under the icscert root
    CNA scorecard B 87/100 over 10 records in the last 180 days details
    References
    Impacted products
    Vendor Product Version
    craftcms commerce-mollie Affected: 2.1.1 , < 4.4.3 (semver)
        cpe:2.3:a:craftcms:commerce-mollie:*:*:*:*:*:*:*:*
    Create a notification for this product.
    Show details on NVD website

    {
      "containers": {
        "cna": {
          "affected": [
            {
              "collectionURL": "https://packagist.org",
              "defaultStatus": "unaffected",
              "packageName": "craftcms/commerce-mollie",
              "product": "commerce-mollie",
              "vendor": "craftcms",
              "versions": [
                {
                  "lessThan": "4.4.3",
                  "status": "affected",
                  "version": "2.1.1",
                  "versionType": "semver"
                }
              ]
            }
          ],
          "cpeApplicability": [
            {
              "nodes": [
                {
                  "cpeMatch": [
                    {
                      "criteria": "cpe:2.3:a:craftcms:commerce-mollie:*:*:*:*:*:*:*:*",
                      "versionEndExcluding": "4.4.3",
                      "versionStartIncluding": "2.1.1",
                      "vulnerable": true
                    }
                  ],
                  "negate": false,
                  "operator": "OR"
                }
              ],
              "operator": "OR"
            }
          ],
          "credits": [
            {
              "lang": "en",
              "type": "reporter",
              "value": "@ouribe"
            },
            {
              "lang": "en",
              "type": "coordinator",
              "value": "Hackrate"
            }
          ],
          "descriptions": [
            {
              "lang": "en",
              "supportingMedia": [
                {
                  "base64": false,
                  "type": "text/html",
                  "value": "\u003cp\u003eThe Mollie webhook endpoint accepts two independent, attacker-controlled parameters and never verifies that they belong together:\u003c/p\u003e\u003cul\u003e\u003cli\u003e\u003ccode\u003ecommerceTransactionHash\u003c/code\u003e\u0026nbsp;\u2014 selects which Craft Commerce transaction is completed\u003c/li\u003e\u003cli\u003e\u003ccode\u003eid\u003c/code\u003e\u0026nbsp;\u2014 selects which Mollie payment is queried for its status\u003c/li\u003e\u003c/ul\u003e\u003cp\u003eAn unauthenticated attacker holding any paid Mollie payment ID from the merchant\u2019s account can pair it with any transaction hash.\u003c/p\u003e\u003cp\u003eCommerce queries Mollie, sees\u0026nbsp;\u003ccode\u003estatus: paid\u003c/code\u003e, and marks the target transaction successful for that transaction\u2019s full\u003cbr\u003eamount, regardless of how much was actually paid.\u003c/p\u003e"
                }
              ],
              "value": "The Mollie webhook endpoint accepts two independent, attacker-controlled parameters and never verifies that they belong together:\n\n  *  commerceTransactionHash\u00a0\u2014 selects which Craft Commerce transaction is completed\n  *  id\u00a0\u2014 selects which Mollie payment is queried for its status\n\n\n\n\nAn unauthenticated attacker holding any paid Mollie payment ID from the merchant\u2019s account can pair it with any transaction hash.\n\n\n\nCommerce queries Mollie, sees\u00a0status: paid, and marks the target transaction successful for that transaction\u2019s full\namount, regardless of how much was actually paid."
            }
          ],
          "metrics": [
            {
              "cvssV4_0": {
                "Automatable": "NOT_DEFINED",
                "Recovery": "NOT_DEFINED",
                "Safety": "NOT_DEFINED",
                "attackComplexity": "LOW",
                "attackRequirements": "NONE",
                "attackVector": "NETWORK",
                "baseScore": 8.7,
                "baseSeverity": "HIGH",
                "exploitMaturity": "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:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N",
                "version": "4.0",
                "vulnAvailabilityImpact": "NONE",
                "vulnConfidentialityImpact": "NONE",
                "vulnIntegrityImpact": "HIGH",
                "vulnerabilityResponseEffort": "NOT_DEFINED"
              },
              "format": "CVSS",
              "scenarios": [
                {
                  "lang": "en",
                  "value": "GENERAL"
                }
              ]
            },
            {
              "cvssV3_1": {
                "attackComplexity": "LOW",
                "attackVector": "NETWORK",
                "availabilityImpact": "NONE",
                "baseScore": 7.5,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "NONE",
                "integrityImpact": "HIGH",
                "privilegesRequired": "NONE",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N",
                "version": "3.1"
              },
              "format": "CVSS",
              "scenarios": [
                {
                  "lang": "en",
                  "value": "GENERAL"
                }
              ]
            }
          ],
          "problemTypes": [
            {
              "descriptions": [
                {
                  "cweId": "CWE-345",
                  "description": "CWE-345 Insufficient Verification of Data Authenticity",
                  "lang": "en",
                  "type": "CWE"
                }
              ]
            }
          ],
          "providerMetadata": {
            "dateUpdated": "2026-10-23T21:50:13.188Z",
            "orgId": "7004884b-51e2-48e8-b4a2-5ca29e80453e",
            "shortName": "Hackrate"
          },
          "references": [
            {
              "tags": [
                "third-party-advisory",
                "technical-description",
                "mitigation"
              ],
              "url": "https://www.hckrt.com/hacktivity/HCKRT-6RB2BC"
            },
            {
              "tags": [
                "release-notes"
              ],
              "url": "https://github.com/craftcms/commerce-mollie/releases/tag/4.4.3"
            },
            {
              "tags": [
                "product"
              ],
              "url": "https://github.com/craftcms/commerce-mollie"
            },
            {
              "tags": [
                "third-party-advisory"
              ],
              "url": "https://github.com/craftcms/commerce-mollie/security/advisories/GHSA-3qcx-mjf6-48vj"
            }
          ],
          "source": {
            "advisory": "GHSA-3qcx-mjf6-48vj",
            "discovery": "UNKNOWN"
          },
          "title": "Unauthenticated payment reuse allows unpaid orders to be marked as paid",
          "x_generator": {
            "engine": "Vulnogram 1.0.4"
          }
        }
      },
      "cveMetadata": {
        "assignerOrgId": "7004884b-51e2-48e8-b4a2-5ca29e80453e",
        "assignerShortName": "Hackrate",
        "cveId": "CVE-2026-115937",
        "datePublished": "2026-10-23T21:50:13.188Z",
        "dateReserved": "2026-10-23T21:25:09.997Z",
        "dateUpdated": "2026-10-23T21:50:13.188Z",
        "state": "PUBLISHED"
      },
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }

    CVE-2026-115937 (GCVE-0-2026-115937)

    Vulnerability from cvelistv5 – Published: 2026-10-23 21:50 – Updated: 2026-10-23 21:50
    VLAI
    Title
    Unauthenticated payment reuse allows unpaid orders to be marked as paid
    Summary
    The Mollie webhook endpoint accepts two independent, attacker-controlled parameters and never verifies that they belong together: * commerceTransactionHash — selects which Craft Commerce transaction is completed * id — selects which Mollie payment is queried for its status An unauthenticated attacker holding any paid Mollie payment ID from the merchant’s account can pair it with any transaction hash. Commerce queries Mollie, sees status: paid, and marks the target transaction successful for that transaction’s full amount, regardless of how much was actually paid.
    CWE
    • CWE-345 - Insufficient Verification of Data Authenticity
    Assigner
    Hackrate CNA under the icscert root
    CNA scorecard B 87/100 over 10 records in the last 180 days details
    References
    Impacted products
    Vendor Product Version
    craftcms commerce-mollie Affected: 2.1.1 , < 4.4.3 (semver)
        cpe:2.3:a:craftcms:commerce-mollie:*:*:*:*:*:*:*:*
    Create a notification for this product.
    Show details on NVD website

    {
      "containers": {
        "cna": {
          "affected": [
            {
              "collectionURL": "https://packagist.org",
              "defaultStatus": "unaffected",
              "packageName": "craftcms/commerce-mollie",
              "product": "commerce-mollie",
              "vendor": "craftcms",
              "versions": [
                {
                  "lessThan": "4.4.3",
                  "status": "affected",
                  "version": "2.1.1",
                  "versionType": "semver"
                }
              ]
            }
          ],
          "cpeApplicability": [
            {
              "nodes": [
                {
                  "cpeMatch": [
                    {
                      "criteria": "cpe:2.3:a:craftcms:commerce-mollie:*:*:*:*:*:*:*:*",
                      "versionEndExcluding": "4.4.3",
                      "versionStartIncluding": "2.1.1",
                      "vulnerable": true
                    }
                  ],
                  "negate": false,
                  "operator": "OR"
                }
              ],
              "operator": "OR"
            }
          ],
          "credits": [
            {
              "lang": "en",
              "type": "reporter",
              "value": "@ouribe"
            },
            {
              "lang": "en",
              "type": "coordinator",
              "value": "Hackrate"
            }
          ],
          "descriptions": [
            {
              "lang": "en",
              "supportingMedia": [
                {
                  "base64": false,
                  "type": "text/html",
                  "value": "\u003cp\u003eThe Mollie webhook endpoint accepts two independent, attacker-controlled parameters and never verifies that they belong together:\u003c/p\u003e\u003cul\u003e\u003cli\u003e\u003ccode\u003ecommerceTransactionHash\u003c/code\u003e\u0026nbsp;\u2014 selects which Craft Commerce transaction is completed\u003c/li\u003e\u003cli\u003e\u003ccode\u003eid\u003c/code\u003e\u0026nbsp;\u2014 selects which Mollie payment is queried for its status\u003c/li\u003e\u003c/ul\u003e\u003cp\u003eAn unauthenticated attacker holding any paid Mollie payment ID from the merchant\u2019s account can pair it with any transaction hash.\u003c/p\u003e\u003cp\u003eCommerce queries Mollie, sees\u0026nbsp;\u003ccode\u003estatus: paid\u003c/code\u003e, and marks the target transaction successful for that transaction\u2019s full\u003cbr\u003eamount, regardless of how much was actually paid.\u003c/p\u003e"
                }
              ],
              "value": "The Mollie webhook endpoint accepts two independent, attacker-controlled parameters and never verifies that they belong together:\n\n  *  commerceTransactionHash\u00a0\u2014 selects which Craft Commerce transaction is completed\n  *  id\u00a0\u2014 selects which Mollie payment is queried for its status\n\n\n\n\nAn unauthenticated attacker holding any paid Mollie payment ID from the merchant\u2019s account can pair it with any transaction hash.\n\n\n\nCommerce queries Mollie, sees\u00a0status: paid, and marks the target transaction successful for that transaction\u2019s full\namount, regardless of how much was actually paid."
            }
          ],
          "metrics": [
            {
              "cvssV4_0": {
                "Automatable": "NOT_DEFINED",
                "Recovery": "NOT_DEFINED",
                "Safety": "NOT_DEFINED",
                "attackComplexity": "LOW",
                "attackRequirements": "NONE",
                "attackVector": "NETWORK",
                "baseScore": 8.7,
                "baseSeverity": "HIGH",
                "exploitMaturity": "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:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N",
                "version": "4.0",
                "vulnAvailabilityImpact": "NONE",
                "vulnConfidentialityImpact": "NONE",
                "vulnIntegrityImpact": "HIGH",
                "vulnerabilityResponseEffort": "NOT_DEFINED"
              },
              "format": "CVSS",
              "scenarios": [
                {
                  "lang": "en",
                  "value": "GENERAL"
                }
              ]
            },
            {
              "cvssV3_1": {
                "attackComplexity": "LOW",
                "attackVector": "NETWORK",
                "availabilityImpact": "NONE",
                "baseScore": 7.5,
                "baseSeverity": "HIGH",
                "confidentialityImpact": "NONE",
                "integrityImpact": "HIGH",
                "privilegesRequired": "NONE",
                "scope": "UNCHANGED",
                "userInteraction": "NONE",
                "vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N",
                "version": "3.1"
              },
              "format": "CVSS",
              "scenarios": [
                {
                  "lang": "en",
                  "value": "GENERAL"
                }
              ]
            }
          ],
          "problemTypes": [
            {
              "descriptions": [
                {
                  "cweId": "CWE-345",
                  "description": "CWE-345 Insufficient Verification of Data Authenticity",
                  "lang": "en",
                  "type": "CWE"
                }
              ]
            }
          ],
          "providerMetadata": {
            "dateUpdated": "2026-10-23T21:50:13.188Z",
            "orgId": "7004884b-51e2-48e8-b4a2-5ca29e80453e",
            "shortName": "Hackrate"
          },
          "references": [
            {
              "tags": [
                "third-party-advisory",
                "technical-description",
                "mitigation"
              ],
              "url": "https://www.hckrt.com/hacktivity/HCKRT-6RB2BC"
            },
            {
              "tags": [
                "release-notes"
              ],
              "url": "https://github.com/craftcms/commerce-mollie/releases/tag/4.4.3"
            },
            {
              "tags": [
                "product"
              ],
              "url": "https://github.com/craftcms/commerce-mollie"
            },
            {
              "tags": [
                "third-party-advisory"
              ],
              "url": "https://github.com/craftcms/commerce-mollie/security/advisories/GHSA-3qcx-mjf6-48vj"
            }
          ],
          "source": {
            "advisory": "GHSA-3qcx-mjf6-48vj",
            "discovery": "UNKNOWN"
          },
          "title": "Unauthenticated payment reuse allows unpaid orders to be marked as paid",
          "x_generator": {
            "engine": "Vulnogram 1.0.4"
          }
        }
      },
      "cveMetadata": {
        "assignerOrgId": "7004884b-51e2-48e8-b4a2-5ca29e80453e",
        "assignerShortName": "Hackrate",
        "cveId": "CVE-2026-115937",
        "datePublished": "2026-10-23T21:50:13.188Z",
        "dateReserved": "2026-10-23T21:25:09.997Z",
        "dateUpdated": "2026-10-23T21:50:13.188Z",
        "state": "PUBLISHED"
      },
      "dataType": "CVE_RECORD",
      "dataVersion": "5.2"
    }