GHSA-3227-r97m-8j95 json
Relative Path Traversal in afire serve_static
published 4y ago modified 4y ago
- cvss
- —
- not scored
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- —
- no score, EPSS covers CVEs only
- public exploits
- 0
- none known
Summary
### Impact This vulnerability effects the built-in afire serve_static extension allowing paths containing `//....` to bypass the previous path sanitation and request files in higher directories that should not be accessible.
### Patches The issue has been fixed in [afire 1.1.0](https://crates.io/crates/afire/1.1.0). If you can, just update to the newest version of afire.
### Workarounds If you can't update afire you can simply disallow paths containing `/..` with the following middleware. Make sure this is the last middleware added to the server so it runs first, stopping the bad requests. ```rust use afire::prelude::*;
struct PathTraversalFix;
impl Middleware for PathTraversalFix { fn pre(&self, req: Request) -> MiddleRequest { if req.path.replace("\\", "/").contains("/..") { return MiddleRequest::Send( Response::new() .status(400) .text("Paths containing `..` are not allowed"), ); }
MiddleRequest::Continue } } ``` ```rust let mut server = Server::new(host, port); PathTraversalFix.attach(&mut server); ```
### References You can read about the new changes to afire in 1.1.0 [here](https://connorcode.com/writing/afire/update-3)
### For more information If you have any questions or comments about this advisory you can email me or message me on discord. [[https://connorcode.com/contact](https://connorcode.com/contact)]
Patch / fix
- crates.io afire 1.1.0
Is GHSA-3227-r97m-8j95 in your dependencies? Fencer shows which of your repositories are affected as soon as an advisory lands, and opens the fix as a pull request.
Check with FencerAffected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| crates.io | afire | >=0.2.1, <1.1.0 |
1.1.0 |
Classification
References
Sources
- GitHub Advisory GHSA-3227-r97m-8j95
Fencer Intel keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.