chore(deps): update rust crate actix-files to v0.6.10 [security]#292
Merged
DanielleHuisman merged 1 commit intomainfrom Feb 6, 2026
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
0.6.9→0.6.10GitHub Vulnerability Alerts
GHSA-8v2v-wjwg-vx6r
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-fileslibrary exposes aFilesstruct that configures an actixserviceto serve the files in a folder as static assets. Below you can find the signature of theFiles::newmethod:When the
mount_pathyou pass toFilesdoesn't exist, it defaults to an empty path (Path::new()). When the service receives a HTTP request, it joins the request information with the empty path and callscanonicalize. 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
Clone the https://github.com/actix/examples repository.
Change your directory to the
basics/static-filesfolder.Edit the
src/main.rsfile and change the line 13 to mount a non-existing folder:Run the project with
cargo run.Access the http://localhost:8080/images/Cargo.toml URL.
Impact
This is an exposure of information vulnerability. It affects anyone using the
actix-files::Fileslibrary that mounts a non-existing folder for any reason.GHSA-gcqf-3g44-vc9p
Summary
A GET request for a static file served by
actix-fileswith an emptyRangeheader triggers a panic. Withpanic = "abort", a remote user may crash the process on-demand.Details
actix-filesassumes thatHttpRange::parse(), whenOk, always returns a vector with at least one element. Whenparse()is called on an empty string, it returnsOk(vec![]). This can cause a panic at named.rs:534 when handling an HTTP request with an emptyRange:header. This shouldn't significantly impact programs built with the defaultpanic = "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 withpanic = "abort"are vulnerable to being crashed on-demand by any user with permissions to perform aGETrequest for a static file served byactix-files.https://github.com/actix/actix-web/blob/0383f4bdd1210e726143ca1ebcf01169b67a4b6c/actix-files/src/named.rs#L530-L535
PoC
Minimal reproduction
Cargo.toml:src/main.rs:test.sh:Create these files, then run
chmod +x test.sh && ./test.sh. The server should start, then crash upon receiving theGETrequest fromnetcat.This assumes a reasonably UNIX-like system with Rust,
bashandnetcatinstalled.Impact
It 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.
Though 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".
Release Notes
actix/actix-web (actix-files)
v0.6.10: Actix web 0.6.10Compare Source
Changes
Added
Allow to use path without traling slashes for scope registration #241
Allow to set encoding for exact NamedFile #239
Fixed
TestServer::post()actually sendsGETrequest #240Configuration
📅 Schedule: Branch creation - "" (UTC), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.