# CVE-2026-124622: olivier-ls PHP-FTS Storage.php open toctou

Status: published. Published: 2026-11-09. Updated: 2026-11-09.

A vulnerability was identified in olivier-ls PHP-FTS up to 1.1.3. This impacts the function TrigramIndex::open of the file Storage.php. Such manipulation leads to time-of-check time-of-use. The attack needs to be performed locally. Upgrading to version 1.1.4 will fix this issue. The name of the patch is 0b2fae333d6b022da7ed4c43e2d41aa03f91dff3. Upgrading the affected component is recommended. The project maintainer explains: "[T]he attack requires write access to the index directory by a user other than the one running the application. That is a real shared-hosting scenario and worth defending against, which is why it is fixed but it is a hardening measure rather than a remotely reachable vulnerability, and the "Code Execution" impact additionally assumes the symlink target is a web-served .php file."

## Remediation

- fix: The reporting source identifies this reference as a patch. Check the advisory for affected versions and supported release branches. (source: CNA: VulDB) — https://github.com/olivier-ls/php-fts/commit/0b2fae333d6b022da7ed4c43e2d41aa03f91dff3
- fix: The reporting source identifies this reference as a patch. Check the advisory for affected versions and supported release branches. (source: CNA: VulDB) — https://github.com/olivier-ls/php-fts/releases/tag/v1.1.4

## Affected products and versions

- olivier-ls / PHP-FTS: 1.1.0 (affected); 1.1.1 (affected); 1.1.2 (affected); 1.1.3 (affected); 1.1.4 (unaffected). Source: CNA: VulDB

## Severity and prioritization

- CVSS 4.0: 4.8 (medium); CVSS:4.0/AV:L/AC:L/AT:N/PR:L/UI:N/VC:L/VI:L/VA:L/SC:N/SI:N/SA:N/E:X; source: CNA: VulDB

- CVSS 3.1: 5.3 (medium); CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L/E:X/RL:O/RC:C; source: CNA: VulDB

- CVSS 3.0: 5.3 (medium); CVSS:3.0/AV:L/AC:L/PR:L/UI:N/S:U/C:L/I:L/A:L/E:X/RL:O/RC:C; source: CNA: VulDB

- CVSS 2.0: 4.3 (medium); AV:L/AC:L/Au:S/C:P/I:P/A:P/E:ND/RL:OF/RC:C; source: CNA: VulDB

- CISA KEV: No listing in collected sources

- EPSS: Not available

- SSVC: Not available

- Weaknesses: CWE-367, CWE-362

## Exploit evidence

No exploit evidence in collected sources. This is not proof of no exploitation.

## References

- https://vuldb.com/vuln/433047 (CNA: VulDB; vdb-entry, technical-description)

- https://vuldb.com/vuln/433047/cti (CNA: VulDB; signature, permissions-required)

- https://vuldb.com/cve/CVE-2026-124622 (CNA: VulDB; third-party-advisory)

- https://vuldb.com/submit/1040549 (CNA: VulDB; third-party-advisory)

- https://github.com/olivier-ls/php-fts/issues/3 (CNA: VulDB; issue-tracking)

- https://github.com/olivier-ls/php-fts/commit/0b2fae333d6b022da7ed4c43e2d41aa03f91dff3 (CNA: VulDB; patch)

- https://github.com/olivier-ls/php-fts/releases/tag/v1.1.4 (CNA: VulDB; patch)

- https://github.com/olivier-ls/php-fts/ (CNA: VulDB; product)

## Provenance

- CNA: VulDB: https://www.cve.org/CVERecord?id=CVE-2026-124622; retrieved 2026-11-09; source updated 2026-11-09

Revision: bf37b9655f940a9d7144f630b55749b5e1efc4a412bd69620ce8f54f0f839802

Canonical: https://y2.dev/cve/CVE-2026-124622

## Agent and API access

Public CVE pages, Markdown, and JSON are free to read without an account or API key.

- Public catalog: https://y2.dev/cve/index.json. Follow nextCursor with the same search, filters, sort, and limit (1–100). A null cursor marks the end.

- WebMCP: search_cve_disclosures, get_cve_disclosure, get_cve_page_markdown, get_y2_cve_access. Available in compatible browsers.

- Cyber API: https://api.y2.dev/api/v2/cyber/cves and https://api.y2.dev/api/v2/cyber/cves/{cveId}.

- Y2 Pro or Elite: create a workspace API key with the intel:cyber scope and send Authorization: Bearer <Y2_API_KEY>. Setup: https://y2.dev/docs/api/create-key.

- x402: Pay per request without an account or API key. Omit Authorization, read the HTTP 402 PAYMENT-REQUIRED challenge, validate its current requirements, and retry with PAYMENT-SIGNATURE through an authorized payment client. These browser tools never make payments. Guide: https://y2.dev/docs/api/x402.

- OpenAPI: https://y2.dev/api/openapi.yaml. Agent access metadata: https://y2.dev/cve/agent.json.

Collected public records only. Check source status for coverage and freshness.