Servers, proxies and network services
Apache Traffic Server: CVE-2026-111813 and CVE-2026-111811 experimental plugins
Apache Traffic Server check
Apache Traffic Server (ATS) is a caching reverse and forward proxy used in front of large sites and CDNs. Its October 2026 security release fixes 15 vulnerabilities. Two of them are in experimental plugins and are the severe ones:
| Item | CVE-2026-111813 | CVE-2026-111811 |
|---|---|---|
| Plugin | magick |
tsmemcache |
| What | Passes client query strings unfiltered to ImageMagick's convert in its default (unsigned) configuration, so an unauthenticated client controls convert's arguments: command and argument injection |
Exposes the shared proxy cache over the network with no authentication: unauthenticated read, write and deletion of the cache |
| Severity | Critical, CVSS 10.0 | CVSS 9.0 by Apache's rating (Moderate on their scale); some aggregators list 9.4 Critical |
| Needs | The magick plugin loaded, and no signing configured |
The tsmemcache plugin loaded |
| Affected | 8.0.0 through 8.1.11, 9.0.0 through 9.2.15, 10.0.0 through 10.1.4, and 10.2.0 (the magick plugin from 8.0.1) |
| Fixed | 9.2.16, 10.1.5 and 10.2.1, released 20 October 2026 |
| Move to | A fixed branch. 8.x, 9.0, 9.1 and 10.0 are end-of-life branches |
| Same release | Thirteen other flaws (request smuggling, cache poisoning, denial of service) that only the update fixes |
Both flaws only matter when the plugin is loaded. The plugins are experimental and not enabled by default. So the tool reads the configuration (plugin.config and the remap files) for magick.so and tsmemcache.so rather than looking for files. This matters: on a typical Ubuntu host the only magick.so on disk is an ImageMagick coder, not the ATS plugin, and a check that merely searched for the file would give a false alarm.
Quick start
-
Download the script. The repository is mirrored on GitHub and Codeberg; pick a base URL.
# BASE from GitHub: https://raw.githubusercontent.com/PrivacySafe/security-patches/refs/heads/main # BASE from Codeberg: https://codeberg.org/PrivacySafe/security-patches/raw/branch/main # curl -fLO "$BASE/trafficserver/trafficserver-check.sh" curl -fLO https://raw.githubusercontent.com/PrivacySafe/security-patches/refs/heads/main/trafficserver/trafficserver-check.sh -
Read it before running it, then make it executable.
less trafficserver-check.sh chmod +x trafficserver-check.sh -
Check this host. It finds
traffic_serveronPATH, in the usual locations and from running processes, and reads the configuration directory (/etc/trafficserverand the other usual places). To point it elsewhere, setATS_CONFIG_DIR../trafficserver-check.sh check ATS_CONFIG_DIR=/opt/ts/etc/trafficserver ./trafficserver-check.sh check
Commands
| Command | What it does |
|---|---|
check [BINARY ...] (default) |
Reads the version from traffic_server -V, applies the ranges, checks the owning package's changelog for a backport, and scans plugin.config, remap.config, remap.yaml, plugin.yaml and the other *.config and *.yaml files in the configuration directory for the two plugins. Comments are ignored |
version |
Prints the script version |
Environment: ATS_CONFIG_DIR (space separated directories) replaces configuration discovery.
Exit codes: 0 nothing exposed, 1 an affected version loads one of the plugins, or its configuration could not be read, 2 bad arguments.
How to read the result
- Affected version, plugin loaded: exposed. The script prints the file and line number. Upgrade, and remove the plugin line until you have.
- Affected version, neither plugin loaded: exit
0: these two flaws are not reachable. The script still warns to update, because the same release fixes thirteen other flaws. - End-of-life branch (8.x, 9.0, 9.1, 10.0): always reported as in the affected range with no upstream fix. With neither plugin loaded it exits
0but tells you to plan the move. - Configuration directory not found or unreadable: treated as exposed.
- The plugin name must match exactly.
libmagick.so,notmagick.soandxtsmemcache.soare not the plugins and are not matched. A full path such as/opt/ts/libexec/trafficserver/magick.sois. - Distribution packages often backport fixes without changing the version, so the script reads the package changelog for a mention of either CVE.
Fixing it
Upgrade to 9.2.16, 10.1.5 or 10.2.1, or to a distribution build that carries the fix, and restart Traffic Server. Until then, remove magick.so and tsmemcache.so from plugin.config and the remap files and restart. That is PrivacySafe's recommendation. Neither plugin is enabled by default and both are experimental.
Sources
- Apache Traffic Server October 2026 CVE release
- Apache announcement: multiple vulnerabilities fixed in 9.2.16, 10.1.5 and 10.2.1
Before you run it
- The fix. Update to 9.2.16, 10.1.5 or 10.2.1. The 8.x, 9.0, 9.1 and 10.0 branches are end of life: move to a fixed branch.
- Both severe flaws are in experimental plugins and only matter when the plugin is loaded (
magickfor CVE-2026-111813,tsmemcachefor CVE-2026-111811). The script reads the configuration to see whether it is. The October release fixes 15 vulnerabilities in all. Only these two are covered, and the other thirteen (request smuggling, cache poisoning, denial of service) are fixed only by the update. - It reads the configuration, not the files. The script looks in
plugin.configand the remap files formagick.soandtsmemcache.so, because the plugins are experimental and not enabled by default, and amagick.soon disk can just as well be an ImageMagick coder. It also reads the version fromtraffic_server -Vand checks the owning package's changelog for a backported fix. - There is no hunt. No indicators of exploitation have been published.
- It also checks running docker and podman containers, unless you name a directory or set
SCAN_CONTAINERS=0. In each running container, a read-only probe captures the output oftraffic_server -Vand the configuration files. Every line that does not loadmagick.soortsmemcache.sois blanked inside the container, so remap tokens and other credentials never leave it and line numbers stay exact. The script then runs once per container in isolation. A path shown as.../docker_NAME/...is inside the container NAME.
The Security Patches software and this documentation are dedicated to the public domain under CC0 1.0 Universal. Other pages on privacysafe.app/docs are CC BY-SA 4.0 unless the page says otherwise.