GHSA-8v2v-wjwg-vx6r: Actix files Actix-files Has A Possible Exposure Vulnerability

MODERATE
CWE-200
Published
Advisory Summary

GHSA-8v2v-wjwg-vx6r is a MODERATE actix-files has a possible exposure vulnerability (CWE-200: Exposure of Sensitive Information to an Unauthorized Actor) affecting Actix files libraries in the crates.io ecosystem. The issue involves actix-files has a possible exposure of information vulnerability. Remediation is available by upgrading affected packages to version 0.6.10.

GHSA-8v2v-wjwg-vx6r at a Glance

CVE Identifier N/A
GHSA Identifier GHSA-8v2v-wjwg-vx6r
Severity MODERATE
CVSS v3.1 Base Score N/A
CWE Classification CWE-200: Exposure of Sensitive Information to an Unauthorized Actor
Affected Product Actix files
Package Ecosystem crates.io
Published Date
Last Updated

How to Fix GHSA-8v2v-wjwg-vx6r

To remediate this vulnerability, upgrade all affected Actix files dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.

actix-files fixed: 0.6.10
Upgrade actix-files to 0.6.10
Verify Direct and Transitive Dependencies

Run the following command in your project directory to verify that all resolved dependencies use the patched release:

inspect dependencies for actix-files

How to Check if You Are Affected

To determine whether your application is affected by GHSA-8v2v-wjwg-vx6r, inspect your project dependencies for Actix files:

inspect dependencies for actix-files

Analyze the terminal output to locate any version of Actix files in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 0.6.10), your application is affected.

Note: Verify declared build manifests and deployed runtime container environments.

Technical Details

Vulnerability Mechanism & Technical Analysis

This vulnerability is classified under CWE-200: Exposure of Sensitive Information to an Unauthorized Actor, where the product exposes sensitive information to an actor that is not explicitly authorized to have access to that information. In Actix files, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.

Source Advisory Statement

### Summary When passing a non-existing folder to the `actix_files::Files::new()` method causes the actix server to expose unexpected files. ### Details The `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): ```rust pub fn new<T: Into<PathBuf>>(mount_path: &str, serve_from: T) -> Files ``` When 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. This behavior causes the library to expose unexpected files when the folder is not present. ### PoC _There is a working PoC on https://github.com/Angelmmiguel/actix-files-vuln, although the next steps can be followed to reproduce the issue_ 1. Clone the https://github.com/actix/examples repository. 2. Change your directory to the `basics/static-files` folder. 3. Edit the `src/main.rs` file and change the line 13 to mount a non-existing folder: ```diff - .service(Files::new("/images", "static/images/").show_files_listing()) + .service(Files::new("/images", "static/missing/").show_files_listing()) ``` 4. Run the project with `cargo run`. 5. Access the <http://localhost:8080/images/Cargo.toml> URL. ### Impact This is an exposure of information vulnerability. It affects anyone using the `actix-files::Files` library that mounts a non-existing folder for any reason.

GHSA-8v2v-wjwg-vx6r Affected Actix files Versions

1 component(s)
Fixed Versions:
0.6.10
Product / Package Ecosystem Affected Versions Fixed Version
actix-files
crates.io
< 0.6.10
0.6.10

References

Frequently Asked Questions

What is GHSA-8v2v-wjwg-vx6r?
GHSA-8v2v-wjwg-vx6r is a security vulnerability in Actix files involving actix-files has a possible exposure of information vulnerability under CWE-200: Exposure of Sensitive Information to an Unauthorized Actor.
Which Actix files versions are affected?
Affected versions include releases prior to 0.6.10 across affected packages: actix-files.
What version fixes GHSA-8v2v-wjwg-vx6r?
Upgrading to 0.6.10 (or the latest patched release for your respective branch) resolves the vulnerability.
Is actix-files affected?
Yes, actix-files is affected in releases prior to 0.6.10. Upgrade your dependency to 0.6.10 or later.
What CWE is associated with GHSA-8v2v-wjwg-vx6r?
GHSA-8v2v-wjwg-vx6r is classified under CWE-200: Exposure of Sensitive Information to an Unauthorized Actor (The product exposes sensitive information to an actor that is not explicitly authorized to have access to that information.).
How can I check crates.io dependencies for GHSA-8v2v-wjwg-vx6r?
Run the dependency tree command: 'inspect dependencies for actix-files'. This command lists direct and transitive dependencies in your build configuration so you can verify if a vulnerable version is resolved.
Machine-readable OSV JSON OSV v1.5 Schema
Normalized schema output
{
  "schema_version" : "1.4.0",
  "id" : "GHSA-8v2v-wjwg-vx6r",
  "modified" : "2026-02-06T18:56:20Z",
  "published" : "2026-02-06T18:56:20Z",
  "aliases" : [ ],
  "summary" : "actix-files has a possible exposure of information vulnerability",
  "details" : "### 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<T: Into<PathBuf>>(mount_path: &str, serve_from: T) -> 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 <http://localhost:8080/images/Cargo.toml> 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.",
  "severity" : [ {
    "type" : "CVSS_V4",
    "score" : "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"
  } ],
  "affected" : [ {
    "package" : {
      "ecosystem" : "crates.io",
      "name" : "actix-files"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "0"
      }, {
        "fixed" : "0.6.10"
      } ]
    } ],
    "database_specific" : {
      "last_known_affected_version_range" : "<= 0.6.9"
    }
  } ],
  "references" : [ {
    "type" : "WEB",
    "url" : "https://github.com/actix/actix-web/security/advisories/GHSA-8v2v-wjwg-vx6r"
  }, {
    "type" : "PACKAGE",
    "url" : "https://github.com/actix/actix-web"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/actix/actix-web/blob/fba766b4beb92278665d58815c94d336015225c5/actix-files/src/files.rs#L104"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/actix/actix-web/blob/fba766b4beb92278665d58815c94d336015225c5/actix-files/src/files.rs#L38"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/actix/actix-web/blob/fba766b4beb92278665d58815c94d336015225c5/actix-files/src/files.rs#L98"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/actix/actix-web/blob/fba766b4beb92278665d58815c94d336015225c5/actix-files/src/service.rs#L136"
  } ],
  "database_specific" : {
    "cwe_ids" : [ "CWE-200" ],
    "severity" : "MODERATE",
    "github_reviewed" : true,
    "github_reviewed_at" : "2026-02-06T18:56:20Z",
    "nvd_published_at" : null
  }
}