Hlavní navigace

Git má vážnou chybu, zlomyslný repozitář může klienta napadnout

Ondřej Caletka

Vývojáři Gitu varují před bezpečnostní chybou, která ohrožuje uživatele. Při klonování zlomyslného repozitáře se uživateli může stáhnout a spustit útočný kód. Už byly vydány opravné verze, záplatujte.

Doba čtení: 2 minuty

Systém správy verzí Git vyšel v několika opravných verzích: 2.17.1, 2.13.7, 2.14.4, 2.15.2 a 2.16.4. Přesvědčte se, že máte nainstalovanou některou z těchto verzí. Ty předchozí totiž trpí vážnými zranitelnostmi, které ohrožují uživatele. Debian už například opravu také zveřejnil.

Spuštění škodlivého kódu z repozitáře

Chyba s označením CVE-2018–11235 je považována za nebezpečnější a dovoluje vytvořit zlomyslný repozitář, který obsahuje submodul pro Git. Chyba ve zpracování repozitářů však umožňuje, aby byl tento modul po stažení potichu spuštěn. To umožňuje útočníkovi dostat do systému vlastní kód, pokud uživatel klonuje repozitář pomocí

$ git clone --recurse-submodules

Repozitáře submodulů jsou uloženy v adresáři se jménem submodulu v podadresáři .git/modules  rodičovského repozitáře. Název repozitáře je uložen v běžném souboru .gitmodules, který je součástí rodičovského repozitáře. Chyba umožňuje, aby součástí názvu submodulu byla i cesta, která ovšem může vést i mimo tuto strukturu, pokud bude obsahovat například dvě tečky (nadřazený adresář).

Útočník může vytvořit rodičovský repozitář, který v sobě obsahuje další repozitář s vlastní strukturou. Tento vnořený repozitář je pak použit jako submodul v tom rodičovském. Pomocí triku s názvem repozitáře v konfiguračním souboru jej přesune mimo chráněný podadresář .git mezi běžné soubory rodičovského repozitáře.

Jakmile uživatel rekurzivně tyto repozitáře stáhne, začne se Git shánět po submodulech a jejich umístění. Běžně se během klonování z bezpečnostních důvodů neklonují některé soubory jako .git/config nebo .git/hooks/*, kde jsou uloženy skripty spouštěné při určitých událostech. Je-li však repozitář submodulu umístěn mimo adresář .git, lze tuto bezpečnostní funkci obejít a do repozitáře přidat například skript s názvem post-checkout, který se spustí ihned po klonování.

Provozovatelé repozitářů (Microsoft, GitLab, GitHub a další) už nasadili vlastní opatření na straně serveru, které by mělo zamezit vytváření takto nedovoleně propojených repozitářů. Přesto jsou uživatelé vyzýváni k instalaci opravených verzí Gitu. Objevitel problému, Etienne Stalmans, na svém blogu publikoval postup kontroly zranitelnosti vaší instalace Gitu – projde-li následující sekvence příkazů bez chyby, pak je vaše verze zranitelná:

git init test && \
  cd test && \
  git update-index --add --cacheinfo 120000,e69de29bb2d1d6434b8b29ae775ad8c2e48c5391,.gitmodules

NTFS umožňuje vyčítat paměť

Druhá chyba s označením CVE-2018–11233 je považována za méně nebezpečnou a spočívá v chybném zpracování cest na souborovém systému NTFS. Umožňuje útočníkovi vyčítat v systému libovolný kus paměti. Microsoft rozhodně doporučuje aktualizovat Git pro Windows, pokud jej na této platformě používáte.

Našli jste v článku chybu?