{"basis":"claimed","id":"CVE-2025-2748","name":"Kentico Xperience stored cross-site scripting in multiple-file upload functionality","vendorProject":"Kentico","product":"Xperience","publishedAt":"2025-03-24","cvss":{"score":6.1,"severity":"MEDIUM","version":"3.1"},"exploited":null,"epss":{"score":0.60586,"percentile":0.99145,"date":"2026-11-02"},"coverage":{"cloudflare":{"status":"blocks","firstOn":"2025-08-11","daysToRule":140},"aws":{"status":"none","firstOn":null,"daysToRule":null},"azure":{"status":"none","firstOn":null,"daysToRule":null},"google":{"status":"none","firstOn":null,"daysToRule":null},"fastly":{"status":"no_history","firstOn":null,"daysToRule":null},"f5":{"status":"none","firstOn":null,"daysToRule":null},"akamai":{"status":"no_source","firstOn":null,"daysToRule":null},"crs":{"status":"none","firstOn":null,"daysToRule":null}},"title":"Kentico Xperience stored cross-site scripting in multiple-file upload functionality","description":"The Kentico Xperience application does not fully validate or filter files uploaded via the multiple-file upload functionality, which allows for stored XSS.This issue affects Kentico Xperience through 13.0.178.","cwes":["CWE-79","CWE-434"],"vendors":[{"vendor":"cloudflare","status":"blocks","basis":"claimed","firstOn":"2025-08-11","firstIsNew":true,"daysToRule":140,"daysAtMost":null,"freePlan":false,"claims":[{"id":"d3c08174aaa71dfba4ccb312d1eb7028c18cc28ec6733360af32dd2469ce3c40","cve_id":"CVE-2025-2748","vendor":"cloudflare","product":"Cloudflare Managed Ruleset","rule_id":"7c7a0a37e79a4949ba840c9acaf261aa","rule_name":"Kentico Xperience CMS - XSS - CVE:CVE-2025-2748","change":"new","default_action":"Block","published_on":"2025-08-11","source_url":"https://developers.cloudflare.com/changelog/post/2025-08-11-waf-release/","source_title":"WAF Release - 2025-08-11","excerpt":"Kentico Xperience CMS - XSS - CVE:CVE-2025-2748. Previous action: Log. New action: Block. This is a New Detection","first_seen_at":"2026-11-02T21:00:16.135Z"}]},{"vendor":"aws","status":"none","basis":"claimed","firstOn":null,"firstIsNew":false,"daysToRule":null,"daysAtMost":null,"freePlan":false,"claims":[]},{"vendor":"azure","status":"none","basis":"claimed","firstOn":null,"firstIsNew":false,"daysToRule":null,"daysAtMost":null,"freePlan":false,"claims":[]},{"vendor":"google","status":"none","basis":"claimed","firstOn":null,"firstIsNew":false,"daysToRule":null,"daysAtMost":null,"freePlan":false,"claims":[]},{"vendor":"fastly","status":"no_history","basis":"claimed","firstOn":null,"firstIsNew":false,"daysToRule":null,"daysAtMost":null,"freePlan":false,"claims":[]},{"vendor":"f5","status":"none","basis":"claimed","firstOn":null,"firstIsNew":false,"daysToRule":null,"daysAtMost":null,"freePlan":false,"claims":[]},{"vendor":"akamai","status":"no_source","basis":"claimed","firstOn":null,"firstIsNew":false,"daysToRule":null,"daysAtMost":null,"freePlan":false,"claims":[]},{"vendor":"crs","status":"none","basis":"claimed","firstOn":null,"firstIsNew":false,"daysToRule":null,"daysAtMost":null,"freePlan":false,"claims":[]}],"updatedAt":"2026-11-03T18:25:14.737Z","cvssVector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N","ssvc":{"exploitation":"none","automatable":"no","technicalImpact":"partial"},"kevAction":null,"kevNotes":null,"references":[{"url":"https://devnet.kentico.com/download/hotfixes","name":null,"tags":["vendor-advisory","patch"]}],"affected":[{"vendor":"Kentico","product":"Xperience","affected":["through 13.0.178"],"fixed":[]}],"briefing":{"status":{"id":"action_required","label":"Action required"},"why":"It is reachable over the network without credentials (CVSS 6.1). A public scanner template probes for it. EPSS ranks it in the top 1% of CVEs most likely to be exploited in the next 30 days. Exploitation in the wild is not established by CISA KEV.","who":"Teams running Kentico Xperience (through 13.0.178). Prioritise internet-facing instances.","what_to_do":[{"text":"Apply the vendor's fix; the advisory lists the affected and fixed versions.","href":"https://devnet.kentico.com/download/hotfixes","linkText":"devnet.kentico.com"},{"text":"Keep a WAF rule in place while you patch: Cloudflare blocks it by default. A WAF rule reduces exposure; it does not replace the patch.","href":"#edge","linkText":"Edge coverage"},{"text":"Check which WAF sits in front of your site and whether it covers this CVE.","href":"#check","linkText":"Check your domain"}],"evidence":[{"heading":"CVE record","text":"CVSS 3.1 6.1 (medium). Weakness: CWE-79, CWE-434.","links":[{"label":"CVE-2025-2748","href":"https://www.cve.org/CVERecord?id=CVE-2025-2748"},{"label":"NVD","href":"https://nvd.nist.gov/vuln/detail/CVE-2025-2748"}]},{"heading":"Vendor advisory","text":"Fixes and mitigations the CVE record links to. Check affected builds against the vendor, including backports.","links":[{"label":"devnet.kentico.com","href":"https://devnet.kentico.com/download/hotfixes"}]},{"heading":"Exploit evidence","text":"A nuclei template exists, which our lab and benchmark replay.","links":[]},{"heading":"CISA KEV","text":"Not in the KEV catalog (catalog 2026.11.03, checked 2026-11-04). Absence from KEV is not evidence that it cannot be exploited.","links":[{"label":"CISA KEV catalog","href":"https://www.cisa.gov/known-exploited-vulnerabilities-catalog"}]},{"heading":"EPSS","text":"60.6% probability of exploitation activity in the next 30 days, higher than 99% of CVEs (2026-11-02).","links":[{"label":"FIRST EPSS","href":"https://api.first.org/data/v1/epss?cve=CVE-2025-2748"}]},{"heading":"WAF vendor statements","text":"Cloudflare names it in a changelog. Quotes and dates below.","links":[{"label":"Vendor statements","href":"#evidence"}]}],"agent_prompt":"Assess whether the infrastructure available to you is affected by CVE-2025-2748 (Kentico Xperience stored cross-site scripting in multiple-file upload functionality). Perform a read-only assessment within your authorized access. Do not send exploit traffic, scan third-party systems, change configuration or restart services.\n\n1. Verify the CVE record at https://www.cve.org/CVERecord?id=CVE-2025-2748 and the vendor advisories (https://devnet.kentico.com/download/hotfixes). Establish affected and fixed versions, including vendor backports. The record lists: Kentico Xperience: affected through 13.0.178. Cite sources and retrieval dates; flag anything you cannot verify.\n2. Inventory deployments of Kentico Xperience: asset, environment, owner where known, installed version or build, and how you confirmed it (package metadata, a version endpoint, image tags). An image tag alone does not prove the running version.\n3. Identify which deployments are reachable from the internet or untrusted networks, and through which paths (direct origin, load balancer, CDN or WAF).\n4. Assess compensating controls separately from patch status. Current edge WAF coverage for this CVE: Cloudflare: rule blocks by default. Live data: https://cve.vigilbase.com/api/v1/cves/CVE-2025-2748. Check whether the rule is enabled and in block mode on each path, and whether any path bypasses the WAF. A WAF rule is not a patch.\n5. Check logs on exposed instances for requests matching the public exploit, if your access allows.\n\nReturn a short summary and a table: asset | version/build | assessment (affected, fixed, not applicable, unknown) | exposure | compensating control | evidence | next action. List what you could not assess and the access needed to resolve it. Do not infer absence of compromise from patch status or a lack of alerts.\n\nRemediation guidance: Apply the vendor's fix; the advisory lists the affected and fixed versions. Keep a WAF rule in place while you patch: Cloudflare blocks it by default. A WAF rule reduces exposure; it does not replace the patch.\nMore: https://cve.vigilbase.com/cve/CVE-2025-2748"},"measured":[{"engineId":"owasp-crs","engineName":"OWASP Core Rule Set","engineVersion":"4.25.0","runtime":"Coraza v3.8.1","config":"paranoia level 1, anomaly threshold 5, default CRS settings","ranAt":"2026-11-02T13:02:57.000Z","verdict":"blocked","templateId":"CVE-2025-2748","templatePath":"http/cves/2025/CVE-2025-2748.yaml","requests":2,"blockedRequests":2,"rules":["920270","920420","921150","932130","942100"],"note":"","requestDetail":[{"method":"POST","path":"/CMSModules/Content/CMSPages/MultiFileUploader.ashx?…","status":403,"blocked":true,"rules":["920270","920420","921150","942100"]},{"method":"GET","path":"/CMSPages/GetResource.ashx?…","status":403,"blocked":true,"rules":["932130"]}]},{"engineId":"owasp-crs","engineName":"OWASP Core Rule Set","engineVersion":"4.25.0","runtime":"Coraza v3.8.1","config":"paranoia level 2, anomaly threshold 5, default CRS settings","ranAt":"2026-11-02T13:03:28.000Z","verdict":"blocked","templateId":"CVE-2025-2748","templatePath":"http/cves/2025/CVE-2025-2748.yaml","requests":2,"blockedRequests":2,"rules":["920270","920271","920420","921150","932130","942100","942330","942430","942440"],"note":"","requestDetail":[{"method":"POST","path":"/CMSModules/Content/CMSPages/MultiFileUploader.ashx?…","status":403,"blocked":true,"rules":["920270","920271","920420","921150","942100","942330"]},{"method":"GET","path":"/CMSPages/GetResource.ashx?…","status":403,"blocked":true,"rules":["932130"]}]}],"sightings":null,"social":{"total":0,"first_seen":null,"daily":[{"day":"2026-10-22","posts":0},{"day":"2026-10-23","posts":0},{"day":"2026-10-24","posts":0},{"day":"2026-10-25","posts":0},{"day":"2026-10-26","posts":0},{"day":"2026-10-27","posts":0},{"day":"2026-10-28","posts":0},{"day":"2026-10-29","posts":0},{"day":"2026-10-30","posts":0},{"day":"2026-10-31","posts":0},{"day":"2026-11-01","posts":0},{"day":"2026-11-02","posts":0},{"day":"2026-11-03","posts":0},{"day":"2026-11-04","posts":0}],"top_posts":[],"exploit_repositories":[]}}