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.