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

16 marca 2019, 10:16 | W biegu | 0 komentarzy

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)

Content-Type

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

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

Odpowiedz