Podatność w narzędziu Spin (platforma do budowania aplikacji serverless na WebAssembly) umożliwia atakującemu wymuszenie na aplikacji wykonania żądań do dowolnych hostów poprzez manipulację nagłówkiem HTTP `Host`. Dotyczy wersji wcześniejszych niż 2.4.3 i może prowadzić do poważnego naruszenia poufności oraz integralności danych.
▸ Pokaż oryginał (EN)
Spin is the developer tool for building and running serverless applications powered by WebAssembly. Prior to 2.4.3, some specifically configured Spin applications that use `self` requests without a specified URL authority can be induced to make requests to arbitrary hosts via the `Host` HTTP header. The following conditions need to be met for an application to be vulnerable: 1. The environment Spin is deployed in routes requests to the Spin runtime based on the request URL instead of the `Host` header, and leaves the `Host` header set to its original value; 2. The Spin application's component handling the incoming request is configured with an `allow_outbound_hosts` list containing `"self"`; and 3. In reaction to an incoming request, the component makes an outbound request whose URL doesn't include the hostname/port. Spin 2.4.3 has been released to fix this issue.
Podatność typu SSRF (Server-Side Request Forgery) występuje, gdy spełnione są łącznie trzy warunki: środowisko wdrożeniowe kieruje ruch do Spin na podstawie URL żądania (nie nagłówka `Host`), pozostawiając oryginalną wartość nagłówka `Host` bez zmian; komponent aplikacji Spin obsługujący żądanie przychodzące ma skonfigurowaną listę `allow_outbound_hosts` zawierającą wartość `"self"`; oraz w reakcji na żądanie przychodzące komponent wykonuje żądanie wychodzące bez jawnie podanej nazwy hosta lub portu w URL. W takim przypadku Spin używa wartości nagłówka `Host` do skonstruowania żądania wychodzącego, co pozwala atakującemu wskazać dowolny host poprzez manipulację tym nagłówkiem.
Atakujący może skłonić aplikację Spin do wysyłania żądań HTTP do dowolnych, nieautoryzowanych hostów, co może skutkować nieuprawnionym dostępem do wewnętrznych zasobów sieciowych, wyciekiem poufnych danych lub modyfikacją danych poprzez interakcję z niezamierzonymi usługami.
Należy zaktualizować Spin do wersji 2.4.3 lub nowszej, w której problem został naprawiony. Poprawka dostępna jest w repozytorium projektu (commit b3db535c9edb72278d4db3a201f0ed214e561354). Dodatkowo warto zweryfikować konfigurację `allow_outbound_hosts` w komponentach aplikacji oraz upewnić się, że żądania wychodzące zawsze mają jawnie podany hostname i port w URL.
Narzędzie Spin w wersjach wcześniejszych niż 2.4.3, przy czym podatność ujawnia się wyłącznie w specyficznie skonfigurowanych aplikacjach spełniających opisane warunki środowiskowe i konfiguracyjne.
Podatność została zgłoszona i naprawiona przez zespół Fermyon (twórców Spin). Szczegóły dostępne w security advisory GHSA-f3h7-gpjj-wcvh w repozytorium GitHub projektu.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:N