CyberSecBulletin
CVE-2024-4990NVD status: Analyzed

yiisoft/yii2: Use of Externally-Controlled Input to Select Classes or Code

CVE-2024-4990 is a critical-severity use of externally-controlled input to select classes or code vulnerability in yiisoft/yii2 from Yiisoft, with a CVSS 3.1 base score of 9.1 out of 10. It can be exploited remotely over the network by an unauthenticated attacker, without any action from a user. Affected yiisoft/yii2 versions: latest and earlier. The record does not name a fixed version, so check the vendor advisory. There is no confirmed exploitation so far. EPSS estimates a 80.1% chance of exploitation within 30 days, which is in the top 0.38% of all scored CVEs.

Patch now

Exploitation in the next 30 days is more likely than not, according to EPSS.

What to do

  1. Check which version of yiisoft/yii2 you run against the affected versions below, and install the vendor's latest release.
  2. Until you can update, restrict network access to the affected service so it is not reachable from untrusted networks.

Affected products and versions

VendorProductAffected versionsFixed in
Yiisoftyiisoft/yii2latest and earlierNot stated
YiiframeworkYii2.0.48Not stated

Version data comes from the organisation that assigned the CVE. Confirm against the vendor advisory before deciding you are unaffected.

How the severity score breaks down

Attack vector
NetworkCan be exploited remotely over a network, including the internet.
Attack complexity
LowNo special conditions are needed; the attack works reliably.
Privileges required
NoneNo account or login is needed.
User interaction
NoneNo action by a victim is required.
Scope
UnchangedImpact stays within the vulnerable component.
Confidentiality
HighAll data handled by the component can be read.
Integrity
NoneNothing can be modified.
Availability
HighThe component can be taken down completely.

Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:H. Scored by NVD.

Scoring systemScoreSeverityScored by
CVSS 3.19.1CriticalNVD
CVSS 3.08.1HighCNA (huntr.dev)

Official description

In yiisoft/yii2 version 2.0.48, the base Component class contains a vulnerability where the `__set()` magic method does not validate that the value passed is a valid Behavior class name or configuration. This allows an attacker to instantiate arbitrary classes, passing parameters to their constructors and invoking setter methods. Depending on the installed dependencies, various types of attacks are possible, including the execution of arbitrary code, retrieval of sensitive information, and unauthorized access.

Source: the CVE record as published by its numbering authority, via NVD and CVE.org.

The underlying weakness: Use of Externally-Controlled Input to Select Classes or Code

The product uses external input with reflection to select which classes or code to use, but it does not sufficiently prevent the input from selecting improper classes or code.

How developers prevent this class of flaw

  • Refactor your code to avoid using reflection.
  • Do not use user-controlled inputs to select and load classes or code.
  • Apply strict input validation by using allowlists or indirect selection to ensure that the user is only selecting allowable classes or code.

More Use of Externally-Controlled Input to Select Classes or Code vulnerabilities (CWE-470)

Timeline

  1. CVE record published.
  2. CISA published its SSVC assessment (exploitation: poc, automatable: no, technical impact: total).
  3. Record last changed materially (score, affected products, status or references).

References

Technical write-ups (may include proof of concept)

Recent Use of Externally-Controlled Input to Select Classes or Code vulnerabilities

Spotted an error? Tell us.