{
    "dataType": "CVE_RECORD",
    "dataVersion": "5.2",
    "cveMetadata": {
        "cveId": "CVE-2026-104799",
        "assignerOrgId": "b15e7b5b-3da4-40ae-a43c-f7aa60e62599",
        "state": "PUBLISHED",
        "assignerShortName": "Wordfence",
        "dateReserved": "2026-10-02T13:14:22.775Z",
        "datePublished": "2026-11-04T11:26:23.248Z",
        "dateUpdated": "2026-11-04T11:26:23.248Z"
    },
    "containers": {
        "cna": {
            "providerMetadata": {
                "orgId": "b15e7b5b-3da4-40ae-a43c-f7aa60e62599",
                "shortName": "Wordfence",
                "dateUpdated": "2026-11-04T11:26:23.248Z"
            },
            "affected": [
                {
                    "vendor": "rnlab",
                    "product": "Mobile builder",
                    "versions": [
                        {
                            "version": "0",
                            "status": "affected",
                            "lessThanOrEqual": "1.4.2",
                            "versionType": "semver"
                        }
                    ],
                    "defaultStatus": "unaffected"
                }
            ],
            "descriptions": [
                {
                    "lang": "en",
                    "value": "The Mobile builder plugin for WordPress is vulnerable to Privilege Escalation in all versions up to, and including, 1.4.2 via the `wcfmmp_profile_settings()` REST handler exposed at `POST /mobile-builder/v1/wcfm-profile-settings`. This is due to a PHP loose-comparison logic flaw in the meta key allow-list check — `strpos( $key, 'mobile_builder' ) == 0` evaluates to `true` for any key that does *not* contain the substring `'mobile_builder'` because `strpos()` returns `false` on no match and `false == 0` is `true` in PHP — combined with a `permission_callback` (`user_permissions_check`) that grants access to any authenticated user by only verifying `$user->exists()`. This makes it possible for authenticated attackers, with Subscriber-level access and above, to pass an unsanitized `data` array via the `key` and `data` parameters directly to `update_user_meta()`, overwriting arbitrary user meta on their own account — including the `wp_capabilities` meta key — to grant themselves Administrator-level privileges."
                }
            ],
            "title": "Mobile builder <= 1.4.2 - Authenticated (Subscriber+) Privilege Escalation to wcfm-profile-settings REST Route 'key'/'data' Parameters",
            "references": [
                {
                    "url": "https://www.wordfence.com/threat-intel/vulnerabilities/id/bc1a233e-ea62-4fb0-98eb-6b2aa893555d?source=cve"
                },
                {
                    "url": "https://plugins.trac.wordpress.org/browser/mobile-builder/trunk/api/class-mobile-builder-wcfm.php#L94"
                },
                {
                    "url": "https://plugins.trac.wordpress.org/browser/mobile-builder/trunk/api/class-mobile-builder-wcfm.php#L93"
                },
                {
                    "url": "https://plugins.trac.wordpress.org/browser/mobile-builder/trunk/api/class-mobile-builder-wcfm.php#L344"
                },
                {
                    "url": "https://plugins.trac.wordpress.org/browser/mobile-builder/trunk/api/class-mobile-builder-wcfm.php#L78"
                },
                {
                    "url": "https://plugins.trac.wordpress.org/browser/mobile-builder/trunk/api/class-mobile-builder-wcfm.php#L87"
                },
                {
                    "url": "https://plugins.trac.wordpress.org/browser/mobile-builder/trunk/api/class-mobile-builder-wcfm.php#L88"
                }
            ],
            "problemTypes": [
                {
                    "descriptions": [
                        {
                            "lang": "en",
                            "description": "CWE-269 Improper Privilege Management",
                            "cweId": "CWE-269",
                            "type": "CWE"
                        }
                    ]
                }
            ],
            "metrics": [
                {
                    "cvssV3_1": {
                        "version": "3.1",
                        "vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H",
                        "baseScore": 8.8,
                        "baseSeverity": "HIGH"
                    }
                }
            ],
            "credits": [
                {
                    "lang": "en",
                    "type": "finder",
                    "value": "sermsak"
                }
            ],
            "timeline": [
                {
                    "time": "2026-11-03T21:31:34.000Z",
                    "lang": "en",
                    "value": "Disclosed"
                }
            ]
        }
    }
}