{"id":"CVE-2026-72814","aliases":["EUVD-2026-58629","GHSA-8v2v-wjwg-vx6r","GHSA-f87p-3w4v-5q9x","SUSE-SU-2026:23572-1","UBUNTU-CVE-2026-72814","openSUSE-SU-2026:21689-1"],"status":"published","title":"actix-files before 0.6.10 Information Disclosure via Files","description":"The actix-files crate (actix_files) before version 0.6.10 contains an information exposure vulnerability. When a non-existing folder is passed as the serve_from argument to Files::new(), the mount path defaults to an empty path; the service then joins the request path with this empty path and canonicalizes it, causing Rust to resolve it as a relative path. As a result, an attacker can request paths that resolve relative to the application's working directory and access unintended files.","severity":{"version":"4.0","score":6.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-12","score":0.00539,"percentile":0.45893,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-200","CWE-22"],"published":"2026-02-06T18:56:20Z","modified":"2026-10-31T02:30:29Z","fixes":[{"ecosystem":"crates.io","package":"actix-files","fixed_in":["0.6.10"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"crates.io","package":"actix-files","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"last_affected":"0.6.9"},{"fixed":"0.6.10"}]}]},{"source":"osv","ecosystem":"crates.io","package":"actix-files","ranges":[{"type":"SEMVER","events":[{"introduced":"0"},{"fixed":"0.6.10"}]}]},{"source":"osv","ecosystem":"SUSE:Linux Enterprise Server 16.0","package":"gstreamer-devtools","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.26.7-160000.2.1"}]}],"bundled":6},{"source":"osv","ecosystem":"SUSE:Linux Enterprise Server for SAP applications 16.0","package":"gstreamer-devtools","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.26.7-160000.2.1"}]}],"bundled":6},{"source":"osv","ecosystem":"Ubuntu:26.10","package":"rust-actix-files","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"}]}],"versions":["0.6.10-1"]},{"source":"osv","ecosystem":"openSUSE:Leap 16.0","package":"gstreamer-devtools","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"1.26.7-160000.2.1"}]}],"bundled":6}],"products":[{"vendor":"actix","product":"actix-files"}],"references":[{"url":"https://github.com/actix/actix-web/security/advisories/GHSA-8v2v-wjwg-vx6r","tags":["vendor-advisory","exploit","advisory","web","report"]},{"url":"https://www.vulncheck.com/advisories/actix-web-before-information-disclosure-via-files","tags":["third-party-advisory","advisory","report"]},{"url":"https://github.com/actix/actix-web/blob/fba766b4beb92278665d58815c94d336015225c5/actix-files/src/files.rs#L104","tags":["web"]},{"url":"https://github.com/actix/actix-web/blob/fba766b4beb92278665d58815c94d336015225c5/actix-files/src/files.rs#L38","tags":["web"]},{"url":"https://github.com/actix/actix-web/blob/fba766b4beb92278665d58815c94d336015225c5/actix-files/src/files.rs#L98","tags":["web"]},{"url":"https://github.com/actix/actix-web/blob/fba766b4beb92278665d58815c94d336015225c5/actix-files/src/service.rs#L136","tags":["web"]},{"url":"https://github.com/advisories/GHSA-8v2v-wjwg-vx6r"},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2026-72814","tags":["advisory"]},{"url":"https://github.com/advisories/GHSA-f87p-3w4v-5q9x"},{"url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/72xxx/CVE-2026-72814.json","tags":["advisory"]},{"url":"https://github.com/actix/actix-web","tags":["package"]},{"url":"https://www.suse.com/support/update/announcement/2026/suse-su-202623572-1/","tags":["advisory"]},{"url":"https://bugzilla.suse.com/1243178","tags":["report"]},{"url":"https://bugzilla.suse.com/1249015","tags":["report"]},{"url":"https://bugzilla.suse.com/1257914","tags":["report"]},{"url":"https://bugzilla.suse.com/1274306","tags":["report"]},{"url":"https://bugzilla.suse.com/1275209","tags":["report"]},{"url":"https://bugzilla.suse.com/1275210","tags":["report"]},{"url":"https://www.suse.com/security/cve/CVE-2025-4574","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-58160","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-25541","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-25727","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-72813","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2026-72814","tags":["web"]},{"url":"https://ubuntu.com/security/CVE-2026-72814","tags":["report"]},{"url":"https://www.cve.org/CVERecord?id=CVE-2026-72814","tags":["report"]},{"url":"","tags":["advisory"]}],"sources":{"cve":[{"id":"CVE-2026-72814","title":"actix-files before 0.6.10 Information Disclosure via Files","description":"The actix-files crate (actix_files) before version 0.6.10 contains an information exposure vulnerability. When a non-existing folder is passed as the serve_from argument to Files::new(), the mount path defaults to an empty path; the service then joins the request path with this empty path and canonicalizes it, causing Rust to resolve it as a relative path. As a result, an attacker can request paths that resolve relative to the application's working directory and access unintended files.","status":"published","published":"2026-08-14T11:35:26.816Z","modified":"2026-10-29T21:16:49.247Z","cvss":[{"version":"4.0","score":6.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N","level":"medium","assessor":"cna"}],"cwes":["CWE-22"],"updated_at":"2026-11-02T14:19:52.016971Z"}],"euvd":[{"id":"EUVD-2026-58629","description":"The actix-files crate (actix_files) before version 0.6.10 contains an information exposure vulnerability. When a non-existing folder is passed as the serve_from argument to Files::new(), the mount path defaults to an empty path; the service then joins the request path with this empty path and canonicalizes it, causing Rust to resolve it as a relative path. As a result, an attacker can request paths that resolve relative to the application's working directory and access unintended files.","status":"published","published":"2026-08-14T11:35:26Z","modified":"2026-10-29T21:16:49Z","cvss":[{"version":"4.0","score":6.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N","level":"medium"}],"updated_at":"2026-11-02T16:59:13.894662Z"}],"ghsa":[{"id":"GHSA-8v2v-wjwg-vx6r","title":"actix-files has a possible exposure of information vulnerability","description":"### Summary\n\nWhen passing a non-existing folder to the `actix_files::Files::new()` method causes the actix server to expose unexpected files.\n\n### Details\n\nThe `actix-files` library exposes a [`Files` struct](https://github.com/actix/actix-web/blob/fba766b4beb92278665d58815c94d336015225c5/actix-files/src/files.rs#L38) that configures an actix `service` to serve the files in a folder as static assets. Below you can find the [signature of the `Files::new` method](https://github.com/actix/actix-web/blob/fba766b4beb92278665d58815c94d336015225c5/actix-files/src/files.rs#L98):\n\n```rust\npub fn new\u003cT: Into\u003cPathBuf\u003e\u003e(mount_path: \u0026str, serve_from: T) -\u003e Files\n```\n\nWhen the `mount_path` you pass to `Files` doesn't exist, [it defaults to an empty path](https://github.com/actix/actix-web/blob/fba766b4beb92278665d58815c94d336015225c5/actix-files/src/files.rs#L104) (`Path::new()`). When the service receives a HTTP request, it [joins the request information with the empty path](https://github.com/actix/actix-web/blob/fba766b4beb92278665d58815c94d336015225c5/actix-files/src/service.rs#L136) and calls `canonicalize`. Rust resolves this path as relative and returns any file that matches it.\n\nThis behavior causes the library to expose unexpected files when the folder is not present.\n\n### PoC\n\n_There is a working PoC on https://github.com/Angelmmiguel/actix-files-vuln, although the next steps can be followed to reproduce the issue_\n\n1. Clone the https://github.com/actix/examples repository.\n2. Change your directory to the `basics/static-files` folder.\n3. Edit the `src/main.rs` file and change the line 13 to mount a non-existing folder:\n\n    ```diff\n    -        .service(Files::new(\"/images\", \"static/images/\").show_files_listing())\n    +        .service(Files::new(\"/images\", \"static/missing/\").show_files_listing())\n    ```\n    \n4. Run the project with `cargo run`.\n5. Access the \u003chttp://localhost:8080/images/Cargo.toml\u003e URL.\n\n### Impact\n\nThis is an exposure of information vulnerability. It affects anyone using the `actix-files::Files` library that mounts a non-existing folder for any reason.","status":"published","published":"2026-02-06T18:56:20Z","modified":"2026-02-06T18:56:22Z","cvss":[{"version":"4.0","score":6.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N","level":"medium"}],"cwes":["CWE-200"],"updated_at":"2026-11-02T14:39:23.728882Z"},{"id":"GHSA-f87p-3w4v-5q9x","title":"The actix-files crate (actix_files) before version 0.6.10 contains an information exposure...","description":"The actix-files crate (actix_files) before version 0.6.10 contains an information exposure vulnerability. When a non-existing folder is passed as the serve_from argument to Files::new(), the mount path defaults to an empty path; the service then joins the request path with this empty path and canonicalizes it, causing Rust to resolve it as a relative path. As a result, an attacker can request paths that resolve relative to the application's working directory and access unintended files.","status":"published","published":"2026-08-14T12:31:25Z","modified":"2026-08-14T12:31:34Z","cvss":[{"version":"4.0","score":6.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/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:X/AU:X/R:X/V:X/RE:X/U:X","level":"medium"}],"cwes":["CWE-22"],"updated_at":"2026-11-02T15:10:28.576497Z"}],"nvd":[{"id":"CVE-2026-72814","description":"The actix-files crate (actix_files) before version 0.6.10 contains an information exposure vulnerability. When a non-existing folder is passed as the serve_from argument to Files::new(), the mount path defaults to an empty path; the service then joins the request path with this empty path and canonicalizes it, causing Rust to resolve it as a relative path. As a result, an attacker can request paths that resolve relative to the application's working directory and access unintended files.","status":"published","published":"2026-08-14T12:16:44.387Z","modified":"2026-10-29T21:17:32.247Z","cvss":[{"version":"4.0","score":6.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/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:X/AU:X/R:X/V:X/RE:X/U:X","level":"medium","assessor":"secondary"}],"cwes":["CWE-22"],"updated_at":"2026-11-02T14:12:37.557758Z"}],"osv":[{"id":"CVE-2026-72814","title":"actix-files before 0.6.10 Information Disclosure via Files","description":"The actix-files crate (actix_files) before version 0.6.10 contains an information exposure vulnerability. When a non-existing folder is passed as the serve_from argument to Files::new(), the mount path defaults to an empty path; the service then joins the request path with this empty path and canonicalizes it, causing Rust to resolve it as a relative path. As a result, an attacker can request paths that resolve relative to the application's working directory and access unintended files.","status":"published","published":"2026-08-14T11:35:26.816Z","modified":"2026-10-31T02:30:29.11687682Z","cvss":[{"version":"4.0","score":6.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N","level":"medium"}],"cwes":["CWE-22"],"updated_at":"2026-11-02T15:45:15.88521Z"},{"id":"GHSA-8v2v-wjwg-vx6r","title":"actix-files has a possible exposure of information vulnerability","description":"### Summary\n\nWhen passing a non-existing folder to the `actix_files::Files::new()` method causes the actix server to expose unexpected files.\n\n### Details\n\nThe `actix-files` library exposes a [`Files` struct](https://github.com/actix/actix-web/blob/fba766b4beb92278665d58815c94d336015225c5/actix-files/src/files.rs#L38) that configures an actix `service` to serve the files in a folder as static assets. Below you can find the [signature of the `Files::new` method](https://github.com/actix/actix-web/blob/fba766b4beb92278665d58815c94d336015225c5/actix-files/src/files.rs#L98):\n\n```rust\npub fn new\u003cT: Into\u003cPathBuf\u003e\u003e(mount_path: \u0026str, serve_from: T) -\u003e Files\n```\n\nWhen the `mount_path` you pass to `Files` doesn't exist, [it defaults to an empty path](https://github.com/actix/actix-web/blob/fba766b4beb92278665d58815c94d336015225c5/actix-files/src/files.rs#L104) (`Path::new()`). When the service receives a HTTP request, it [joins the request information with the empty path](https://github.com/actix/actix-web/blob/fba766b4beb92278665d58815c94d336015225c5/actix-files/src/service.rs#L136) and calls `canonicalize`. Rust resolves this path as relative and returns any file that matches it.\n\nThis behavior causes the library to expose unexpected files when the folder is not present.\n\n### PoC\n\n_There is a working PoC on https://github.com/Angelmmiguel/actix-files-vuln, although the next steps can be followed to reproduce the issue_\n\n1. Clone the https://github.com/actix/examples repository.\n2. Change your directory to the `basics/static-files` folder.\n3. Edit the `src/main.rs` file and change the line 13 to mount a non-existing folder:\n\n    ```diff\n    -        .service(Files::new(\"/images\", \"static/images/\").show_files_listing())\n    +        .service(Files::new(\"/images\", \"static/missing/\").show_files_listing())\n    ```\n    \n4. Run the project with `cargo run`.\n5. Access the \u003chttp://localhost:8080/images/Cargo.toml\u003e URL.\n\n### Impact\n\nThis is an exposure of information vulnerability. It affects anyone using the `actix-files::Files` library that mounts a non-existing folder for any reason.","status":"published","published":"2026-02-06T18:56:20Z","modified":"2026-09-10T03:50:34.469641471Z","cvss":[{"version":"4.0","score":6.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N","level":"medium"}],"cwes":["CWE-200"],"updated_at":"2026-11-02T15:46:42.78452Z"},{"id":"UBUNTU-CVE-2026-72814","description":"The actix-files crate (actix_files) before version 0.6.10 contains an information exposure vulnerability. When a non-existing folder is passed as the serve_from argument to Files::new(), the mount path defaults to an empty path; the service then joins the request path with this empty path and canonicalizes it, causing Rust to resolve it as a relative path. As a result, an attacker can request paths that resolve relative to the application's working directory and access unintended files.","status":"published","published":"2026-08-14T12:16:00Z","modified":"2026-10-17T12:59:35.853838875Z","cvss":[{"version":"4.0","score":6.3,"vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N","level":"medium"}],"updated_at":"2026-11-02T16:57:08.628462Z"},{"id":"openSUSE-SU-2026:21689-1","title":"Security update for gstreamer-devtools","description":"This update for gstreamer-devtools fixes the following issues:\n\n- CVE-2025-4574: crossbeam-channel: internal `Channel` type's `Drop` method has a race condition that can lead to a\n  double-free and memory corruption (bsc#1243178).\n- CVE-2025-58160: tracing-subscriber: untrusted user input containing ANSI escape sequences can be injected into\n  terminal output when logged and lead to terminal manipulation (bsc#1249015).\n- CVE-2026-25541: bytes: integer overflow in `BytesMut:reserve` can lead to undefined behavior and crashes\n  (bsc#1274306).\n- CVE-2026-25727: time: parsing of user-provided input by the RFC 2822 date parser can lead to stack exhaustion\n  (bsc#1257914).\n- CVE-2026-72813: actix-files: empty `Range` header in GET requests for static files can lead to a process crash\n  (bsc#1275210).\n- CVE-2026-72814: actix-files: non-existing folders passed as an argument to the `actix_files::Files::new()` method can\n  lead to information disclosure (bsc#1275209).\n","status":"published","published":"2026-08-30T14:39:29Z","modified":"2026-08-31T18:15:04.209335775Z","updated_at":"2026-11-02T16:58:42.426393Z"},{"id":"SUSE-SU-2026:23572-1","title":"Security update for gstreamer-devtools","description":"This update for gstreamer-devtools fixes the following issues:\n\n- CVE-2025-4574: crossbeam-channel: internal `Channel` type's `Drop` method has a race condition that can lead to a\n  double-free and memory corruption (bsc#1243178).\n- CVE-2025-58160: tracing-subscriber: untrusted user input containing ANSI escape sequences can be injected into\n  terminal output when logged and lead to terminal manipulation (bsc#1249015).\n- CVE-2026-25541: bytes: integer overflow in `BytesMut:reserve` can lead to undefined behavior and crashes\n  (bsc#1274306).\n- CVE-2026-25727: time: parsing of user-provided input by the RFC 2822 date parser can lead to stack exhaustion\n  (bsc#1257914).\n- CVE-2026-72813: actix-files: empty `Range` header in GET requests for static files can lead to a process crash\n  (bsc#1275210).\n- CVE-2026-72814: actix-files: non-existing folders passed as an argument to the `actix_files::Files::new()` method can\n  lead to information disclosure (bsc#1275209).\n","status":"published","published":"2026-08-30T14:39:08Z","modified":"2026-09-29T18:23:09.296200538Z","updated_at":"2026-11-02T15:54:03.991985Z"}]}}
