← Vulnerability feed

Vulnerability record · CVE-2020-15148 · published 15 September 2020

CVE-2020-15148: Yii 2 unserialize() of untrusted input enables remote code execution

Yiiframework · Yii

Yii 2 before 2.0.38 is vulnerable to remote code execution when an application calls unserialize() on arbitrary user input, a classic CWE-502 deserialization flaw. The issue is fixed in 2.0.38, and a workaround is documented in the linked advisory for those who cannot upgrade immediately. Because the framework itself is affected, any application that passes user-controlled data to unserialize() inherits the risk.

10.0 CVSS 3.1 Critical EPSS 79% · top 0.4% CWE-502 · Deserialization of untrusted data
10.0CVSS 3.1 base score, v2 7.5
79%EPSS exploitation probability, 30 days
NoNot in CISA KEV
1Affected product versions listed by NVD
4References
17 Jun 2026Last modified by NVD

Description

Yii 2 (yiisoft/yii2) before version 2.0.38 is vulnerable to remote code execution if the application calls `unserialize()` on arbitrary user input. This is fixed in version 2.0.38. A possible workaround without upgrading is available in the linked advisory.

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H

Automated analysis

Generated by VULONE's analysis model from the NVD record, CISA KEV and EPSS data on 18 September 2026. Confidence: high.

critical priorityCVSS 10.0 with network reachability, no authentication or interaction, and very high EPSS make this a top remediation priority despite no KEV listing.

What it is

Yii 2 before 2.0.38 is vulnerable to remote code execution when an application calls unserialize() on arbitrary user input, a classic CWE-502 deserialization flaw. The issue is fixed in 2.0.38, and a workaround is documented in the linked advisory for those who cannot upgrade immediately. Because the framework itself is affected, any application that passes user-controlled data to unserialize() inherits the risk.

Impact

An unauthenticated attacker can execute arbitrary code in the context of the web application, leading to full server compromise. The CVSS scope change (S:C) reflects that impact can extend beyond the vulnerable component.

Attack surface

Reachable over the network with no authentication and no user interaction per the CVSS vector (AV:N/AC:L/PR:N/UI:N). Exploitation requires the application to pass attacker-controlled input into unserialize(), so exposure depends on how the application uses the framework.

Exploitation

Not listed in CISA KEV and no ransomware association is documented, but EPSS is very high at 0.788 (99.57th percentile), indicating strong predicted likelihood of exploitation. References are limited to patch and mitigation advisories, with no public exploit tag in the record.

What to do

  • Upgrade yiisoft/yii2 to version 2.0.38 or later.
  • If immediate upgrade is not possible, apply the workaround described in advisory GHSA-699q-wcff-g9mj.
  • Audit application code for unserialize() calls on user-controlled input and replace them with safe alternatives such as JSON or explicit allow-listed types.
  • Add input validation and integrity checks (for example signed or HMAC-protected serialized data) where serialization cannot be avoided.
  • Restrict outbound network and process execution permissions for the web application to limit post-exploitation impact.

Detection

  • Search application and framework code for unserialize() calls that receive request, cookie, header or other externally sourced data.
  • Monitor web logs for requests carrying serialized PHP object payloads (for example strings containing O: or a: patterns) to endpoints that deserialize input.
  • Alert on unexpected child processes, file writes or outbound connections spawned by the web server user, which can indicate successful RCE.
  • Track Yii 2 version strings in deployed applications and flag any instance below 2.0.38.

This assessment is produced automatically and is not human-reviewed. Verify against the vendor advisory before acting on it.

Affected products

1 vulnerable configurations from NVD's CPE data, grouped by vendor and product.

References

Track CVE-2020-15148 inside VULONE

Watch it alongside the ransomware crews, C2 infrastructure and forum chatter that reference it, query it through the API and pull it into your SIEM over TAXII.

Start free Open in platform

Related vulnerabilities

Same products first, then exploited flaws of the same weakness class.

9.8CVE-2024-58136Yii 2 behavior attachment flaw enables remote code executionYii 2 before 2.0.52 mishandles attaching a behavior defined by an __class array key, a regression of CVE-2024-4990. The flaw allows attacker-controll…KEVEPSS 88%analysed9.8CVE-2023-47130Yiiframework yii deserialization of untrusted data vulnerabilityYii is an open source PHP web framework. yiisoft/yii before version 1.1.29 are vulnerable to Remote Code Execution (RCE) if the application calls `un…EPSS 3.1%9.8CVE-2015-5467Yiiframework yii path traversal vulnerabilityweb\ViewAction in Yii (aka Yii2) 2.x before 2.0.5 allows attackers to execute any local .php file via a relative path in the view parameeter.EPSS 0.88%9.8CVE-2023-26750Yiiframework yii sql injection vulnerabilitySQL injection vulnerability found in Yii Framework Yii 2 Framework before v.2.0.47 allows the a remote attacker to execute arbitrary code via the run…EPSS 1.8%9.8CVE-2022-41922Yiiframework yii deserialization of untrusted data vulnerability`yiisoft/yii` before version 1.1.27 are vulnerable to Remote Code Execution (RCE) if the application calls `unserialize()` on arbitrary user input. T…EPSS 1.2%9.8CVE-2018-7269Yiiframework yii sql injection vulnerabilityThe findByCondition function in framework/db/ActiveRecord.php in Yii 2.x before 2.0.15 allows remote attackers to conduct SQL injection attacks via a…EPSS 1.9%9.8CVE-2018-8073Yiiframework yii code injection vulnerabilityYii 2.x before 2.0.15 allows remote attackers to execute arbitrary LUA code via a variant of the CVE-2018-7269 attack in conjunction with the Redis e…EPSS 1.6%9.1CVE-2024-4990Yii2 Component __set() allows arbitrary class instantiationIn yiisoft/yii2 version 2.0.48, the base Component class __set() magic method fails to validate that a value is a valid Behavior class name or config…EPSS 80%analysed

Source: NIST National Vulnerability Database (record CVE-2020-15148), CISA KEV, FIRST EPSS (scores of 2026-09-26). This page is refreshed as NVD updates the record.