---
id: "CVE-2026-124622"
page: "https://infrastack.ai/live/CVE-2026-124622"
kind: "vulnerability"
aliases: ["CVE-2026-124622"]
title: "PHP-FTS: symlink race in index storage lets local users tamper with files"
severity: "medium"
cvss: 5.3
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["package", "php", "php-fts", "shared-hosting"]
not_affected_if: ["private-index-directory", "single-user-host", "version-1.1.4-or-later"]
published_at: "2026-11-09T13:17:07+00:00"
first_seen_at: "2026-11-09T13:26:51+00:00"
updated_at: "2026-11-09T13:27:46+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-124622", "first_seen_at": "2026-11-09T13:26:51+00:00"}]
exploit_sources: []
---

# PHP-FTS: symlink race in index storage lets local users tamper with files

Link for people: https://infrastack.ai/live/CVE-2026-124622 (this .md is for agents)

PHP-FTS up to 1.1.3 has a time-of-check time-of-use race in TrigramIndex::open in Storage.php. A local user with write access to the index directory can exploit it to redirect file access, which the maintainer says can lead to code execution only if the symlink target is a web-served .php file.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Check the installed php-fts version in your project's lock file or `composer show` output, and see whether it is `1.1.3` or earlier.
- Look at whether the index directory is writable by users other than the one running the application.

## Fix

- php-fts: upgrade to `1.1.4` (patch commit 0b2fae333d6b022da7ed4c43e2d41aa03f91dff3)

## Timeline

- 2026-11-09T13:26:51+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-124622

## Documents

- [fix] Patch: github.com https://github.com/olivier-ls/php-fts/commit/0b2fae333d6b022da7ed4c43e2d41aa03f91dff3
- [fix] Release notes: github.com https://github.com/olivier-ls/php-fts/releases/tag/v1.1.4

## From the sources

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."

---

_Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai_
