Update dependency RestSharp to v112 [SECURITY]#98
Open
renovate[bot] wants to merge 1 commit into
Open
Conversation
39d4f5a to
1d27492
Compare
1d27492 to
dc5865b
Compare
dc5865b to
bc0b7b2
Compare
bc0b7b2 to
8f2bb15
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:
108.0.3→112.0.0CRLF Injection in RestSharp's
RestRequest.AddHeadermethodCVE-2024-45302 / GHSA-4rr6-2v9v-wcpc
More information
Details
Summary
The second argument to
RestRequest.AddHeader(the header value) is vulnerable to CRLF injection. The same applies toRestRequest.AddOrUpdateHeaderandRestClient.AddDefaultHeader.Details
The way HTTP headers are added to a request is via the
HttpHeaders.TryAddWithoutValidationmethod: https://github.com/restsharp/RestSharp/blob/777bf194ec2d14271e7807cc704e73ec18fcaf7e/src/RestSharp/Request/HttpRequestMessageExtensions.cs#L32 This method does not check for CRLF characters in the header value.This means that any headers from a
RestSharp.RequestHeadersobject are added to the request in such a way that they are vulnerable to CRLF-injection. In general, CRLF-injection into a HTTP header (when using HTTP/1.1) means that one can inject additional HTTP headers or smuggle whole HTTP requests.PoC
The below example code creates a console app that takes one command line variable "api key" and then makes a request to some status page with the provided key inserted in the "Authorization" header:
This application is now vulnerable to CRLF-injection, and can thus be abused to for example perform request splitting and thus server side request forgery (SSRF):
The application intends to send a single request of the form:
But as the application is vulnerable to CRLF injection the above command will instead result in the following two requests being sent:
and
This can be confirmed by checking the access logs on the server where these commands were run (with
insert.some.site.herepointing to localhost):Impact
If an application using the RestSharp library passes a user-controllable value through to a header, then that application becomes vulnerable to CRLF-injection. This is not necessarily a security issue for a command line application like the one above, but if such code were present in a web application then it becomes vulnerable to request splitting (as shown in the PoC) and thus Server Side Request Forgery.
Strictly speaking this is a potential vulnerability in applications using RestSharp, not in RestSharp itself, but I would argue that at the very least there needs to be a warning about this behaviour in the RestSharp documentation.
Severity
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:N/VA:H/SC:N/SI:N/SA:N/E:PReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Release Notes
restsharp/RestSharp (RestSharp)
v112.0.0Compare Source
What's Changed
New Contributors
Full Changelog: restsharp/RestSharp@111.4.1...112.0.0
v111.4.1Compare Source
What's Changed
New Contributors
Full Changelog: restsharp/RestSharp@111.4.0...111.4.1
v111.4.0Compare Source
What's Changed
New Contributors
Full Changelog: restsharp/RestSharp@111.3.0...111.4.0
v111.3.0Compare Source
What's Changed
New Contributors
Full Changelog: restsharp/RestSharp@111.2.0...111.3.0
v111.2.0Compare Source
What's Changed
Execute(request)without methodFull Changelog: restsharp/RestSharp@111.1.0...111.2.0
v111.1.0Compare Source
v111.0.0Compare Source
What's Changed
New Contributors
Full Changelog: restsharp/RestSharp@110.2.0...111.0.0
v110.2.0Compare Source
What's Changed
Full Changelog: restsharp/RestSharp@110.1.0...110.2.0
v110.1.0Compare Source
What's Changed
AddJsonBodyoverload to serialise top-level string by @alexeyzimarev in #2043Full Changelog: restsharp/RestSharp@110.0.0...110.1.0
v110.0.0Compare Source
What's Changed
Breaking change
The
IRestClientinterface signature is different, so any non-standard implementations need to adopt the changes.To keep
DefaultParametersthread-safe, it got a new typeDefaultParameters, and request propertyParametershas a dedicated typeRequestParameter. Code-wise the change is non-breaking as the signatures are the same, but v110 is not binary compatible with previous versions. The difference is thatDefaultParameterscollection wraps all its mutations in a lock.Full Changelog: restsharp/RestSharp@109.0.1...110.0.0
v109.0.1Compare Source
What's Changed
HttpClient. by @tacosontitan in #2008New Contributors
Full Changelog: restsharp/RestSharp@109.0.0...109.0.1
v109.0.0What's Changed
JwtAuthenticatorwith token includes Bearer prefix by @nivmeshorer in #1949CsvConfigurationwhen reading by @electrokit in #1965RequestMessageby @adegwerth in #1989RestRequestExtension.csby @ztl8702 in #1986IRestClientinterfaceOptionsproperty is using read-only options class, so it won't be possible to re-assign options that configure HTTP client and message handlerNew Contributors
Full Changelog: restsharp/RestSharp@108.0.3...109.0.0
Configuration
📅 Schedule: (UTC)
🚦 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.