GHSA-gcqf-3g44-vc9p: Actix files [actix-files] Panic Triggered By Empty Vulnerability
MODERATEGHSA-gcqf-3g44-vc9p is a MODERATE [actix-files] panic triggered by empty vulnerability (CWE-20: Improper Input Validation) affecting Actix files libraries in the crates.io ecosystem. The issue involves [actix-files] panic triggered by empty range header in get request for static file. Remediation is available by upgrading affected packages to version 0.6.10.
GHSA-gcqf-3g44-vc9p at a Glance
How to Fix GHSA-gcqf-3g44-vc9p
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.
Upgrade actix-files to 0.6.10
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-gcqf-3g44-vc9p, 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-20: Improper Input Validation, where the product receives input or data, but it does not validate or incorrectly validates that the input has the properties that are required to process the data safely and correctly. 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
GHSA-gcqf-3g44-vc9p Affected Actix files Versions
1 component(s)| Product / Package | Ecosystem | Affected Versions | Fixed Version |
|---|---|---|---|
|
actix-files
|
crates.io |
< 0.6.10
|
0.6.10
|
References
Frequently Asked Questions
What is GHSA-gcqf-3g44-vc9p?
Which Actix files versions are affected?
What version fixes GHSA-gcqf-3g44-vc9p?
Is actix-files affected?
What CWE is associated with GHSA-gcqf-3g44-vc9p?
How can I check crates.io dependencies for GHSA-gcqf-3g44-vc9p?
Machine-readable OSV JSON
OSV v1.5 Schema
{
"schema_version" : "1.4.0",
"id" : "GHSA-gcqf-3g44-vc9p",
"modified" : "2026-02-06T19:00:13Z",
"published" : "2026-02-06T19:00:12Z",
"aliases" : [ ],
"summary" : "[actix-files] Panic triggered by empty Range header in GET request for static file",
"details" : "### Summary\nA GET request for a static file served by `actix-files` with an empty `Range` header triggers a panic. With `panic = \"abort\"`, a remote user may crash the process on-demand.\n\n### Details\n`actix-files` assumes that `HttpRange::parse()`, when `Ok`, always returns a vector with at least one element. When `parse()` is called on an empty string, it returns `Ok(vec![])`. This can cause a panic at named.rs:534 when handling an HTTP request with an empty `Range:` header. This shouldn't significantly impact programs built with the default `panic = \"unwind\"`, as the only effect is that the connection is closed when the worker thread panics and new threads are spooled up on demand. Programs built with `panic = \"abort\"` are vulnerable to being crashed on-demand by any user with permissions to perform a `GET` request for a static file served by `actix-files`.\nhttps://github.com/actix/actix-web/blob/0383f4bdd1210e726143ca1ebcf01169b67a4b6c/actix-files/src/named.rs#L530-L535\n\n### PoC\n<details>\n<summary>Minimal reproduction</summary>\n\n`Cargo.toml`:\n```toml\n[package]\nname = \"example\"\nversion = \"0.1.0\"\nedition = \"2021\"\n\n[dependencies]\nactix-web = \"=4.5.1\"\nactix-files = \"=0.6.5\"\n\n[profile.dev]\npanic = \"abort\"\n```\n`src/main.rs`:\n```rust\nuse actix_files::NamedFile;\nuse actix_web::{get, Responder};\n\n#[get(\"/\")]\nasync fn index() -> impl Responder {\n NamedFile::open(\"test_file\")\n}\n\n#[actix_web::main]\nasync fn main() -> std::io::Result<()> {\n use actix_web::{App, HttpServer};\n\n HttpServer::new(|| App::new().service(index))\n .bind((\"127.0.0.1\", 8080))?\n .run()\n .await\n}\n```\n`test.sh`:\n```sh\n#!/bin/bash\n\necho foo > test_file\ncargo b\ncargo r&\nsleep 1\nnc 127.0.0.1 8080 << EOF\nGET / HTTP/1.1\nRange:\n\nEOF\nkill %1\n```\n\nCreate these files, then run `chmod +x test.sh && ./test.sh`. The server should start, then crash upon receiving the `GET` request from `netcat`.\n\nThis assumes a reasonably UNIX-like system with Rust, `bash` and `netcat` installed.\n</details>\n\n### Impact\nIt is believed that only programs compiled with panic = \"abort\" are affected significantly. The only potential impact that can be seen is Denial of Service, though an attacker able to repeatedly send GET requests without those requests getting blocked by rate limiting, DDoS protection, etc. would be able to keep a server down indefinitely. As only a single unblocked request is needed to trigger the panic, merely having a rate limiter may not be enough to prevent this.\n\nThough the impact in the worst case is significant, the real-world risk of this vulnerability appears to be limited, as it would be expected that anyone for whom uptime is a significant concern would not compile their program with panic = \"abort\".",
"severity" : [ {
"type" : "CVSS_V4",
"score" : "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/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-gcqf-3g44-vc9p"
}, {
"type" : "PACKAGE",
"url" : "https://github.com/actix/actix-web"
}, {
"type" : "WEB",
"url" : "https://github.com/actix/actix-web/blob/0383f4bdd1210e726143ca1ebcf01169b67a4b6c/actix-files/src/named.rs#L530-L535"
} ],
"database_specific" : {
"cwe_ids" : [ "CWE-20" ],
"severity" : "MODERATE",
"github_reviewed" : true,
"github_reviewed_at" : "2026-02-06T19:00:12Z",
"nvd_published_at" : null
}
}