In PHP versions 8.2.* before 8.2.31, 8.3.* before 8.3.31, 8.4.* before 8.4.21, and 8.5.* before 8.5.6, when SoapServer is configured with SOAP_PERSISTENCE_SESSION, the handler object is persisted across requests via session storage. However, in the case SOAP requests results in an error, the persistance is handled incorrectly, resulting in freeing the object while keeping a pointer to it, which may lead to use-after-free. This may lead to memory corruption, information disclosure, or process crashes, with confidentiality, integrity, and availability impact on the vulnerable system.
The product reuses or references memory after it has been freed. At some point afterward, the memory may be allocated again and saved in another pointer, while the original pointer references a location somewhere within the new allocation. Any operations using the original pointer are no longer valid because the memory “belongs” to the code that operates on the new pointer.
| Name | Vendor | Start Version | End Version |
|---|---|---|---|
| Php | Php | 8.2.0 (including) | 8.2.31 (excluding) |
| Php | Php | 8.3.0 (including) | 8.3.31 (excluding) |
| Php | Php | 8.4.0 (including) | 8.4.21 (excluding) |
| Php | Php | 8.5.0 (including) | 8.5.6 (excluding) |
| Php7.0 | Ubuntu | esm-infra/xenial | * |
| Php8.1 | Ubuntu | jammy | * |
| Php8.3 | Ubuntu | noble | * |
| Php8.3 | Ubuntu | upstream | * |
| Php8.4 | Ubuntu | questing | * |
| Php8.4 | Ubuntu | upstream | * |
| Php8.5 | Ubuntu | devel | * |
| Php8.5 | Ubuntu | resolute | * |
| Php8.5 | Ubuntu | upstream | * |