Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book
Ruby on Rails – możliwość odczytywania plików z serwera (CVE-2019-5418) oraz DoS. Łatajcie
W skrócie chodzi o użycie takiego 'niewinnego’ kodu:
render file: "#{Rails.root}/some/file"
Specially crafted accept headers in combination with calls to `render file:` can cause arbitrary files on the target server to be rendered, disclosing the
file contents. The impact is limited to calls to `render` which render file contents without a specified accept format.
Bardziej szczegółowy opis znajdziemy w tym miejscu, gdzie pokazana jest gotowa do przetestowania w boju prost aplikacja:
class ChybetaController < ApplicationController def index render file: "#{Rails.root}/some/file" end end
Jak wykorzystać podatność? Wystarczy użyć odpowiedniego nagłówka żądania HTTP: Accept (określającego normalnie jakiego formatu danych spodziewamy się w odpowiedzi HTTP)
Podatność załatano w następujących wersjach Ruby on Rails: 4.2.11.1, 5.0.7.2, 5.1.6.2, 5.2.2.1, 6.0.0.beta3
Jako bonus załatano też podatność klasy DoS (która podobnie może być wykorzystana poprzez spreparowanie odpowiednich nagłówków żądania HTTP):
Specially crafted accept headers can cause the Action View template location code to consume 100% CPU, causing the server unable to process requests. This impacts all Rails applications that render views.
–ms