☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
Symfony logo [ WEBSITE ] [ VENDOR STATS ]
CVSS: 8.1 CVSS:3.1/AV:N/AC:H/PR:N/UI:R/S:U/C:H/I:H/A:H 🐛 CWE-352
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2022-23601

CVE-2022-23601 — CSRF token missing in Symfony
📅 PUBLISHED: 2022-02-01 00:00 UTC 🔄 UPDATED: 2026-10-02 19:27 UTC
[ OFFICIAL PATCH DEPLOYED ↓ ] FIX: LIKELY — 2 independent sources confirm fix
[ DEFENSE PATCH ↓ ]
💣 PoC: None
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.57%
👁️
0.57% probability
14.2× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1190
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Country: France License: Open Source
Patch available — upgrade to latest release
CVSS VECTOR BREAKDOWN 8.1
AV: N Attack Vector Network
AC: H Attack Complexity High
PR: N Privileges Required None
UI: R User Interaction Required
S: U Scope Unchanged
C: H Confidentiality High
I: H Integrity High
A: H Availability High
8.1
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

Executive Summary

CVE-2022-23601 affects the Symfony PHP framework, specifically its Form component and the CSRF protection mechanism. A regression in how FrameworkBundle configuration is loaded caused the default CSRF protection behavior to be silently dropped when not explicitly enabled in configuration, leaving forms vulnerable to Cross-Site Request Forgery (CSRF) attacks. Applications that relied on the default-enabled CSRF protection without explicit configuration become vulnerable. The issue is remediated in Symfony patch releases; no workarounds exist. With a CVSS score of 8.1, this vulnerability allows an attacker to perform unauthorized state-changing requests on behalf of authenticated users, potentially leading to data modification, privilege escalation, or account takeover.

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Technical Analysis

Symfony, a widely adopted PHP framework, implements CSRF protection in its Form component through a random token injected into forms. Under normal operation, this token is stored in the user's session, and upon form submission, the framework validates the submitted token against the session-stored value. This mechanism ensures that requests originate from the legitimate form rendered by the application, not from a malicious third-party site.

The FrameworkBundle component provides configuration directives to enable or disable this CSRF protection. Historically, the default behavior when this configuration key was omitted was to enable CSRF protection, provided the session was active. This "secure-by-default" posture meant that developers who did not explicitly configure CSRF settings received protection implicitly.

A regression was introduced in a recent change to the configuration loading mechanism. Specifically, the default value that previously enabled CSRF protection when the configuration was unspecified was removed or no longer applied. As a consequence, when the CSRF configuration key is not explicitly set in the application's configuration file, the Form component now runs with CSRF protection disabled. The shift from an implicit "enabled" default to an implicit "disabled" default is a silent security regression — applications that were previously protected without developer intervention now operate without CSRF validation.

The attack surface is any web form rendered by the Symfony Form component in applications that: (a) use FrameworkBundle, (b) have sessions enabled, and (c) do not explicitly set the CSRF protection configuration key. The removal of the default means the protection is only active if developers explicitly enable it. This is particularly dangerous because the vulnerability is invisible during development — forms render normally, submissions succeed, and no errors or warnings are generated to alert developers that the CSRF token is absent from rendered forms or that the token validation step is being skipped.

The NVD description confirms that the issue has been resolved in patch versions, though specific version numbers are not provided in the available data. The description also explicitly states that there are no known workarounds, meaning the only remediation is upgrading to a patched release. The patch confidence is rated 2/4 (CLAIMED), with Debian's security tracker being the single source reporting the fix; this patch has not been independently confirmed through other channels at the time of this report.

Exploitation Scenarios

No public proof-of-concept or exploit code has been identified for CVE-2022-23601. The following attack chain is inferred from the vulnerability class (CSRF) and the NVD description.

Step 1 — Reconnaissance and target identification: An attacker identifies a Symfony-based web application. Reconnaissance techniques include fingerprinting the X-Powered-By header or observing Symfony-specific URL patterns and cookie names (e.g., symfony or session cookie naming conventions). The attacker also probes whether the application's forms include a CSRF token field. The standard Symfony CSRF token field is typically a hidden input named _token. If this field is absent from rendered forms, the application is likely vulnerable.

Step 2 — Triggering the flaw: The attacker crafts a malicious HTML page on their own domain containing a form that targets the vulnerable application. The vulnerable application, running with CSRF protection disabled, will accept the form submission without validating any CSRF token. The form can be designed to submit automatically when the page loads using JavaScript (e.g., form.submit()), or the victim can be tricked into clicking a link or button.

Step 3 — Payload execution at the vulnerability-class level: The attacker submits a forged HTTP request (typically a POST request but could be GET or other methods) to a state-changing endpoint. Because no CSRF token is required, the application's session validation — if any — will allow the request to proceed as an authenticated action. The attacker does not need to know the session cookie because the victim's browser automatically includes it. The key detail is that the attacker crafts the form fields to match what the application expects for the target action (e.g., changing an email address, transferring funds, uploading a file, changing user role).

Step 4 — Post-exploitation impact: The impact depends entirely on the functionality exposed through the vulnerable forms. Common exploitation results include: modifying account settings and taking over the victim's account; changing transaction details and moving funds in financial applications; altering user privileges in administrative interfaces; and deleting/modifying critical data. In scenarios where the victim has elevated privileges (e.g., an administrator), the attacker can perform administrative actions.

It is acceptable to note that no public proof-of-concept or exploit code is available, and the attack chain is inferred from the CSRF vulnerability class described in the NVD entry. The attacker's primary constraint is that the victim must be authenticated to the target application and must visit the attacker's malicious page.

Impact Assessment

The CVSS score of 8.1 categorizes this as a high-severity vulnerability. While the attack requires user interaction (victim visiting a malicious page) and is somewhat complex to execute (attacker must identify a vulnerable form and know the target parameters), the impact on confidentiality, integrity, and availability are all rated as HIGH. Successful exploitation allows an attacker to make state-changing requests with the victim's session and privileges.

For a framework like Symfony, which powers a substantial portion of modern PHP applications globally — including e-commerce platforms, enterprise web applications, and content management systems — the affected population is significant. Any organization running an unpatched Symfony version with forms relying on default CSRF protection is exposed. The silent nature of the regression makes it difficult for organizations to assess their exposure without auditing their configuration files against the patch version.

The lack of a workaround elevates the urgency of patching. The blast radius is broad: although each individual attack requires user interaction from an authenticated user, a single victim with administrative privileges can be leveraged to compromise the entire application and, potentially, underlying systems. The integrity and confidentiality impacts (both HIGH) reflect that attackers can modify critical data and potentially access data of other users through subsequent actions.

Detection Guidance

Sigma Rule

title: Symfony Form Submission Without CSRF Token
id: c5d1e01a-8e21-4f9b-b3aa-4d3e0f43a7e1
status: experimental
description: Detects POST requests to Symfony-based applications that lack the CSRF token field (_token), indicating the form was rendered without CSRF protection (CVE-2022-23601).
references:
    - https://nvd.nist.gov/vuln/detail/CVE-2022-23601
author: Valtersit Threat Intelligence
date: 2024/01/15
logsource:
    category: webserver
    product: apache
    definition: 'Web server access logs or reverse proxy logs from Symfony applications'
detection:
    selection:
        http.method: 'POST'
        http.content_type: 'application/x-www-form-urlencoded'
    filter_traffic:
        http.url|endswith:
            - '/login'
            - '/logout'
            - '/admin/'
    condition: selection and not filter_traffic
    filter:
        - http.request.body|contains: '_token'
falsepositives:
    - Legitimate requests to endpoints that do not use the Symfony Form component
    - Applications that explicitly disabled CSRF protection and considered acceptable
level: high

YARA Rule

rule Symfony_CSRF_Token_Missing_Detect
{
    meta:
        author = "Valtersit Threat Intelligence"
        description = "Detects PHP source code patterns where Symfony CSRF protection is not explicitly enabled in configuration"
        cve = "CVE-2022-23601"
        reference = "https://nvd.nist.gov/vuln/detail/CVE-2022-23601"
        date = "2024-01-15"
        score = 60
    strings:
        $config = "framework:" ascii nocase
        $csrf_key = "csrf_protection:" ascii nocase
        $form_config = "form:" ascii nocase
        $session_config = "session:" ascii nocase
        // Default case where field is not set (indicating reliance on removed default)
        $pattern_no_config_1 = "framework:" ascii nocase
    condition:
        // Configuration file contains framework section without csrf_protection key
        $config and #csrf_key == 0
        // OR has csrf_protection explicitly set to false
        or ($csrf_key and (filesize < 100KB))
        and not ($form_config)
}

Suricata IDS Rule

alert http any any -> any any (msg:"ET POLICY Symfony CSRF Token Missing in POST Request"; flow:established,to_server; http.method; content:"POST"; http.request_body; pcre:"/_token=/"; nocase; content:!"|2e|"; http.url; content:!"/login"; sid:202423601; rev:1; metadata:created_at 2024_01_15, updated_at 2024_01_15, cve CVE-2022-23601;)

Elastic Detection

sequence by source.ip, user.name with maxspan=15m
  [network where event.type == "start" and destination.port == 443]
  [http where http.request.method == "POST" and
   not regex(http.request.body, ".*_token=.*", ".*token=.*")]

Splunk SPL Query

index=web sourcetype=access_combined
| spath input=form_data
| where http_method="POST"
| eval has_csrf=if(match(_raw, "_token="), 1, 0)
| stats count by uri, src_ip, has_csrf
| where has_csrf=0 AND uri LIKE "%form%" 
| table _time, src_ip, uri, count

Wazuh OSSEC Rule

<rule id="613871" level="10">
  <decoded_as>json</decoded_as>
  <field name="http.method">POST</field>
  <field name="url" type="pcre2">^\/.*(form|account|profile|admin).*$</field>
  <description>Symfony POST request without CSRF token potentially indicates CVE-2022-23601 exploitation</description>
  <group>web_application_attack,csrf,</group>
  <mitre>
    <id>T1189</id>
    <name>Drive-by Compromise</name>
  </mitre>
</rule>

Mitigation & Patch Guidance

Patch confidence assessment: The patch confidence is rated 2/4 (CLAIMED), based solely on the Debian security tracker. No independent confirmation from Symfony's official advisory channels or other sources was available in the provided data. This uncertainty means organizations should validate the patch status against their specific Symfony version and deployment.

1. Immediate mitigations (before patching):

  • Audit all Symfony applications for explicit csrf_protection configuration entries in config/packages/framework.yaml (or equivalent legacy configuration files). If the key is absent, CSRF protection is disabled and the application is vulnerable.
  • Explicitly enable CSRF protection by adding csrf_protection: true under the framework configuration section for every environment (dev, prod, stage).
  • If code changes are not immediately possible, deploy a Web Application Firewall (WAF) rule to inspect POST requests and flag or block those that omit a CSRF token field for form-action endpoints.
  • Review web server and application logs for POST requests to form endpoints without an accompanying _token parameter, which may indicate automated or manual attempts to exploit the missing protection.

2. Patch/upgrade steps:

  • Identify the exact installed Symfony version via composer show symfony/symfony or by inspecting the composer.lock file.
  • Upgrade Symfony to the latest patch release that addresses CVE-2022-23601. Because the NVD data does not include specific patched versions, consult the Debian security tracker and the official Symfony release blog for the advisory announcement.
  • Re-run the configuration audit after upgrading to ensure the default behavior is restored (i.e., CSRF enabled by default when sessions are active).

3. Long-term hardening:

  • Adopt a security-by-default philosophy in development: always explicitly enable security features rather than relying on framework defaults, regardless of how secure the defaults may appear.
  • Implement automated security regression testing that includes a check for the presence of CSRF tokens in all rendered forms during integration tests.
  • Subscribe to Symfony's security advisory mailing list and incorporate automated dependency scanning (e.g., Composer audit, Dependabot, or Snyk) into the CI/CD pipeline.
  • Conduct a security code review of all form-handling controllers, ensuring that CSRF tokens are validated on the server side before any state-changing operation.

References

  1. NVD Entry: https://nvd.nist.gov/vuln/detail/CVE-2022-23601
  2. Debian Security Tracker: https://security-tracker.debian.org/tracker/CVE-2022-23601
  3. Symfony Official Blog/Security Advisories: https://symfony.com/blog/security-advisories
  4. CWE-352 (Cross-Site Request Forgery) reference: https://cwe.mitre.org/data/definitions/352.html
  5. CISA Known Exploited Vulnerabilities Catalog (CVE not listed, but checked as of report date): https://www.cisa.gov/known-exploited-vulnerabilities-catalog

Threat actor intelligence: No known threat actor campaigns or exploit-in-the-wild evidence has been documented for CVE-2022-23601 at the time of this report. The CVE is not listed in CISA's KEV catalog. The absence of public exploit code and the lack of an EPSS score in the high percentile (0.00566, at the 43.9% percentile) suggests limited active exploitation in the wild, but the vulnerability remains attractive to attackers focused on web application security due to the silent nature of the regression and the widespread adoption of the Symfony framework.

👁️ SHODAN DORKS (THREAT HUNTING)

What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.

http.title:"Symfony"
http.component:"symfony"
http.html:"_csrf_token"
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2022-23601/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.