[Security] Bump puma from 3.11.3 to 4.3.8 by dependabot-preview[bot] · Pull Request #70 · lyuich/sample-rails-ruby
Sourced from The GitHub Security Advisory Database.
Moderate severity vulnerability that affects puma
Keepalive thread overload/DoS
Impact
A poorly-behaved client could use keepalive requests to monopolize Puma's reactor and create a denial of service attack.
If more keepalive connections to Puma are opened than there are threads available, additional connections will wait permanently if the attacker sends requests frequently enough.
Patches
This vulnerability is patched in Puma 4.3.1 and 3.12.2.
Workarounds
Reverse proxies in front of Puma could be configured to always allow less than X keepalive connections to a Puma cluster or process, where X is the number of threads configured in Puma's thread pool.
For more information
If you have any questions or comments about this advisory:
... (truncated)
Affected versions: < 3.12.2
Sourced from The Ruby Advisory Database.
Keepalive thread overload/DoS in puma A poorly-behaved client could use keepalive requests to monopolize Puma's reactor and create a denial of service attack.
If more keepalive connections to Puma are opened than there are threads available, additional connections will wait permanently if the attacker sends requests frequently enough.
Patched versions: ~> 3.12.2; >= 4.3.1 Unaffected versions: none
Sourced from The GitHub Security Advisory Database.
Moderate severity vulnerability that affects puma In Puma (RubyGem) before 4.3.2 and 3.12.2, if an application using Puma allows untrusted input in a response header, an attacker can use newline characters (i.e.
CR,LFor/r,/n) to end the header and inject malicious content, such as additional headers or an entirely new response body. This vulnerability is known as HTTP Response Splitting.While not an attack in itself, response splitting is a vector for several other attacks, such as cross-site scripting (XSS).
This is related to CVE-2019-16254, which fixed this vulnerability for the WEBrick Ruby web server.
This has been fixed in versions 4.3.2 and 3.12.3 by checking all headers for line endings and rejecting headers with those characters.
Affected versions: < 3.12.3
Sourced from The Ruby Advisory Database.
HTTP Response Splitting vulnerability in puma If an application using Puma allows untrusted input in a response header, an attacker can use newline characters (i.e. CR, LF) to end the header and inject malicious content, such as additional headers or an entirely new response body. This vulnerability is known as HTTP Response Splitting.
While not an attack in itself, response splitting is a vector for several other attacks, such as cross-site scripting (XSS).
Patched versions: ~> 3.12.4; >= 4.3.3 Unaffected versions: none
Sourced from The GitHub Security Advisory Database.
Moderate severity vulnerability that affects puma
Impact
If an application using Puma allows untrusted input in an early-hints header, an attacker can use a carriage return character to end the header and inject malicious content, such as additional headers or an entirely new response body. This vulnerability is known as HTTP Response Splitting
While not an attack in itself, response splitting is a vector for several other attacks, such as cross-site scripting (XSS).
This is related to CVE-2020-5247, which fixed this vulnerability but only for regular responses.
Patches
This has been fixed in 4.3.3 and 3.12.4.
Workarounds
Users can not allow untrusted/user input in the Early Hints response header.
For more information
If you have any questions or comments about this advisory:
- Open an issue in puma
- Email us a project maintainer. Email addresses are listed in our Code of Conduct.
Affected versions: < 3.12.4
Sourced from The GitHub Security Advisory Database.
HTTP Smuggling via Transfer-Encoding Header in Puma
Impact
This is a similar but different vulnerability to the one patched in 3.12.5 and 4.3.4.
A client could smuggle a request through a proxy, causing the proxy to send a response back to another unknown client.
If the proxy uses persistent connections and the client adds another request in via HTTP pipelining, the proxy may mistake it as the first request's body. Puma, however, would see it as two requests, and when processing the second request, send back a response that the proxy does not expect. If the proxy has reused the persistent connection to Puma to send another request for a different client, the second response from the first client will be sent to the second client.
Patches
The problem has been fixed in Puma 3.12.6 and Puma 4.3.5.
For more information
If you have any questions or comments about this advisory:
- Open an issue in Puma
- See our security policy
Affected versions: < 3.12.6
Sourced from The GitHub Security Advisory Database.
HTTP Smuggling via Transfer-Encoding Header in Puma
Impact
By using an invalid transfer-encoding header, an attacker could smuggle an HTTP response.
Originally reported by
@ZeddYu, who has our thanks for the detailed report.Patches
The problem has been fixed in Puma 3.12.5 and Puma 4.3.4.
For more information
If you have any questions or comments about this advisory:
- Open an issue in Puma
- See our security policy
Affected versions: < 3.12.5
Sourced from The Ruby Advisory Database.
HTTP Smuggling via Transfer-Encoding Header in Puma
Impact
By using an invalid transfer-encoding header, an attacker could smuggle an HTTP response.
Patches
The problem has been fixed in Puma 3.12.5 and Puma 4.3.4.
Patched versions: ~> 3.12.5; >= 4.3.4 Unaffected versions: none
Sourced from The Ruby Advisory Database.
HTTP Smuggling via Transfer-Encoding Header in Puma
Impact
This is a similar but different vulnerability to the one patched in 3.12.5 and 4.3.4.
A client could smuggle a request through a proxy, causing the proxy to send a response back to another unknown client.
If the proxy uses persistent connections and the client adds another request in via HTTP pipelining, the proxy may mistake it as the first request's body. Puma, however, would see it as two requests, and when processing the second request, send back a response that the proxy does not expect. If the proxy has reused the persistent connection to Puma to send another request for a different client, the second response from the first client will be sent to the second client.
Patches
The problem has been fixed in Puma 3.12.6 and Puma 4.3.5.
Patched versions: ~> 3.12.6; >= 4.3.5 Unaffected versions: none
Sourced from The Ruby Advisory Database.
HTTP Response Splitting (Early Hints) in Puma
Impact
If an application using Puma allows untrusted input in an early-hints header, an attacker can use a carriage return character to end the header and inject malicious content, such as additional headers or an entirely new response body. This vulnerability is known as HTTP Response Splitting
While not an attack in itself, response splitting is a vector for several other attacks, such as cross-site scripting (XSS).
This is related to CVE-2020-5247, which fixed this vulnerability but only for regular responses.
Patches
This has been fixed in 4.3.3 and 3.12.4.
Workarounds
Users can not allow untrusted/user input in the Early Hints response header.
Patched versions: ~> 3.12.4; >= 4.3.3 Unaffected versions: none
Sourced from The Ruby Advisory Database.
HTTP Response Splitting vulnerability in puma If an application using Puma allows untrusted input in a response header, an attacker can use newline characters (i.e. CR, LF) to end the header and inject malicious content, such as additional headers or an entirely new response body. This vulnerability is known as HTTP Response Splitting.
While not an attack in itself, response splitting is a vector for several other attacks, such as cross-site scripting (XSS).
Patched versions: ~> 3.12.4; >= 4.3.3 Unaffected versions: none
Sourced from The GitHub Security Advisory Database.
Keepalive Connections Causing Denial Of Service in puma This vulnerability is related to CVE-2019-16770.
Impact
The fix for CVE-2019-16770 was incomplete. The original fix only protected existing connections that had already been accepted from having their requests starved by greedy persistent-connections saturating all threads in the same process. However, new connections may still be starved by greedy persistent-connections saturating all threads in all processes in the cluster.
A
pumaserver which received more concurrentkeep-aliveconnections than the server had threads in its threadpool would service only a subset of connections, denying service to the unserved connections.Patches
This problem has been fixed in
puma4.3.8 and 5.3.1.Workarounds
Setting
queue_requests falsealso fixes the issue. This is not advised when usingpumawithout a reverse proxy, such asnginxorapache, because you will open yourself to slow client attacks (e.g. slowloris).The fix is very small. A git patch is available here for those using unsupported versions of Puma.
For more information
... (truncated)
Affected versions: <= 4.3.7
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.