CVE-2023-26750

9.8 CRITICAL

📋 TL;DR

This SQL injection vulnerability in Yii Framework 2 allows remote attackers to execute arbitrary SQL commands through the runAction function, potentially leading to data theft, modification, or complete system compromise. It affects applications using Yii 2 Framework versions before 2.0.47. The software maintainer disputes this is a framework vulnerability, attributing it to third-party code implementation.

💻 Affected Systems

Products:
  • Yii Framework 2
Versions: All versions before 2.0.47
Operating Systems: All
Default Config Vulnerable: ⚠️ Yes
Notes: Vulnerability requires specific implementation patterns using runAction with user-controlled input. Maintainer claims this is third-party code issue, not framework vulnerability.

📦 What is this software?

⚠️ Risk & Real-World Impact

🔴

Worst Case

Complete database compromise allowing data exfiltration, modification, deletion, or remote code execution through database functions.

🟠

Likely Case

Unauthorized data access, privilege escalation, or data manipulation in affected applications.

🟢

If Mitigated

Limited impact with proper input validation, parameterized queries, and database permission restrictions in place.

🌐 Internet-Facing: HIGH
🏢 Internal Only: MEDIUM

🎯 Exploit Status

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

SQL injection vulnerabilities are commonly exploited. Public discussion and technical details available in GitHub issues.

🛠️ Fix & Mitigation

✅ Official Fix

Patch Version: 2.0.47

Vendor Advisory: https://github.com/yiisoft/yii2/issues/19755

Restart Required: No

Instructions:

1. Update Yii Framework to version 2.0.47 or later using composer: 'composer require yiisoft/yii2:^2.0.47' 2. Review and update any third-party extensions or custom code using runAction with user input.

🔧 Temporary Workarounds

Input Validation and Sanitization

all

Implement strict input validation and parameterized queries for all user-controlled inputs passed to runAction.

Database Permission Restriction

all

Limit database user permissions to minimum required operations (SELECT only where possible).

🧯 If You Can't Patch

  • Implement web application firewall (WAF) rules to detect and block SQL injection patterns
  • Isolate database server and implement network segmentation to limit potential damage

🔍 How to Verify

Check if Vulnerable:

Check composer.json or Yii version constant: Yii::getVersion() should be < 2.0.47

Check Version:

php -r "echo Yii::getVersion();"

Verify Fix Applied:

Confirm Yii version is 2.0.47 or higher: Yii::getVersion() >= '2.0.47'

📡 Detection & Monitoring

Log Indicators:

  • Unusual database queries from web application
  • SQL syntax errors in application logs
  • Multiple failed login attempts or unusual parameter patterns

Network Indicators:

  • Unusual database connection patterns from application servers
  • Large data transfers from database to unexpected destinations

SIEM Query:

web_logs WHERE (url CONTAINS 'runAction' AND parameters MATCH '.*[;'"].*') OR (status_code = 500 AND message CONTAINS 'SQL')

🔗 References

📤 Share & Export