CVE-2023-32571

9.8 CRITICAL

📋 TL;DR

CVE-2023-32571 is a remote code execution vulnerability in Dynamic LINQ libraries where untrusted input to methods like Where, Select, and OrderBy can be parsed to execute arbitrary commands. This affects applications using vulnerable versions of System.Linq.Dynamic.Core. Attackers can achieve full system compromise through this injection vulnerability.

💻 Affected Systems

Products:
  • System.Linq.Dynamic.Core
Versions: 1.0.7.10 through 1.2.25 (before 1.3.0)
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Any application using Dynamic LINQ methods with user-controlled input is vulnerable. This includes web applications, APIs, and desktop applications.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete system takeover with attacker executing arbitrary code as the application's user, potentially leading to data theft, ransomware deployment, or lateral movement.

🟠

Likely Case

Remote code execution leading to application compromise, data exfiltration, and potential privilege escalation.

🟢

If Mitigated

Limited impact with proper input validation and sanitization, potentially reduced to denial of service or information disclosure.

🌐 Internet-Facing: HIGH
🏢 Internal Only: HIGH

🎯 Exploit Status

Public PoC: ⚠️ Yes
Weaponized: LIKELY
Unauthenticated Exploit: ⚠️ Yes
Complexity: LOW

Exploitation requires user input to reach vulnerable Dynamic LINQ methods. Public proof-of-concept demonstrates code execution.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 1.3.0 and later

Vendor Advisory: https://github.com/zzzprojects/System.Linq.Dynamic.Core

Restart Required: Yes

Instructions:

1. Update System.Linq.Dynamic.Core NuGet package to version 1.3.0 or later. 2. Rebuild and redeploy affected applications. 3. Test application functionality after update.

🔧 Temporary Workarounds

Input Validation and Sanitization

all

Implement strict input validation and sanitization for all user inputs passed to Dynamic LINQ methods.

Restrict Dynamic LINQ Usage

all

Disable or restrict usage of Dynamic LINQ methods in production environments where possible.

🧯 If You Can't Patch

  • Implement Web Application Firewall (WAF) rules to block suspicious Dynamic LINQ query patterns
  • Isolate vulnerable applications in network segments with strict egress filtering

🔍 How to Verify

Check if Vulnerable:

Check project dependencies for System.Linq.Dynamic.Core version 1.0.7.10 through 1.2.25. Review code for Dynamic LINQ method usage with user input.

Check Version:

For .NET projects: check packages.config or .csproj file for System.Linq.Dynamic.Core version

Verify Fix Applied:

Verify System.Linq.Dynamic.Core package version is 1.3.0 or later in project dependencies. Test application with known malicious inputs.

📡 Detection & Monitoring

Log Indicators:

  • Unusual long strings in query parameters
  • Suspicious characters like semicolons, parentheses, or quotes in LINQ queries
  • Application errors related to Dynamic LINQ parsing

Network Indicators:

  • Unusual outbound connections from application server
  • Large data exfiltration patterns

SIEM Query:

source="application_logs" AND ("Dynamic.Linq" OR "System.Linq.Dynamic") AND (error OR exception)

🔗 References

📤 Share & Export