CVE-2020-15146

9.6 CRITICAL

📋 TL;DR

This vulnerability allows remote code execution in SyliusResourceBundle by exploiting improper sanitization of request parameters in Symfony expression language. Attackers can access any public service and execute arbitrary code. All systems running affected versions of SyliusResourceBundle are vulnerable.

💻 Affected Systems

Products:
  • SyliusResourceBundle
Versions: All versions before 1.3.14, 1.4.7, 1.5.2, and 1.6.4. Versions prior to 1.3 are not patched.
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Any Sylius installation using the vulnerable ResourceBundle versions is affected regardless of configuration.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete system compromise allowing attackers to execute arbitrary code, access sensitive data, and maintain persistent access.

🟠

Likely Case

Remote code execution leading to data theft, system manipulation, or deployment of malware.

🟢

If Mitigated

Limited impact with proper input validation and service isolation, potentially only information disclosure.

🌐 Internet-Facing: HIGH - Exploitable remotely without authentication via web requests.
🏢 Internal Only: HIGH - Even internal systems are vulnerable to authenticated or unauthenticated attacks.

🎯 Exploit Status

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

Exploitation is straightforward via crafted HTTP requests. Public proof-of-concept exists in security advisories.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 1.3.14, 1.4.7, 1.5.2, or 1.6.4

Vendor Advisory: https://github.com/Sylius/SyliusResourceBundle/security/advisories/GHSA-h6m7-j4h3-9rf5

Restart Required: Yes

Instructions:

1. Update SyliusResourceBundle to patched version via composer: composer update sylius/resource-bundle. 2. Clear cache: php bin/console cache:clear. 3. Restart web server.

🔧 Temporary Workarounds

Input validation filter

all

Implement custom request parameter sanitization to filter expression language inputs.

Implement custom request parameter validation in controller actions

WAF rule

all

Deploy web application firewall rules to block requests containing expression language syntax.

Configure WAF to block patterns like '@service' or expression language operators

🧯 If You Can't Patch

  • Isolate affected systems from internet access and restrict internal network access.
  • Implement strict input validation and sanitization for all request parameters.

🔍 How to Verify

Check if Vulnerable:

Check composer.json for sylius/resource-bundle version. If version is below 1.3.14, 1.4.7, 1.5.2, or 1.6.4, system is vulnerable.

Check Version:

composer show sylius/resource-bundle | grep versions

Verify Fix Applied:

Verify composer.lock shows updated version and test that expression language injection no longer works.

📡 Detection & Monitoring

Log Indicators:

  • Unusual expression language patterns in request parameters
  • Unexpected service calls in application logs
  • Errors from expression language evaluation

Network Indicators:

  • HTTP requests containing '@service' patterns or expression operators
  • Unusual outbound connections from web server

SIEM Query:

web_access_logs WHERE uri_query CONTAINS '@' OR uri_query CONTAINS 'service('

🔗 References

📤 Share & Export