{"id":"CVE-2025-71454","kind":"vulnerability","aliases":["CVE-2025-71454"],"related":[],"title":"VTENext: CSRF protection skips GET requests, letting crafted links act as users","description":"vtenext before 25.02.2 contains a cross-site request forgery protection bypass because csrf_check() in include/utils/VteCsrf.php skips __csrf_token validation for non-POST requests. Attackers can induce a logged-in user to open a crafted link sending state-changing GET requests, which handlers read from $_REQUEST, performing actions as that user.","summary":"VTENext before 25.02.2 skips its CSRF token check for non-POST requests, so state-changing GET requests are not validated. An attacker who tricks a logged-in user into opening a crafted link can make actions run under that user's account.","severity":"medium","cvss":6.9,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["package","php","self-hosted","vtenext"],"not_affected_if":["version-25.02.2-or-later"],"how_to_check":"- Check the installed VTENext version and whether it is below `25.02.2`.\n- Review `include/utils/VteCsrf.php` for the `csrf_check()` function and whether it skips `__csrf_token` validation for non-POST requests.","fix":"- VTENext: move to `25.02.2` or later.","status":"open","published_at":"2026-11-04T21:17:39+00:00","first_seen_at":"2026-11-04T21:49:16+00:00","triaged_at":"2026-11-04T21:51:10+00:00","updated_at":"2026-11-04T21:51:10+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-11-04T21:51:10Z","model":"claude-haiku-5-5","output":{"fix":"- VTENext: move to `25.02.2` or later.","reach":"internet","title":"VTENext: CSRF protection skips GET requests, letting crafted links act as users","impact":"medium","summary":"VTENext before 25.02.2 skips its CSRF token check for non-POST requests, so state-changing GET requests are not validated. An attacker who tricks a logged-in user into opening a crafted link can make actions run under that user's account.","audience":"businesses","category":"package","nicknames":[],"who_cares":["vtenext","self-hosted","php"],"confidence":0.7,"fix_status":"available","needs_auth":"yes","worst_case":"actions performed as a logged-in user, such as data changes","analyst_note":"","how_to_check":"- Check the installed VTENext version and whether it is below `25.02.2`.\n- Review `include/utils/VteCsrf.php` for the `csrf_check()` function and whether it skips `__csrf_token` validation for non-POST requests.","plain_action":"","needs_analyst":false,"not_affected_if":["version-25.02.2-or-later"],"who_is_affected":"VTENext installations before 25.02.2 are exposed, because csrf_check() does not validate the CSRF token on GET requests and handlers read from $_REQUEST. Teams running a self-hosted VTENext CRM where logged-in staff browse other sites are most at risk. Installations already on 25.02.2 or later are not affected by this flaw.","user_interaction":"yes","needs_special_setup":"no","severity_if_unknown":"medium"},"cost_usd":0.000686,"input_tokens":4166,"output_tokens":538,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-2025':14A,17A '-71454':15A,18A '25.02.2':27B,72C 'account':69B 'act':10A 'action':63B,121C 'attack':48B,96C 'bypass':81C 'chang':41B,112C 'check':32B,84C 'contain':73C 'craft':8A,59B,107C 'cross':76C 'cross-sit':75C 'csrf':2A,30B,83C,88C 'cve':13A,16A 'forgeri':79C 'get':5A,42B,113C 'handler':116C 'host':23B 'include/utils/vtecsrf.php':86C 'induc':98C 'let':7A 'link':9A,60B,108C 'log':53B,101C 'logged-in':52B,100C 'make':62B 'non':35B,93C 'non-post':34B,92C 'open':57B,105C 'packag':19B 'perform':120C 'php':20B 'post':36B,94C 'protect':3A,80C 'read':117C 'request':6A,37B,43B,78C,95C,114C,119C 'run':64B 'self':22B 'self-host':21B 'send':109C 'site':77C 'skip':4A,28B,87C 'state':40B,111C 'state-chang':39B,110C 'token':31B,89C 'trick':50B 'user':12A,55B,67B,103C,124C 'valid':46B,90C 'vtenext':1A,24B,25B,70C","nicknames":[],"mitigations":[],"who_affected":"VTENext installations before 25.02.2 are exposed, because csrf_check() does not validate the CSRF token on GET requests and handlers read from $_REQUEST. Teams running a self-hosted VTENext CRM where logged-in staff browse other sites are most at risk. Installations already on 25.02.2 or later are not affected by this flaw.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":[],"ptokens":[],"labels":["medium","package","php","selfhosted","vtenext"],"campaign_type":null,"first_public_at":"2026-11-04T21:17:39+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:A/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2025-71454","url":"https://nvd.nist.gov/vuln/detail/CVE-2025-71454","severity":null,"published_at":"2026-11-04T21:17:39+00:00","modified_at":"2026-11-04T21:17:39+00:00","first_seen_at":"2026-11-04T21:49:16+00:00","fetched_at":"2026-11-04T21:49:16+00:00","note":null}],"documents":[{"id":70603,"url":"https://www.vulncheck.com/advisories/vtenext-before-25.02.2-csrf-protection-bypass-via-http-method-tampering","title":"Third-party advisory: www.vulncheck.com","kind":"advisory","source":"nvd","publisher":"research","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Third-party advisory: www.vulncheck.com"}],"exploit_sources":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}