{"id":"CVE-2026-108981","title":"ngx_cache_purge before 3.0.4 can allow file deletion via a symlink attack in certain situations where nginx and a served application (e.g., WordPress) run under the same user account","summary":"ngx_cache_purge before 3.0.4 can allow file deletion via a symlink attack in certain situations where nginx and a served application (e.g., WordPress) run under the same user account. The attacker must be able to create a symlink inside …","severity":"low","cvss":3.6,"cvssVector":"CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:N/I:L/A:L","cwe":["CWE-61"],"vendor":"denji","product":"ngx_cache_purge","affected":["ngx_cache_purge >= 2.4.0 <= 2.5.6","ngx_cache_purge >= 3.0.0 < 3.0.4"],"published":"2026-10-12","updated":"2026-10-16","sourceUpdated":"2026-10-16T19:56:15.773","source":"NVD","sourceUrl":"https://nvd.nist.gov/vuln/detail/CVE-2026-108981","references":[{"url":"https://github.com/nginx-modules/ngx_cache_purge/commit/a6da1352f52a8a02dd6828e88c39ed42fddcee96","label":"cve@mitre.org"},{"url":"https://github.com/nginx-modules/ngx_cache_purge/pull/72","label":"cve@mitre.org"},{"url":"https://github.com/nginx-modules/ngx_cache_purge/releases/tag/3.0.4","label":"cve@mitre.org"}],"tags":["nvd","cve.org"],"epss":0.00164,"epssPercentile":0.05574,"ssvc":{"exploitation":"none","automatable":"no","technicalImpact":"partial","timestamp":"2026-10-14T17:17:47.968041Z"},"ingestedAt":"2026-10-12T14:50:34.077Z","slug":"CVE-2026-108981","body":"## Overview\n\nngx_cache_purge before 3.0.4 can allow file deletion via a symlink attack in certain situations where nginx and a served application (e.g., WordPress) run under the same user account. The attacker must be able to create a symlink inside the cache path. Version 3.0.4 fixes this for the case of a symlink created at an arbitrary earlier time, but does not resolve an applicable TOCTOU race condition. (The ngx_cache_purge module follows symlinks while walking the cache directory tree during purge operations. The module relies on nginx's ngx_walk_tree(), which relies on stat() and therefore follows symlinks.)\n\n## Remediation\n\nRefer to the linked advisories for vendor-supplied fixes and affected version ranges.","depth":"sunlit","depthScore":20,"depthScoreParts":{"impact":19.8,"likelihood":0,"exploitation":0,"ransomware":0},"changes":[]}