{"schemaVersion":3,"id":"CVE-2026-14224","aliases":[],"status":"published","duplicateOf":null,"title":null,"description":"The Easy Appointments WordPress plugin before 3.12.28 does not verify that the appointment targeted by its customer-data update action belongs to the current user; the action only checks a shared nonce that any authenticated user can obtain from their own appointment's edit form. A subscriber-level user with an appointment of their own can therefore reuse that nonce to overwrite the customer metadata (email, name, phone, description) of another user's appointment. Because the Easy Appointments WordPress plugin before 3.12.28 then treats that metadata as the appointment's contact data, a subsequent administrator status change with customer notifications enabled delivers the victim's appointment notification to the attacker-controlled email address.","dates":{"published":"2026-07-29T06:00:03.059Z","modified":"2026-08-10T12:43:21.732Z","reserved":null,"kevAdded":[],"kevDue":[]},"cvss":{"headline":{"score":5.4,"severity":"medium","version":"3.1","versionLabel":"v3.1","source":"CVE.org","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N","computed":false,"selection":"backend-summary"},"metrics":[{"version":"3.1","versionLabel":"v3.1","source":"CVE.org","score":5.4,"severity":"medium","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N","exploitability":null,"impact":null,"computed":false},{"version":"3.1","versionLabel":"v3.1","source":"NVD","score":5.4,"severity":"medium","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:N","exploitability":null,"impact":null,"computed":false},{"version":"3.1","versionLabel":"v3.1","source":"wordfence","score":4.3,"severity":"medium","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N","exploitability":null,"impact":null,"computed":false}]},"epss":{"probability":0.0023,"percentile":0.12968,"severity":"low","asOf":"2026-10-19T00:00:00.000Z","change":{"pp":0.089,"baselineDate":"2026-09-19T00:00:00.000Z","baselineScore":0.00141},"history":[{"date":"2026-09-14T00:00:00.000Z","score":0.00141,"percentile":null},{"date":"2026-09-15T00:00:00.000Z","score":0.00141,"percentile":null},{"date":"2026-09-16T00:00:00.000Z","score":0.00141,"percentile":null},{"date":"2026-09-17T00:00:00.000Z","score":0.00141,"percentile":null},{"date":"2026-09-18T00:00:00.000Z","score":0.00141,"percentile":null},{"date":"2026-09-19T00:00:00.000Z","score":0.00141,"percentile":null},{"date":"2026-09-20T00:00:00.000Z","score":0.00141,"percentile":null},{"date":"2026-09-21T00:00:00.000Z","score":0.00141,"percentile":null},{"date":"2026-09-22T00:00:00.000Z","score":0.00141,"percentile":null},{"date":"2026-09-23T00:00:00.000Z","score":0.00141,"percentile":null},{"date":"2026-09-24T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-09-25T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.0023,"percentile":0.12968}],"last30":[{"date":"2026-09-19T00:00:00.000Z","score":0.00141,"percentile":null},{"date":"2026-09-20T00:00:00.000Z","score":0.00141,"percentile":null},{"date":"2026-09-21T00:00:00.000Z","score":0.00141,"percentile":null},{"date":"2026-09-22T00:00:00.000Z","score":0.00141,"percentile":null},{"date":"2026-09-23T00:00:00.000Z","score":0.00141,"percentile":null},{"date":"2026-09-24T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-09-25T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.0023,"percentile":null},{"date":"2026-10-19T00:00:00.000Z","score":0.0023,"percentile":0.12968}]},"kev":{"state":"not-listed","entries":[],"listedCount":0,"totalCatalogs":3,"catalogs":[{"source":"cisa","label":"CISA","listed":false,"entry":null},{"source":"enisa","label":"ENISA","listed":false,"entry":null},{"source":"circl","label":"CIRCL","listed":false,"entry":null}]},"ransomware":{"state":"none-recorded","sources":[]},"exploits":[{"id":"REF_4392EF803AD026E9","name":"Exploit Reference (wpscan.com)","source":"reference","url":"https://wpscan.com/vulnerability/c39226d5-1b6f-4f08-903c-7ecc67d17eb0/","maturity":"unknown","reliabilityScore":0.2,"verified":false,"type":null,"platforms":[],"requiresAuth":null,"exploitdb":null,"metasploit":null}],"exploitCount":1,"weaknesses":[{"id":"CWE-639","name":"Authorization Bypass Through User-Controlled Key","description":"The system's authorization functionality does not prevent one user from gaining access to another user's data or record by modifying the key value identifying the data.","type":"weakness","status":"Incomplete","abstraction":"Base","likelihoodOfExploit":"High","url":"https://cwe.mitre.org/data/definitions/639.html"}],"affected":[{"vendor":"unknown","product":"easy appointments","name":"Easy Appointments","label":"easy appointments","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"< 3.12.28","noFixRecorded":false,"fixedIn":null}],"versionsText":"< 3.12.28","eol":null,"hubHref":"/vendor/unknown/easy_appointments"},{"vendor":"wordpress","product":"easy-appointments","name":"Easy Appointments","label":"easy-appointments","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"< 3.12.28","noFixRecorded":false,"fixedIn":"3.12.28"}],"versionsText":"< 3.12.28","eol":null,"hubHref":null}],"affectedCount":2,"eol":{"hasEol":false,"count":0},"references":[{"url":"https://wpscan.com/vulnerability/c39226d5-1b6f-4f08-903c-7ecc67d17eb0/","label":"wpscan.com/vulnerability/c39226d5-1b6f-4f08-903c-7ecc67d17eb0/","hostname":"wpscan.com","tags":["Exploit","VDB Entry","Technical Description"]},{"url":"https://www.wordfence.com/threat-intel/vulnerabilities/id/bb175149-05b5-4e8e-8437-9a07762c7269","label":"www.wordfence.com/threat-intel/vulnerabilities/id/bb175149-05b5-4e8e-8437-9a07762c7269","hostname":"www.wordfence.com","tags":["Vendor Advisory"]}],"lineage":{"upstream":[],"downstream":[],"duplicates":[],"related":[]},"timeline":[{"kind":"published","date":"2026-07-29T06:00:03.059Z","label":"Published","detail":"Vulnerability first disclosed.","source":null},{"kind":"modified","date":"2026-08-10T12:43:21.732Z","label":"Last modified","detail":"Vulnerability information updated.","source":null}],"risk":{"score":32,"level":"medium","profile":"Default","thresholds":{"critical":75,"high":50,"medium":25,"low":10}},"meta":{"dataAsOf":"2026-10-19T18:11:18.048Z","stale":false,"partial":false}}