fix(deps): update rust crate salvo to 0.89.0 [security]#122
Open
renovate[bot] wants to merge 1 commit intomainfrom
Open
fix(deps): update rust crate salvo to 0.89.0 [security]#122renovate[bot] wants to merge 1 commit intomainfrom
renovate[bot] wants to merge 1 commit intomainfrom
Conversation
45f2a67 to
3ce7b01
Compare
3ce7b01 to
c9064dc
Compare
c9064dc to
c82880a
Compare
921c070 to
d7b4935
Compare
d7b4935 to
8a6a3be
Compare
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.37.9→0.89.0Salvo is vulnerable to stored XSS in the list_html function by uploading files with malicious names
CVE-2026-22257 / GHSA-54m3-5fxr-2f3j
More information
Details
Summary
The function
list_htmlgenerates a file view of a folder without sanitizing the files or folders names, potentially leading to XSS in cases where a website allows access to public files using this feature, allowing anyone to upload a file.Details
The vulnerable snippet of code is the following:
dir.rs
PoC
POC1.mp4
Here is the example app we used:
mian.rsCargo.tomlImpact
JavaScript execution, most likely leading to an account takeover, depending on the site's constraint (CSP, etc…).
Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:L/A:LReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Salvo is vulnerable to reflected XSS in the list_html function
CVE-2026-22256 / GHSA-rjf8-2wcw-f6mp
More information
Details
Summary
The function
list_htmlgenerates an file view of a folder which includes a render of the current path, in which its inserted in the HTML without proper sanitation, leading to reflected XSS. The request path is decoded and normalized in the matching stage but is not inserted raw in the HTML view (current.path). The only constraint here is for the root path (e.g., /files in the PoC example) to have a subdirectory (e. g., common ones like styles/scripts/etc.) so that the matching returns the list HTML page instead of the Not Found page.Details
The vulnerable snippet of code is the following:
dir.rs
As seen here
<title>{}</title>it is inserted unsafely.PoC
salvo_poc.mp4
Here is the example app, note this doesn’t need an upload feature (e.g to the other reported vulnerability), only the sub-folder is required.
main.rsCargo.tomlSetup commands:
Impact
JavaScript execution, most likely leading to an account takeover, depending on the site's constraint (CSP, etc…).
Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:L/A:LReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Salvo Affected by Denial of Service via Unbounded Memory Allocation in Form Data Parsing
CVE-2026-33241 / GHSA-pp9r-xg4c-8j4x
More information
Details
Summary
Salvo's form data parsing implementations (
form_data()method andExtractiblemacro) do not enforce payload size limits before reading request bodies into memory. This allows attackers to cause Out-of-Memory (OOM) conditions by sending extremely large payloads, leading to service crashes and denial of service.Details
Vulnerability Description
Three attack vectors exist in Salvo's form handling:
URL-encoded form data (
application/x-www-form-urlencoded)Request::form_data()callsBodyExt::collect(body)which reads the entire body into memory without size checkingreq.form_data().awaitdirectlyMultipart form data (
multipart/form-data)Extractible macro
#[derive(Extractible)]with#[salvo(extract(default_source(from = "body")))]internally callsform_data()Root Cause
The
FormData::read()implementation prioritizes convenience over safety by reading entire request bodies before validation. Even whenRequest::payload_with_max_size()is available, it's not automatically applied in the form parsing path.PoC
Extract data from requestexample in readme.md in docker file with limited memory say 100mb.application/x-www-form-urlencodedORmultipart/form-datapayload to the endpoint.Impact
Immediate Effects
Attack Characteristics
Real-World Scenarios
#[derive(Extractible)]with body sourcesSuggestion: Make Multipart File Upload Handling Explicit Opt-In
Problem Statement
Currently, Salvo's multipart form data parsing automatically handles file uploads without explicit developer intent. This creates several security and usability concerns:
Severity
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Release Notes
salvo-rs/salvo (salvo)
v0.89.3Compare Source
What's Changed
Full Changelog: salvo-rs/salvo@v0.89.2...v0.89.3
v0.89.2Compare Source
What's Changed
New Contributors
Full Changelog: salvo-rs/salvo@v0.89.1...v0.89.2
v0.89.1Compare Source
What's Changed
Full Changelog: salvo-rs/salvo@v0.89.0...v0.89.1
v0.89.0Compare Source
What's Changed
IpAddrasRemoteIpIssuer::Keyby @Paraworker in #1283New Contributors
Full Changelog: salvo-rs/salvo@v0.88.1...v0.89.0
v0.88.1Compare Source
What's Changed
Full Changelog: salvo-rs/salvo@v0.88.0...v0.88.1
v0.88.0Compare Source
What's Changed
use_etag(false)is called inNamedFileBuilderby @cnlancehu in #1265Full Changelog: salvo-rs/salvo@v0.87.1...v0.88.0
v0.87.1Compare Source
What's Changed
Full Changelog: salvo-rs/salvo@v0.87.0...v0.87.1
v0.87.0Compare Source
What's Changed
swagger-uito v5.31.0 by @tyreseluo in #1254New Contributors
Full Changelog: salvo-rs/salvo@v0.86.0...v0.87.0
v0.86.0Compare Source
What's Changed
SALVO_STATUS_ERRORto control default error page by @chrislearn in #1240New Contributors
Full Changelog: salvo-rs/salvo@v0.85.0...v0.86.0
v0.85.0Compare Source
What's Changed
New Contributors
Full Changelog: salvo-rs/salvo@v0.84.2...v0.85.0
v0.84.2Compare Source
What's Changed
Full Changelog: salvo-rs/salvo@v0.84.1...v0.84.2
v0.84.1Compare Source
What's Changed
NamedFileand embed file detect text content type by @chrislearn in #1210Full Changelog: salvo-rs/salvo@v0.84.0...v0.84.1
v0.84.0Compare Source
What's Changed
Cors::allow_private_networkby @chrislearn in #1194Full Changelog: salvo-rs/salvo@v0.83.0...v0.84.0
v0.83.0Compare Source
What's Changed
Full Changelog: salvo-rs/salvo@v0.82.0...v0.83.0
v0.82.0Compare Source
What's Changed
into_boxedfunction to acceptors and add DynTcpAcceptors by @chrislearn in #1180Cargo.tomlby @chrislearn in #1184New Contributors
Full Changelog: salvo-rs/salvo@v0.81.0...v0.82.0
v0.81.0Compare Source
What's Changed
unix-sock-clientto the full futures for salvo-proxy by @18o in #1160Full Changelog: salvo-rs/salvo@v0.80.0...v0.81.0
v0.80.0Compare Source
What's Changed
salvo-captcharepository URL by @TheAwiteb in #1151New Contributors
Full Changelog: salvo-rs/salvo@v0.79.0...v0.80.0
v0.79.0Compare Source
What's Changed
New Contributors
Full Changelog: salvo-rs/salvo@v0.78.0...v0.79.0
v0.78.0Compare Source
What's Changed
New Contributors
Full Changelog: salvo-rs/salvo@v0.77.1...v0.78.0
v0.77.1Compare Source
What's Changed
Full Changelog: salvo-rs/salvo@v0.77.0...v0.77.1
v0.77.0Compare Source
What's Changed
server::ServerHandle::stop_gracefulby @YBoy-git in #1049opentelemetry-prometheusto 0.28 by @chrislearn in #1064New Contributors
Full Changelog: salvo-rs/salvo@v0.76.2...v0.77.0
v0.76.2Compare Source
What's Changed
salvo-proxyby @markcda in #1045New Contributors
Full Changelog: salvo-rs/salvo@v0.76.1...v0.76.2
v0.76.1Compare Source
What's Changed
New Contributors
Full Changelog: <https://github.com/salvo
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR is behind base branch, 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.