aktualizacje poprawek systemu zarządzania kodem źródłowym Git 2.26.1, 2.25.3, 2.24.2, 2.23.2, 2.22.3, 2.21.2, 2.20.3, 2.19.4, 2.18.3 i 2.17.4, w których usunięto () w obsłudze „«, co prowadzi do przesyłania danych uwierzytelniających do niewłaściwego hosta, gdy klient git łączy się z repozytorium za pomocą specjalnie uformowanego URL, zawierającego znak nowej linii. Wykorzystanie tej podatności może umożliwić przesyłanie danych uwierzytelniających z innego hosta na serwer kontrolowany przez atakującego.
Podczas podawania adresu URL w formacie „https://evil.com?host=github.com/” handler danych uwierzytelniających podczas łączenia z hostem evil.com przekaże parametry uwierzytelniania przypisane do github.com. Problem objawia się podczas wykonywania takich operacji, jak „git clone”, w tym podczas przetwarzania adresów URL dla submodułów (na przykład podczas wykonywania „git submodule update” automatycznie przetworzone zostaną adresy URL określone w pliku .gitmodules z repozytorium). Największe zagrożenie, jakie stanowi ta podatność, występuje w sytuacjach, gdy programista klonuje repozytorium, nie widząc adresu URL, na przykład podczas pracy z submodułami, lub w systemach wykonujących automatyczne działania, na przykład w skryptach budowania pakietów.
Aby zablokować podatność w nowych wersjach przesyłanie znaku nowej linii w jakichkolwiek wartościach przesyłanych przez protokół wymiany danych uwierzytelniających. Aby śledzić wydanie aktualizacji pakietów dla dystrybucji, można odwiedzić strony , , , , , , .
Jako tymczasowe rozwiązanie problemu nie używaj credential.helper podczas dostępu do publicznych repozytoriów i nie stosuj „git clone” w trybie „—recurse-submodules” z niezweryfikowanymi repozytoriami. Aby całkowicie wyłączyć obsługę credential.helper, która wykonuje i pobieranie haseł z , zabezpieczonego lub z pliku z hasłami, można użyć poleceń:
git config —unset credential.helper
git config —global —unset credential.helper
git config —system —unset credential.helper
Źródło: opennet.ru
