{"schemaVersion":3,"id":"CVE-2026-87976","aliases":[],"status":"published","duplicateOf":null,"title":null,"description":"Apache NiFi Registry 0.4.0 through 2.11.0 are subject to path manipulation when storing extension bundle content using group, artifact, and version coordinates from uploaded NAR manifests. The default file persistence provider used coordinates as filesystem path components without rejected parent-directory names, and the path-containment check compared an unnormalized resolved path. An authenticated user authorized to write and delete bundles in a bucket can upload a NAR with a crafted manifest resulting in file system operations outside of the file persistence directory. Upgrading to Apache NiFi Registry 2.12.0 is the recommended mitigation, which rejects parent-directory coordinates and requires a normalized path to remain a strict child of the storage root location.","dates":{"published":"2026-09-16T19:32:56.293Z","modified":"2026-09-17T19:13:23.645Z","reserved":null,"kevAdded":[],"kevDue":[]},"cvss":{"headline":{"score":8.1,"severity":"high","version":"3.1","versionLabel":"v3.1","source":"NVD","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H","computed":false,"selection":"backend-summary"},"metrics":[{"version":"4.0","versionLabel":"v4.0","source":"CVE.org","score":7.2,"severity":"high","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:H/SC:N/SI:N/SA:N/S:P/AU:Y/R:U/V:C","exploitability":null,"impact":null,"computed":false},{"version":"4.0","versionLabel":"v4.0","source":"NVD","score":7.2,"severity":"high","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:P/AU:Y/R:U/V:C/RE:X/U:X","exploitability":null,"impact":null,"computed":false},{"version":"3.1","versionLabel":"v3.1","source":"NVD","score":8.1,"severity":"high","vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:H","exploitability":null,"impact":null,"computed":false}]},"epss":{"probability":0.00791,"percentile":0.55448,"severity":"low","asOf":"2026-10-18T00:00:00.000Z","change":{"pp":0.406,"baselineDate":"2026-09-18T00:00:00.000Z","baselineScore":0.00385},"history":[{"date":"2026-09-17T00:00:00.000Z","score":0.00385,"percentile":null},{"date":"2026-09-18T00:00:00.000Z","score":0.00385,"percentile":null},{"date":"2026-09-19T00:00:00.000Z","score":0.00385,"percentile":null},{"date":"2026-09-20T00:00:00.000Z","score":0.00385,"percentile":null},{"date":"2026-09-21T00:00:00.000Z","score":0.00385,"percentile":null},{"date":"2026-09-22T00:00:00.000Z","score":0.00667,"percentile":null},{"date":"2026-09-23T00:00:00.000Z","score":0.00667,"percentile":null},{"date":"2026-09-24T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-09-25T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.00791,"percentile":0.55448}],"last30":[{"date":"2026-09-18T00:00:00.000Z","score":0.00385,"percentile":null},{"date":"2026-09-19T00:00:00.000Z","score":0.00385,"percentile":null},{"date":"2026-09-20T00:00:00.000Z","score":0.00385,"percentile":null},{"date":"2026-09-21T00:00:00.000Z","score":0.00385,"percentile":null},{"date":"2026-09-22T00:00:00.000Z","score":0.00667,"percentile":null},{"date":"2026-09-23T00:00:00.000Z","score":0.00667,"percentile":null},{"date":"2026-09-24T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-09-25T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-09-26T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-09-27T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-09-28T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-09-29T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-09-30T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-10-01T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-10-02T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-10-03T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-10-04T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-10-05T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-10-06T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-10-07T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-10-08T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-10-09T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-10-10T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-10-11T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-10-12T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-10-13T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-10-14T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-10-15T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-10-16T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-10-17T00:00:00.000Z","score":0.00791,"percentile":null},{"date":"2026-10-18T00:00:00.000Z","score":0.00791,"percentile":0.55448}]},"kev":{"state":"not-listed","entries":[],"listedCount":0,"totalCatalogs":3,"catalogs":[{"source":"cisa","label":"CISA","listed":false,"entry":null},{"source":"enisa","label":"ENISA","listed":false,"entry":null},{"source":"circl","label":"CIRCL","listed":false,"entry":null}]},"ransomware":{"state":"none-recorded","sources":[]},"exploits":[],"exploitCount":0,"weaknesses":[{"id":"CWE-22","name":"Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')","description":"The product uses external input to construct a pathname that is intended to identify a file or directory that is located underneath a restricted parent directory, but the product does not properly neutralize special elements within the pathname that can cause the pathname to resolve to a location that is outside of the restricted directory.","type":"weakness","status":"Stable","abstraction":"Base","likelihoodOfExploit":"High","url":"https://cwe.mitre.org/data/definitions/22.html"}],"affected":[{"vendor":"apache software foundation","product":"apache nifi registry","name":"Apache NiFi Registry","label":"apache nifi registry","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"≥ 0.4.0, ≤ 2.11.0","noFixRecorded":false,"fixedIn":null}],"versionsText":"≥ 0.4.0, ≤ 2.11.0","eol":null,"hubHref":"/vendor/apache_software_foundation/apache_nifi_registry"},{"vendor":"apache","product":"nifi","name":"nifi","label":"nifi","ecosystem":null,"cpePart":"a","purl":null,"purlType":null,"versions":[{"text":"≥ 0.4.0, < 2.12.0","noFixRecorded":false,"fixedIn":null}],"versionsText":"≥ 0.4.0, < 2.12.0","eol":{"isEol":null,"eolDate":null,"matchMethod":"cpe","cycle":null,"product":{"name":"apache-nifi","label":"Apache NiFi","category":"server-app"}},"hubHref":"/vendor/apache/nifi"}],"affectedCount":2,"eol":{"hasEol":false,"count":0},"references":[{"url":"https://lists.apache.org/thread/kw89toml5zq20ry3279mx7y184vrlb8x","label":"lists.apache.org/thread/kw89toml5zq20ry3279mx7y184vrlb8x","hostname":"lists.apache.org","tags":["Vendor Advisory","Mailing List"]},{"url":"http://www.openwall.com/lists/oss-security/2026/09/16/11","label":"www.openwall.com/lists/oss-security/2026/09/16/11","hostname":"www.openwall.com","tags":["Mailing List","Third Party Advisory"]}],"lineage":{"upstream":[],"downstream":[],"duplicates":[],"related":[]},"timeline":[{"kind":"published","date":"2026-09-16T19:32:56.293Z","label":"Published","detail":"Vulnerability first disclosed.","source":null},{"kind":"modified","date":"2026-09-17T19:13:23.645Z","label":"Last modified","detail":"Vulnerability information updated.","source":null}],"risk":{"score":33,"level":"medium","profile":"Default","thresholds":{"critical":75,"high":50,"medium":25,"low":10}},"meta":{"dataAsOf":"2026-10-19T13:27:19.878Z","stale":false,"partial":false}}